5.5. 为远程 EJB 调用配置 IIOP
JBoss EAP 支持对 JBoss EAP 上部署的 EJB 进行基于 CORBA/IIOP 的访问。
<iiop>
元素用于启用 IIOP、CORBA、EJB 的调用。此元素的存在意味着安装了 iiop-openjdk
子系统。<iiop>
元素包括以下两个属性:
-
enable-default
:如果这是true
,则所有带有 EJB 2.x 主接口的 EJB 都通过 IIOP 公开。否则,必须通过jboss-ejb3.xml
显式启用它们。 -
Use-qualified-name:如果为
包含部署的应用程序和模块名称的绑定名称绑定到 CORBA 命名上下文,如true
,则 EJB 使用myear/myejbjbjar/MyBean
。如果这是false
,则默认绑定名称就是 bean 名称。
尽管 EJB 3 远程调用通常不需要 RemoteHome
接口,但任何使用 IIOP 公开的 EJB 3 Bean 都需要此接口。然后,您必须使用 jboss-ejb3.xml
文件启用 IIOP,或者为 standalone-full.xml
配置文件中的所有 EJB 启用 IIOP。
启用 IIOP
要启用 IIOP,您必须安装 IIOP OpenJDK ORB 子系统,ejb 3
子系统配置中有 <iiop/> 元素
。发行版 附带的 standalone-full.xml
配置启用了这两个配置。
IIOP 在服务器配置文件的 iiop-openjdk
子系统中配置。
<subsystem xmlns="urn:jboss:domain:iiop-openjdk:2.1">
<subsystem xmlns="urn:jboss:domain:iiop-openjdk:2.1">
使用以下管理 CLI 命令访问和更新 iiop-openjdk
子系统:
/subsystem=iiop-openjdk
/subsystem=iiop-openjdk
IIOP 元素采用控制服务器默认行为的两个属性。
<subsystem xmlns="urn:jboss:domain:ejb3:5.0"> ... <iiop enable-by-default="false" use-qualified-name="false"/> ... </subsystem>
<subsystem xmlns="urn:jboss:domain:ejb3:5.0">
...
<iiop enable-by-default="false" use-qualified-name="false"/>
...
</subsystem>
以下管理 CLI 命令在 ejb3
子系统中添加 <iiop> 元素
:
/subsystem=ejb3/service=iiop:add(enable-by-default=false, use-qualified-name=false)
/subsystem=ejb3/service=iiop:add(enable-by-default=false, use-qualified-name=false)
使用 IIOP 创建经过协调的 EJB
以下示例演示了如何从客户端进行远程 IIOP 调用:
在服务器中创建 EJB 2 Bean:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建具有强制方法
create()
的主页实施。客户端调用这个方法来获取远程接口的代理来调用业务方法:public interface IIOPBeanHome extends EJBHome { public IIOPRemote create() throws RemoteException; }
public interface IIOPBeanHome extends EJBHome { public IIOPRemote create() throws RemoteException; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为远程连接 EJB 创建远程接口:
public interface IIOPRemote extends EJBObject { String sayHello() throws RemoteException; }
public interface IIOPRemote extends EJBObject { String sayHello() throws RemoteException; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在
META-INF 中创建描述符文件
:jboss-ejb3.xml 来
引入用于远程调用的 BeanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意现在,打包的 Bean 以及 JAR 文件中的描述符已准备好部署到 JBoss EAP 容器。
在客户端创建上下文:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意客户端需要将
wildfly iiop openjdk
库添加到其类路径中。客户端可能还需要将org.wildfly:wildfly-iiop-openjdk
构件添加为 Maven 依赖项。使用 context lookup 来缩小对
IIOPBeanHome
主目录的引用范围。然后,调用 home 接口create()
方法来访问远程接口,允许您调用其方法:Copy to Clipboard Copied! Toggle word wrap Toggle overflow