2013-07-02 30 views
2

我们有一个服务器应用程序和两个独立的客户端应用程序(两个具有不同的功能 - 一个用于前台,另一个用于后台)。一切都是用Java编写的。从另一个Java程序触发功能

我们现在需要的是: 如果两个应用程序都在运行 - 单击一个应用程序中的按钮 - >检查其他应用程序是否已打开并触发某些功能(显示消息,打开框架)应用程序

如果其他应用程序未打开 - >它应该显示一条消息说。

任何人都可以指出我在正确的方向来实现这一目标。我可以给出的最好的现实生活中的例子是:如何点击Web浏览器中的iTunes链接打开iTunes应用程序(如果已安装)以及相关的应用商店页面。

编辑:我们的应用程序根本不处理网站。一切都使用Swing。

+0

IMO你需要......就像简单的服务器客户端应用程序。这意味着您必须编辑第一个应用程序才能通过网络将数据发送到第二个应用程序,并且您还必须编辑第二个应用程序以捕捉和解析来自网络的数据。 – Jakolcz

+0

这可能会帮助你http://docs.oracle.com/javase/tutorial/networking/sockets/ – Tala

+0

很大程度上取决于服务器能够做什么。假设你想从一台PC发送消息到服务器,然后到下一个。这需要1-每台PC可以向服务器注册。 2-每台PC都有某种回调机制,可以让服务器发送消息回到客户端。 3-服务器能够提供连接的客户端列表。所有这一切都取决于你如何与服务器通信 – MadProgrammer

回答

5

实现应用程序间通信没有“最佳”方式,但有很多方法;最好的一个将是最适合你的环境中的一个:网络环境,防火墙,呼叫次数,同步和一步,等...

通信通常采用两种实现:

  • 远程过程调用:一个应用程序基本上调用另一个应用程序的函数/方法并传递参数。 RPC通常是同步的:响应在同一通信/事务中发送
  • 消息:应用程序将消息发送到其他应用程序,可能会与其他消息一起回复。消息通常是异步的。 两者之间的边界可能与REST等一些协议相当模糊。

在Java领域,通常使用实现

  • RPC任

    • RMI:爪哇唯一的解决办法;易于实施;不太喜欢firwalls。
    • SOAP Web services:不是以Java为中心的;很难实施;充满了陷阱;网络友好。
  • 消息可以使用实现

    • JMS:Java的唯一;相当容易实现但是异步;在高负载下非常强大
    • JSON/XML HTTP/s消息:这里有很多协议,从最安全的AS2到RNIF,普通的XML/Json POST等等......这些是网络和语言不可知的,但总是需要一些工作执行。

的混合方法是REST这已成为非常流行由于易于实现和网络友好性的好处,但有没有很正式的缺点。这是一种技术而不是规范。我会看看JAX-RS以及像RestletJersey这样的框架来帮助您入门。

(编辑) 我特意没有提到用Java套接字开发自己的。 IO根据定义是不纯的并且通常是多线程的:IO很难正确。如果你真的坚持走下去,至少应该使用像Apache Mina或Netty这样的合适框架。

+0

我喜欢这个答案中提出的多方法。根据功能需要,您也可以添加JMX。我们将它用于监控项目,性能管理,有限功能触发(启动/停止组件...) – Grimmy

+0

感谢您对BGR的详细响应。我们实际上已经在使用JMS(activeMQ)将更新从服务器传递到客户端。猜猜现有的基础架构可以被重用来通过JMS在客户端之间传递消息。 –