• 您好!欢迎来到yongtree的博客

EJB3中JNDI调用SessionBean的解决方案(1)

(2009-07-17 11:16)

OECP(Open Enterprise Components Plateform,开放的企业级组件平台)项目的架构体系中,各业务组件需要有运行在不同的EJB容器中的能力,在组件层构建起一个业务处理的分布式集群环境。
 我们知道在客户端我们需要通过JNDI来调用EJB容器中的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组件怎样去调用呢?现在我们分析这其中出现的问题。

您可能会对以下文章感兴趣:
文件下载:
    无下载文件
阅读:392
发表评论

博主简介
  • yongtree
  • 博客积分:0分
  • 博客访问:23163次
  • 来自:青岛市
我要留言
公告
正如俞敏洪所说,我们要像树一样活着,活着是一道美丽的风景,死后依然是栋梁之才。 天空有美丽的风景,不是一望无际的蓝天,不是虚无缥缈的白云,而是一览众山小的开阔,无人可及的高度。

评论

访客

链接
  • yongtree的csdn博客
  • yongtree的技术博客JavaTree