关于lookup的一个问题,有时候有参数,有时候可以没有参数?

qin_li1979 2003-08-20 11:33:29
switch (whichFactory)
{
case JNDINames.WEBLOGIC :
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
InitialContext ctx = new InitialContext(ht);
sqlSource=(DataSource)ctx.lookup(JNDINames.DATASOURCE);
break;
case JNDINames.OC4J :
InitialContext context = new InitialContext();
sqlSource = (DataSource)context.lookup(JNDINames.DATASOURCE);
break;
case JNDINames.JBOSS :
case JNDINames.WEBSPHERE :
default:
Context env1 = (Context)(new InitialContext()).lookup("java:comp/env");
sqlSource = (DataSource)env1.lookup(JNDINames.DATASOURCE);
break;
}

以上这段代码中,new InitialContext(); 为什么有时候有参数,有时候没有?

oc4j没有参数是因为它可以自己识别?datasource在它的根目录下?自己可以默认识别是本机上?( ht.put(Context.PROVIDER_URL, "t3://localhost:7001");)

相反,weblogic全部设置好了?

前面这2个的lookup和最后的lookup("java:comp/env")和ejb中lookup 三者的关系又是如何?希望高手能加以指点
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
UpbeatJackson 2003-09-28
  • 打赏
  • 举报
回复
举一个J2EE Tutorial中的例子,比如ConvertApp。我按照步骤把改应用在本地机器上发布,得到ConverterEJB.ear和ConverterClient.jar。
在本地机器上运行runclient -client ConvertEJB.ear -name ConverterClient成功。
为什么在另外一台机器上不能成功运行?
RobertDeNiro 2003-09-28
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2248/2248664.xml?temp=.1960718
tianboguang 2003-09-27
  • 打赏
  • 举报
回复
参数包括主要放3样东西:
1:类似“weblogic.jndi.WLInitialContextFactory”这样的CONTEXT_FACTORY的指定,说明你是用的什么类型的J2EE服务器;
2:“localhost:7001”,指定上面所用类型的J2EE服务器的IP地址和端口好。
3:另外,你上面例子中没有的,如果你设置了EJB安全角色,也是要把用户名和密码放进去的。

如果没有参数,表示你搜索本J2EE服务器上的JNDI。加了上面的参数表示你有可能搜索其他机器乃至其他类型的J2EE服务器上的EJB。
chenwg168 2003-08-21
  • 打赏
  • 举报
回复
如果你写的ejb为本地接口的话就不用加参数
如果为远程借口的话就得加参数
duck_z 2003-08-21
  • 打赏
  • 举报
回复
up
redkiki 2003-08-21
  • 打赏
  • 举报
回复
这个问题论坛商有很多,我前些天也有点迷惑.大致给你讲一下了.如果你要运行的程序不在web服务器中(比如,一个在外面运行的test Class,通过java test 运行的话),你必须设置properties(和具体的web服务器有关)来获得context.如果你的程序是在web容器中,就不必带参数了,直接就可以了.另:lookup()中的jndi名称,一般情况下,你直接使用定义的jndi名称就行.如果你使用java:comp/env/"your jndi name for ejb",那么必须定义ejb的引用(如果是在一个ejb中使用另一个ejb,用<ejb-local-ref>标记指明.如果是在非EJB中使用,则必须在web.xml中表明<ejb-local-ref>).还有datasource,mdb等,原理有点相似,只不过是在<resource-ref>中定义而已.好了,讲的不详细,你还是查一下吧,我记得有一个帖子讲的还行.但愿能有所帮助.

67,511

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧