Posted on 2006-04-30 09:28
兵临城下 阅读(1207)
评论(1) 编辑 收藏 所属分类:
Java EE
笔者使用的应用服务器从Weblogic到现在的WebSphere,在EJB的调用问题上始终存在的一点疑虑,今天说出来和大家探讨一下。
在远程调用EJB时,有一个初始化环境的问题,有以下两种代码:
一、Context ctx = new InitialContext();
二、String initialFactory = "com.ibm.websphere.naming.WsnInitialContextFactory";
String initialURL = "iiop://localhost:2809";
Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, initialURL);
env.put(Context.INITIAL_CONTEXT_FACTORY,initialFactory);
Context ctx = new InitialContext(env);
笔者也看了很多这方面的书,大多数书中都是按照第一种的写法,大概都这样论述,说EJB已经在容器中初始化,所以只需调用默认的初始化环境即可,但是却都不介绍怎么在容器中初始化这些信息。根据笔者的使用经验,不设置容器的情况下(其实笔者也不知道怎么设置)使用第一种方法都提示不能初始化上下文。
笔者现在都使用第二种硬编码的方式,现在想请教大家,如果想设置EJB的容器,利用第一种方法,那该怎么设置呢?毕竟每次调用时都按第二种方法很麻烦。
还有一个就是JNDI的书写问题有两种:(比如笔者创建的EJB名为HelloEntity)一种是ejb/HelloEntity,还有一种是java:comp/env/ejb/HelloEntity
请问java:comp/env怎么设置,在哪个配置文件中设置?笔者在WebSphere的配置文件ibm-ejb-jar-bnd.xmi中设置了java:comp/env,可在使用时还是报错,说找不到java这个初始化上下文,不懂,请指教该怎么设置?