0

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

  1. 使用 Servlet 我可以使用套接字连接到该 JavaApplication 并获取数据
  2. 创建 WebService:WebApplication 将向 WebService 发送请求,WebService 将打开套接字并连接到 JavaApplication。
  3. 你的方法

所有这些都位于同一台服务器中。

第二种方法是否看起来已经过时了,因为最终我打开了套接字,所以我可以从 Servlet 中做到这一点,而不是在中间与 WebService 交谈?

4

3 回答 3

2

这个问题没有答案——根本没有任何信息可以作为这个决定的依据。

编写 Web 服务需要大量工作,因此方法 #1 将避免“无用”工作。另一方面,它将使 Java 服务可供其他用途使用,因为其他应用程序(甚至其他 Web 服务)可以使用该 Web 服务与其通信。

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

于 2012-08-15T10:48:13.817 回答
0

IMO,如果你想“正确”地做到这一点,你应该计划至少以两种方式实施它。为此,您必须在 Java 应用程序中定义您的“服务”,而与您随后将使用的通信机制无关。

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

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

正如另一个答复中指出的那样,没有普遍的“正确”选择。该决定将取决于您正在解决的问题的具体情况。一旦你选择了两个可能性,你就实现了这两个中的最佳候选。如果你真的需要第二个,你也可以实现它,或者只是保存它以供以后使用,因为你知道你的设计很容易适应这种增长:)

于 2012-08-15T11:44:51.197 回答
0

首先,是否有可能直接集成“服务器”Java 代码?制作一个可调用的库?

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

一般来说,我不喜欢为每个请求打开和关闭与服务器通信的套接字 - 似乎更像是一个这样的连接池的情况。

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

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

于 2012-08-15T12:58:22.253 回答