从 Java GUI 应用程序调用 servlet?

Posted

技术标签:

【中文标题】从 Java GUI 应用程序调用 servlet?【英文标题】:Invoking servlet from Java GUI application? 【发布时间】:2013-08-05 09:15:09 【问题描述】:

我知道以前也有人问过类似的问题,但我想知道您是否真的可以调用Servlet 来对EJB 模块进行一些工作,然后将数据返回到独立的Java GUI申请。

项目的要求是独立的 Java GUI 客户端应用程序和 Web 客户端应用程序都应该访问 Servet 来完成他们的工作,即更新和从数据库中检索数据。

使用 servlet 让 GUI 客户端访问 EJB 是否有意义,或者为什么不直接从独立的 GUI 应用程序访问 EJB 而根本不调用 Servlet

【问题讨论】:

【参考方案1】:

是的,您可以调用一个 servlet,而后者又调用一个 EJB。

但您也可以直接从独立应用程序调用 EJB。如果您的 servlet 返回 html 标记(内容类型“text/html” - 用于人类),您将不得不解析它(需要努力)以获得相同的结果。每次标记更改时,您的客户端也必须更改。

即使中间有防火墙(= 直接 RMI 是不可能的),您也可以使用“RMI over http(s)”,并且还有一个基于 HTTP 的命名服务(JBoss 提供此功能)。

另一方面,如果您指的是实现返回 XML 或 JSON 的 Web 服务的 servlet,这是一种有效的方法,尤其是在涉及来自其他语言(例如 C++)的客户端时。另一个优点是您可以使用浏览器读取结果(无需特殊的 RMI 客户端)。在这种情况下,请查看available tutorials to implement a webservice in Java

【讨论】:

我需要的是从 GUI 应用程序中获取的数据库数据,并更新数据库数据,主要是字符串。但是相同的servlet 将用于为 Web 客户端提供服务并返回 html。我正在努力弄清楚它们在要求中的含义。 架构(您的图表)没有定义它。 Web 层可以是 servlet 和 Web 服务。我不知道他们的意图是什么,但从技术角度来看,为两个客户端使用一个 servlet 是没有意义的。 我认为这是有道理的。但总的来说,这种情况会发生吗,我的意思是独立应用程序通过servlet 访问EJB 会话外观,或者他们通常直接访问EJB 层。 —— 可能有原因;否则 additional servlet 层有什么用处?所以是的,直接访问 EJB - 它应该更快更简单。

以上是关于从 Java GUI 应用程序调用 servlet?的主要内容,如果未能解决你的问题,请参考以下文章

从其他项目调用java servlet [重复]

服务器端的Java应用程序就是指java—servlet吗?

httpClient post 调用从 servlet 失败并出现错误 java.lang.NoSuchMethodError:

Servlet简介

如何从 Java 中的另一个线程更新 SWT GUI

Java Servlet:性能