JiveJdon Community Forums
在线289人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 1 回复 / 1
 发表新帖子   回复该主题贴
woodworm

悄悄话
发表文章: 53
注册时间: 2005年12月08日 16:43
请教这个jndi是怎么查找的 2005年12月14日 17:05 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
petstore的代码里。
package com.sun.j2ee.blueprints.petstore.tools.populate;
class CustomerPopulator
里面有这样一行code

InitialContext context = new InitialContext();
customerHome = (CustomerLocalHome) context.lookup("java:comp/env/ejb/Customer");

==============================
相关文件web.xml里有

<ejb-local-ref>
<ejb-ref-name>ejb/Customer</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.sun.j2ee.blueprints.customer.ejb.CustomerLocalHome</local-home>
<local>com.sun.j2ee.blueprints.customer.ejb.CustomerLocal</local>
<ejb-link>CustomerEJB</ejb-link>
</ejb-local-ref>

===============================
ejb-jar.xml里有

<entity>
<display-name>CustomerEB</display-name>
<ejb-name>CustomerEJB</ejb-name>

================================
请问程序里的lookup是找到了web.xml里的EJB/Customer再转而找到EJB-jar.xml里的CustomerEJB吗?
如果这样的话,我看到有的书上说web.xml里的<ejb-ref>设定的不是jndi名字而是参考名。那么如果在比如j2ee ri的辅助DD文件sun-ejb=jar.xml里有

<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>ejb/petstore/customer/Customer</jndi-name>

为什么lookup方法找的不是EJB/petstore/customer/Customer这个jndi名字,而是EJB-ref名字。换句话说这个EJB-ref设定的名字跟jndi名字到底什么区别呢?
现在越看越糊涂了。请高人指点一下。谢谢
banq

悄悄话
发表文章: 9474
注册时间: 2002年08月03日 17:08
Re: 请教这个jndi是怎么查找的 2005年12月15日 11:42 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
1.调用者程序:context.lookup("java:comp/env/ejb/Customer");
这说明被调用者的JNDI ref名称是EJB/Customer

2.在与容器相关的配置文件,jboss.xml或weblogic.xml/sun-ejb-jar.xml一般以容器命名的文件中有"被调用者的JNDI ref名称"定义:



<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>ejb/Customer</jndi-name>



当然同时,在调用者的配置里(如果调用者在web层是web.xml,如果是EJB,则在EJB-jar.xml):



<ejb-local-ref>
<ejb-ref-name>ejb/Customer</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.sun.j2ee.blueprints.customer.ejb.CustomerLocalHome</local-home>
<local>com.sun.j2ee.blueprints.customer.ejb.CustomerLocal</local> <ejb-link>CustomerEJB</ejb-link>
</ejb-local-ref>


因此你的例子中,调用者是在Web层,那么JNDI ref名称不是jboss.xml而应该是jboss-web.xml

使用JBoss学习EJB,SUN的太乱了,现在产品才都开源,已经来不及了,不知当初做什么去了。
这个主题有 1 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
  发贴前查询 标签列表勿重复发表问题

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam