如何在EJB3中JNDI调用SessionBean(一)

字体大小: 中小 标准 ->行高大小: 标准
在OECP(Open Enterprise Components Plateform,开放的企业级组件平台)项目的架构体系中,我们知道在客户端需要通过JNDI来调用EJB容器中的SessionBean,那么如何在EJB3中JNDI调用SessionBean呢?
在EJB3中,获得JNDI上下文主要有两种方式。(默认采用jboss的获取方式)
1、 通过程序编码的方式
 
 

Java代码
 1.public static InitialContext getInitialContext() throws NamingException{   
2.   Properties p = new Properties();   
3.  p.put(Context.INITIAL_CONTEXT_FACTORY,   
4."org.jnp.interfaces.NamingContextFactory");   
5.   p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");   
6.   p.put(Context.PROVIDER_URL, "jnp://localhost:1099");   
7.   return new InitialContext(p);   
8.}   


客户端通过InitialContext ctx = getInitialContext();的方式来获取上下文。
2、 通过配置属性文件的方式
在应用的src下新建一个jndi.properties的资源文件(注意文件名必须是jndi.properties)
内容:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost
客户端只要通过下面的方法就能获得上下文对象了
InitialContext ctx = new InitialContext();
 为了方便在程序开发的过程中的测试,我们一般情况下会封装一个获得JNDI上下文的工具类来使用。比如我们构建的一个如下的EJBFinder.java的类:
 
 

Java代码
 1.public class EJBFinder {   
2.  
3. public static InitialContext getInitialContext() throws NamingException{   
4.  Properties p = new Properties();   
5.  p.put("server", "jboss");   
6.  p.put(Context.INITIAL_CONTEXT_FACTORY,   
7.    "org.jnp.interfaces.NamingContextFactory");   
8.  p.put(Context.URL_PKG_PREFIXES,   
9.    "org.jboss.naming:org.jpn.interfaces");   
10.  p.put(Context.PROVIDER_URL, "jnp://localhost:1099");   
11.  InitialContext ctx = new InitialContext(p);   
12.  return ctx;   
13. }   
14.    
15. public static Object findEJB(String ejbname) throws NamingException{   
16.  return getInitialContext().lookup(ejbname);   
17. }   
18.}   
19.   

这样的一个工具类给我们测试EJB组件提供了很大的方便,不用我们再去重复的去构建JNDI上下文的环境。但是当EJB组件开发完成后,正式部署到正式环境中,客户端调用EJB组件怎样去调用呢?

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68796.html