Java - 如何访问另一个正在运行的应用程序中的类

时间:2012-09-14 14:35:23

标签: java sockets

在我的场景中,我运行的服务器等待客户端建立连接。客户端必须实例化连接,因为我希望与之通信的计算机具有比我更严格的网络安全性。客户将每天与我联系。所以我有一个jar文件和进程运行来处理这个。服务器端在我的端,而客户端在另一端。接下来,我有一个网页正在运行,当用户点击特定按钮时,我需要告诉服务器应用程序,“好的,现在将数据发送到客户端”。

实现这一目标的最佳方法是什么?首先,客户端是否存在等待数据的问题?在心跳等我需要什么特别的东西吗?是否可以反转方案并让服务器连接到客户端?

接下来,我该怎么做才能使我在用户点击按钮时启动的应用程序实际上与正在运行的正在处理连接的jar进行对话?

2 个答案:

答案 0 :(得分:0)

您需要的是决定传输层。如果您使用RMI - 如果您在通信的所有端点使用Java,那么这是有道理的 - 您不需要热点或其他东西。

我应该在web-app上下文(你使用Spring吗?)中定义一个初始化RMI对象并在RMI注册表中发布它的唯一实例,这样客户端就可以连接到它。

由于此对象是在webapp进程(和webapp类加载器)中创建的,因此它可以访问您使用的某个队列对象。然后您的webapp可以将项目添加到该队列。

你的RMI对象应该在一个单独的线程中执行(不要在Java EE中创建不加思考的线程,只需要一个!或者使用一些框架作为Quartz)并从阻塞队列中消耗。

[webapp]
   configfile
   create thread with server object
      publish server object with getinfo method
      getinfo method consumes from queue (queue.take())


[client]
    connect via RMI to server object
    call method get info

如果客户端在没有读取新项目的情况下可以保留很多,并且有很多客户端,也许值得从没有项目(或超时)的队列中返回null。

答案 1 :(得分:0)

通过RESTful Web服务可以轻松实现客户端 - 服务器通信。使用套接字和通用通信协议可以轻松实现同一本地计算机上的应用程序之间的通信。