3.2.9. 远程调用的修改
3.2.9.1. 将进行远程调用的 JBoss EAP 5 应用程序移植到 JBoss EAP 6。 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
总结
在 JBoss EAP 6 里,对服务器进行远程调用有两个途径:
- 你可以使用新的 JBoss 专有的 EJB 客户 API 来进行调用。
- 你可以使用 JNDI 来查找 Bean 的代理并在返回的代理上进行调用。
在 JBoss EAP 5 里,EJB 远程接口绑定在 JNDI 里,在默认情况下,本地接口是 "ejbName/local",而远程接口是 "ejbName/remote"。客户应用程序可以用 "ejbName/remote" 来查找 Bean。
在 JBoss EAP 6 里,你可以用下列语法通过
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
对于 stateful bean:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ejb:
NAMESPACE_NAME 来远程访问 EJB:对于 stateless bean:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
在上面的语法里要替换的值是:
<app-name>
- 部署的 EJB 的应用程序名称。这通常是 EJB 部署的 EAR 名称,不带 .ear 后缀,但可以在 application.xml 里进行覆盖。如果应用程序没有部署为 .EAR,这个值是一个空字符串。我们假设这个例子没有部署为 EAR。<module-name>
- 服务器上部署的 EJB 名称。这通常是 EJB 部署的 JAR 名称,不带 .jar 后缀,但可以在 ejb-jar.xml 里进行覆盖。在这个例子里,假设 EJB 是部署在 jboss-as-ejb-remote-app.jar 里,所以其模块名是 jboss-as-ejb-remote-app。<distinct-name>
- EJB 的一个可选的不同名称。这个例子没有使用不同名称,所以它使用空字符串。<bean-name>
- 默认是 bean 实现类的简单名称。<fully-qualified-classname-of-the-remote-interface>
- the remote view fully qualified class name.
更新客户端代码
假设你已经将下列 stateless EJB 部署到了 JBoss EAP 6 服务器。请注意,它开放了 bean 的一个远程视图。
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
你可以在 QuickStarts 里找到一个完整的、包含服务器和客户端代码的可运行的例程。相关的更多信息,请参考 https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/ 上的《JBoss EAP 6 部署指南》里的『开发企业级应用程序起步』章节中的『回顾 Quickstart 教程』 。
关于使用 JNDI 进行远程调用的更多信息,请参考 https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/ 上的《JBoss 部署指南》里的『Enterprise JavaBeans』章节的『使用 JNDI 远程调用 Session Bean』 。