我有JavaApplication,它启动时会打开套接字并监听连接(如服务器)。 我还有WebApplication应该从JavaApplication获取一些数据并在WebBrowser中显示它。为了实现这一点,我想:
所有这些都位于同一台服务器上。
第二种方法是否可以解决问题,因为最终我打开了套接字,所以我可以从Servlet中进行,而不是在中间与WebService交谈?
答案 0 :(得分:2)
这个问题没有答案 - 根本没有信息可以作出这个决定。
编写Web服务需要做很多工作,因此#1方法可以避免“无用”的工作。另一方面,它会使Java服务可用于其他用途,因为其他应用程序(甚至其他Web服务)可以使用Web服务与之通信。
因此,如果这项工作对其他人也有用,请将其作为Web服务实现。这也允许您自己部署Web服务,因此访问Java应用程序不取决于您的Web应用程序是否正在运行。
答案 1 :(得分:0)
IMO,如果你想“正确”这样做,你应该计划至少以两种方式实施它。为此,您必须在Java应用程序中定义“服务”,而不依赖于您将要使用的通信机制。
一旦定义了服务接口,您需要从相当多的可能性中选择两种使用方式:
如另一篇回复所述,没有普遍的“正确”选择。决定将取决于您正在解决的问题的具体细节。一旦你选择了两个可能性,你就实现了这两个的最佳候选者。如果你真的需要第二个,你也可以实现它,或者只是保存它以便以后知道你的设计将很容易适应这种增长:)
答案 2 :(得分:0)
首先,是否有可能直接集成“Server”Java代码?建立一个可调用的库?
其次,对servlet的请求与从服务器获取数据之间的关系是什么?您是否为每个请求获得不同的数据?
一般情况下,我不打算打开和关闭套接字,以便为每个请求与服务器通信 - 看起来更像是这种连接池的情况。
我的直觉,对你的要求知之甚少。编写一个线程安全的java组件,打开一个套接字并获取一些数据。拥有servlet请求可以使用并返回池的这类对象池。
Java EE对servlet和EJB允许的内容有一些限制,你的app服务器可能有一些“Worker”概念,你可以从中实际使用连接器对象。