繁体   English   中英

在没有JSP / Servlet作为中介的情况下,如何从另一台计算机上的独立客户端调用通过Internet在远程计算机上运行的EJB?

[英]How to call EJB running on remote machine over internet from standalone client on another machine without JSP/Servlet as intermediate?

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

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

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

EJB是为远程访问而设计的,为什么要有servlet依赖关系?

我已经读过RMI-IIOP可以用来建立这种类型的连接,但是我无法通过Internet使用RMI-IIOP!

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

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

IIOP的Internet路由问题与许多协议相似,不是因为它们没有通过Internet路由,而是因为它们没有内置的简单代理/反向代理功能。因此,存在通过DMZ的问题。 与具有反向代理支持的HTTP相比,或SMTP允许中继。 防火墙端口通常也处于关闭状态。您通常不会将应用程序服务器放置在DMZ中。

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

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

没有servlet依赖性。 应用服务器特定于自定义客户端/协议。 每个服务器都有自己的建立连接的方式,通过为适当的提供程序和协议处理程序配置JNDI来体现。

为什么RMI-IIOP无法通过Internet工作? 我可以看到的唯一潜在问题是安全性,我不知道是否有RMI-IIOP的加密版本,但是除此之外,它是一个可路由的完美协议。

您可能会遇到端口和防火墙问题,但这不是协议故障。 如果您想通过端口80(http的端口)运行RMI-IIOP,那很好(显然,它不是http,也不能与http代理一起使用,但这又不是协议问题)。

Weblogic也有(有吗?)自己的协议T3? 我认为是吗? 你可以用吗?

我认为关键是为什么您不认为可以在“ Internet”上运行RMI-IIOP,并试图解决该问题,而不一定要使用哪种协议。

RMI / IIOP是应用程序服务器提供的默认值。 通过配置/注释,可以改为使用SOAP或HTTP / XML / JSON。 (尽管这些协议在安全性,交易等方面都有一定的取舍)

好的,EJB完全不依赖servlet。 可以使用RMI / IIOP直接调用它们。 您必须面对的唯一问题是网络结构,我的意思是RMI / IIOP使用一些通常在公司防火墙中未打开的端口,打开它们可能非常困难。 因此通常最好发出HTTP请求,因为几乎所有的防火墙都接受这种请求。

因此,如果您在Intranet中(客户端和服务器在同一Intranet中),则可以使用RMI / IIOP,但是如果您的客户端和服务器通过Internet连接位于不同的网络中,那么我建议您使用HTTP。 您可以使用Web服务并将EJB作为Web服务“导出”。 如果您不想使用Web服务,则可以将接收HTTP请求并调用EJB的servlet作为极值实现。 这取决于您必须返回给客户端的对象的类型。 如果它是一个简单的字符串或不太复杂的东西,那么您甚至可以使用Servlet,但是如果它们是对象,那么Servelt解决方案不是正确的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM