【问题标题】:Which approach is better to communicate from WebApplicaiton to JavaApplication?哪种方法更适合从 Web 应用程序到 Java 应用程序的通信?
【发布时间】:2012-08-15 10:41:05
【问题描述】:

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

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

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

第二种方法是否看起来已经过时了,因为最终我打开了套接字,所以我可以从 Servlet 中完成它而不是在中间与 WebService 对话?

【问题讨论】:

  • 我认为这取决于你的需求......如果你真的不打算在未来从你的 java 应用程序中公开各种功能,那么 Web 服务可能会有点过头了。

标签: java web-services servlets web


【解决方案1】:

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

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

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

【讨论】:

  • +1。 YAGNI 等等——永远不要实现不需要的东西,纯粹的浪费。
  • 我实施了第一种方法,因为我只用于我的需要
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2012-06-20
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多