JavaBeans:创建客户端应用 - 编程入门网
bm.ejs.ns.jndi.CNInitialContextFactory");
return new InitialContext(properties);
}
JavaBeans:创建客户端应用(2)时间:2011-07-28而针对JBoss编写的同一方法会有所不同。
一旦建立起JNDI连接,并且通过getInitialContext()方法获得了上下文,我们就可以利用上下文来查找TravelAgent EJB的远程接口了。 Object ref = jndiContext.lookup("TravelAgentBean/remote"); 在本书中,我们将始终为远程客户端应用程序使用形如“TravelAgentBean/remote”这样的查找名称。你所用的实际查找名称或许有所不同,这依赖于厂商的要求。你需要把查找名称绑定到EJB服务器的命名服务上,而有些厂商可能会要求一个特殊的目录路径,或者提供一个默认的绑定。 如果使用标准的Java EE组件(Servlet、JSP、EJB或Java EE应用客户端),无论你使用哪家EJB厂商的产品,在创建JNDI InitialContext时都不需要显式的设置属性。这是因为JNDI属性可以在部署期间配置并被自动应用。一个Java EE组件会以如下方式获得其InitialContext。
相比于为简单Java客户端手工配置JNDI属性,这种方式更为简单,也更易于移植。所有的Java EE组件都使用相同的JNDI命名系统,enterprise bean以此来查找任何服务。特别要指明的是,这些组件要求指向EJB的引用要与“java:comp/env/ejb/”名字空间绑定。例如,对于像 servlet这样一个不同的Java EE组件而言,为了查找TravelAgent EJB,下面是我们所要做的全部工作。 Object ref = jndiContext.lookup("java:comp/env/ejb/TravelAgentRemote"); 在部署期间,你要使用厂商的部署工具将JNDI名称映射到TravelAgent EJB的远程接口。在后续章节里,我们会看到使用特殊的注解可以将指向EJB的引用直接注入到bean class中。我们已经看到过这种方式的一个例子,即:将EntityManager服务注入到Travel- AgentBean类里。在本书中,Java客户端应用程序需要使用显式的参数来进行JNDI查找。作为替代方案,你也可以使用一种特殊的Java EE组件,叫做Java EE应用客户端(Java EE Application Client),但是这类组件超出了本书的讨论范围。有关Java EE应用客户端组件的更多信息可以参考Java EE 5的规范。 客户端应用程序使用PortableRemoteObject.narrow()方法将Object ref窄化(narrow)成一个TravelAgentRemote引用。
PortableRemoteObject.narrow()方法在EJB 1.1中被首次引入,并继续沿用于EJB 3.0的远程客户端。这需要支持基于IIOP之上的RMI。由于CORBA要支持许多不同的语言,而转型并非CORBA的固有功能(一些语言没有转型概念)。因此,为了获得一个指向TravelAgentRemote的远程引用,我们必须显示地对 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |