gpt4 book ai didi

java - 如何从另一台计算机上的独立客户端通过互联网调用在远程计算机上运行的 EJB,而无需 JSP/Servlet 作为中间层?

转载 作者:行者123 更新时间:2023-12-01 19:04:34 25 4
gpt4 key购买 nike

案例:开发一个独立的 java 客户端,该客户端将在多个用户桌面上的不同位置运行。应用服务器(Oracle Weblogic)将在不同地点的集中位置运行。

现在我想从客户端访问/调用在中央服务器上运行的EJB( session Bean)。由于客户端和服务器位于不同的位置,并且没有通过 Intranet 或 LAN 连接,因此唯一的连接媒介是互联网。

我的问题是如何直接从客户端调用服务器中的 EJB,而不使用中间的 servlet/JSP 层?

EJB 是为远程访问而设计的,为什么需要 servlet 依赖项?

我已了解到 RMI-IIOP 可用于建立此类连接,但我无法通过互联网使用 RMI-IIOP!

这种类型的远程通信的最佳架构/解决方案是什么?

最佳答案

请记住,EJB 是一个简洁的业务逻辑单元,它们与协议(protocol)无关。将其暴露给调用者是应用程序服务器的工作。 RMI-IIOP/CORBA 只是默认设置。

IIOP 的互联网路由问题与许多协议(protocol)类似,并不是它们不通过互联网进行路由,而是它们没有内置简单的代理/反向代理功能。因此存在问题非军事区。与支持反向代理的 HTTP 或允许中继的 SMTP 相比。防火墙端口通常也是关闭的,您通常不会将应用程序服务器放在 DMZ 中。

为了解决向外部网络直接访问业务逻辑的问题,我通常将协议(protocol)更改为专为外部网络通信设计的协议(protocol)。例如,使用 @WebMethod 注释(或部署描述符)EJB,然后自动将其用作 SOAP 服务,或者使用 @PATH(等)将它们公开为 HTTP/JSON/XML 服务。

CORBA 类型协议(protocol)具有开箱即用的安全性、XA 事务功能,并且性能非常高。我通常在内部将其用于企业级面向组件的系统。 (每个 EJB 组件本质上用作微服务)而对于外部集成,尤其是调用者不需要预先知道接口(interface)契约的情况,我通常使用 EJB 的 SOAP 或 HTTP/JSON/XML 端点。

关于java - 如何从另一台计算机上的独立客户端通过互联网调用在远程计算机上运行的 EJB,而无需 JSP/Servlet 作为中间层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com