从Web应用程序到Java应用程序的通信哪种方法更好?

时间:2012-08-15 10:41:06

标签: java web-services servlets web

我有JavaApplication,它启动时会打开套接字并监听连接(如服务器)。 我还有WebApplication应该从JavaApplication获取一些数据并在WebBrowser中显示它。为了实现这一点,我想:

  1. 使用Servlet我可以使用套接字连接到该JavaApplication并获取数据
  2. 创建WebService:WebApplication将向WebService发送请求,WebService将打开套接字并连接到JavaApplication。
  3. 你的方法
  4. 所有这些都位于同一台服务器上。

    第二种方法是否可以解决问题,因为最终我打开了套接字,所以我可以从Servlet中进行,而不是在中间与WebService交谈?

3 个答案:

答案 0 :(得分:2)

这个问题没有答案 - 根本没有信息可以作出这个决定。

编写Web服务需要做很多工作,因此#1方法可以避免“无用”的工作。另一方面,它会使Java服务可用于其他用途,因为其他应用程序(甚至其他Web服务)可以使用Web服务与之通信。

因此,如果这项工作对其他人也有用,请将其作为Web服务实现。这也允许您自己部署Web服务,因此访问Java应用程序不取决于您的Web应用程序是否正在运行。

答案 1 :(得分:0)

IMO,如果你想“正确”这样做,你应该计划至少以两种方式实施它。为此,您必须在Java应用程序中定义“服务”,而不依赖于您将要使用的通信机制。

一旦定义了服务接口,您需要从相当多的可能性中选择两种使用方式:

  • 文件
  • 数据库表
  • 原始套接字
  • JMS
  • AMQP
  • 网络套接字
  • 基于SOAP的Web服务
  • RESTful Web服务
  • 许多其他人,但你明白了

如另一篇回复所述,没有普遍的“正确”选择。决定将取决于您正在解决的问题的具体细节。一旦你选择了两个可能性,你就实现了这两个的最佳候选者。如果你真的需要第二个,你也可以实现它,或者只是保存它以便以后知道你的设计将很容易适应这种增长:)

答案 2 :(得分:0)

首先,是否有可能直接集成“Server”Java代码?建立一个可调用的库?

其次,对servlet的请求与从服务器获取数据之间的关系是什么?您是否为每个请求获得不同的数据?

一般情况下,我不打算打开和关闭套接字,以便为每个请求与服务器通信 - 看起来更像是这种连接池的情况。

我的直觉,对你的要求知之甚少。编写一个线程安全的java组件,打开一个套接字并获取一些数据。拥有servlet请求可以使用并返回池的这类对象池。

Java EE对servlet和EJB允许的内容有一些限制,你的app服务器可能有一些“Worker”概念,你可以从中实际使用连接器对象。