来自另一个java程序的触发器函数

来自另一个java程序的触发器函数,java,swing,Java,Swing,我们有一个服务器应用程序和两个独立的客户端应用程序(都有不同的功能——一个用于前台,另一个用于后台)。一切都是用Java编写的 我们现在需要的是: 如果两个应用程序都在运行-单击一个应用程序中的按钮->检查另一个应用程序是否已打开并触发该应用程序上的某些功能(显示消息、打开框架) 如果另一个应用程序没有打开->它应该会显示这样一条消息 谁能给我指出实现这一目标的正确方向。我能给出的最好的现实例子是:在web浏览器中单击itunes链接如何打开itunes应用程序(如果已安装)以及相关的appst

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

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

如果另一个应用程序没有打开->它应该会显示这样一条消息

谁能给我指出实现这一目标的正确方向。我能给出的最好的现实例子是:在web浏览器中单击itunes链接如何打开itunes应用程序(如果已安装)以及相关的appstore页面

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

实现应用程序间通信没有“最佳”方法,但有很多方法;最好的将是最适合您的环境:网络条件、防火墙、呼叫数、同步与异步等

通常通过以下方式实现通信:

  • 远程过程调用:一个应用程序基本上调用另一个应用程序上的函数/方法并传递参数。RPC通常是同步的:响应在同一通信/事务中发送
  • 消息:一个应用程序向另一个应用程序发送消息,该应用程序可能会回复其他消息。消息传递通常是异步的。 使用REST等协议,这两者之间的界限可能非常模糊
在Java世界

  • RPC通常使用以下两种方法实现:

    • :纯Java解决方案;易于实施;我不太喜欢长袍
    • :不以Java为中心;难以实施;充满陷阱;网络友好
  • 消息传递可以通过使用

    • :只适用于Java;很容易实现,但不同步;在高负载下非常强大
    • JSON/XML HTTP/s消息传递:这里有许多协议,从最安全的协议到RNIF、纯XML/JSON POST等等。。。这些是网络和语言不可知的,但总是需要一些工作来实现
混合方法是一种非常流行的方法,因为它具有易于实现和网络友好的优点,但也有不太正式的缺点。它是一种技术,而不是一种规范。我会看一下文档和框架,比如和,让您开始学习

(编辑)
我故意没有提到使用Java套接字开发您自己的。从定义上讲,IO是不纯的,而且通常是多线程的:IO很难正确处理。如果你真的坚持走这条路,至少,使用合适的框架,如ApacheMina或Netty。

IMO,你需要简单的服务器客户端应用程序之类的东西。这意味着您必须编辑第一个应用程序才能通过网络将数据发送到第二个应用程序,还必须编辑第二个应用程序才能捕获和解析来自网络的数据。这可能对您有很大帮助,这取决于服务器的功能。假设您希望从一台PC向服务器发送消息,然后再发送到下一台。这将需要1-每台PC都可以向服务器注册。2-每台电脑都有某种回调机制,允许服务器将消息发送回客户端。3-服务器能够提供已连接客户端的列表。所有这些都取决于您与服务器的通信方式。我喜欢这个答案中提出的多种方法。根据功能需要,还可以添加JMX。我们将其用于监控、性能管理、有限功能触发(启动/停止组件…)的项目。感谢您对BGR的详细回复。事实上,我们已经在使用JMS(activeMQ)将更新从服务器传递到客户端。猜测现有的基础设施可以被重用,以便通过JMS在客户端之间传递消息。