对于查找或调用远程 EJB bean 的应用程序,请考虑如何维护从云到远程 EJB bean 的访问,或者考虑将与 EJB 相关的所有 bean 迁移到云中。
在 Java 代码中,如果 javax.ejb.EJB 注释中包含使用 java:global 或 corbaname: 名称空间的 lookup 元素,那么表明可能使用了远程 EJB。如果查找中指定的 EJB 位于其他应用程序中,请考虑将该应用程序迁移到含此应用程序的云中。
@EJB(lookup="java:global/myApp/myModule/MyBeanComponent")
对于部署描述符,包含 <home> 或 <remote> 元素的 application.xml、ejb-jar.xml 或 web.xml 文件中的 <ejb-ref> 元素同样表明使用了远程 EJB。
<ejb-ref> <ejb-ref-name>CartHome远程</ejb-ref-name> <ejb-ref-type>会话</ejb-ref-type> <home>com.ibm.ejbs.CartHomeRemote</home> <remote>com.ibm.ejbs.CartRemote</remote> </ejb-ref>
针对每个 Eclipse 项目或 Java 归档标记一次此规则。
如果应用程序能够直接访问 EJB 远程提供程序,那么无需进一步操作。
否则,一种选择是在迁移此应用程序时将包含远程 EJB bean 的应用程序迁移到云中。 同时,分析这些应用程序中是否存在连接问题。 或者,您可以使用 VPN 隧道(例如,IBM Cloud Secure Gateway)来创建安全连接,以查找现有内部部署的 EJB 远程提供程序。 有关配置安全连接的更多信息,请参阅配置 VPN。 对于 EJB 查找,请将安全客户机中的目标配置为内部部署的 JNDI 树。使用从云安全连接配置返回的主机和端口,采用以下任一格式:
更改 InitialContext 属性或 JNDI 属性中的提供程序 URL 以使用云主机和端口。
在为内部部署的远程 EJB bean 的调用配置安全连接时,请在内部部署的应用程序服务器上创建并安装 HTTP 隧道连接 servlet,并在客户端 ORB 中启用隧道连接。有关更多信息,请参阅 Enabling HTTP tunneling。配置安全客户机以指向 HTTP 隧道连接 servlet,并使用从云安全连接配置返回的主机和端口,采用以下格式:
在将 EJB 客户机迁移到云中且 EJB bean 为内部部署的 EJB bean 时,可使用此方法,反之亦然。
注:使用远程 EJB bean 的 Liberty for Java 应用程序可部署到 IBM Cloud Instant Runtime 上;但是,因为 IBM Cloud 环境中的端口限制,无法通过 CORBA/IIOP 协议远程访问这些远程 EJB bean。 有关 IBM Cloud 上的 Liberty for Java 的更多信息,请参阅 Liberty features supported in IBM Cloud。