Deployment Discriptor 中EJB Reference 和 JNDI name 有什么区别? EJB的JNDI Environment是它自己的一个私人空间,它所用的参数和其他Bean的reference都放在这个空间里,deployer在部署时设置这些东西,把reference连接到实际的Bean上。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 打个比方,你是我的弟弟(占你点便宜,不要介意)。因此,我一般喊你都叫你弟弟(logic name),但是,我的弟弟也是有个名字的。并且,在中国是中文名,在外国是外国名(名字在这里就是jndi),但是,我不管你的名字(jndi)是什么,我都喊你是弟弟(logic name),我都能找到(call or lookup)你,但是,别人,要找你,都得通过你的名字(jndi),,,,明白了吧? 1.对于Reference, 有两种,一种是EJB Reference 和 EJB LOCAL Reference 。它是用来引用在你当前的BEAN 所要用到的别的BEAN。2。JNDI name 也就是HOME 接口的一个别名,为了实现网络的透明,可以把JNDI的别名和它的对象用键值的方式(象HASHTABLE)存放在JNDI 树上,这样不管你的EJB在那个机器上,只要找到这个别名,就可以找到对应的对象了。 如果EJB在另外一台机器上,需要指定机器的IP吗? jndi name属于jndi命名空间,遵循结构化命名规范,具体的格式有名称服务器决定。EJB Reference就是jndi的logical name,EJB容器使用它们来调用EJB组件的home接口。你可以把它们看成是jndi name的别名,由组件开发人员在web.xml文件中指定。这样客户程序可以使用简单的名字来调用ejb组件,省去了使用jndi name所必须的复杂步骤。 TO daquan198163(大权)如果EJB在另外一台机器上,需要指定机器的IP吗?***********************************************当然要了,如果是同一种EJB服务器,比如是WEBLOGIC 这间访问好办,这样写就可以了: properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); properties.put(Context.PROVIDER_URL, EJBSERVERURL); properties.put(Context.SECURITY_PRINCIPAL, EJBUSERNAME); properties.put(Context.SECURITY_CREDENTIALS, EJBPASSWORD); Context context = new InitialContext(properties); YOURHome home = (YOURHome ) context.lookup( "YOURRemote");如果要是访问其它的服务器,比如WEBLOGIC 访问 JBOSS 的EJB,我这样试的,理论可以,但没有成功: properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); properties.put(Context.PROVIDER_URL, "tangb:8080"); Context context = new InitialContext(properties);^_^ 谢谢大家!我在TheServerSide.com上也发了同样的帖子。大家可以参考一下:http://www.theserverside.com/news/thread.tss?thread_id=24679#115247 HTML 中插入Flash问题 大家谈谈spring的功能 请教高手.XML解析问题 Tapestry框架 关于struts logic:iterate的问题 xpath问题 java怎么设定线程运行时间啊?比如设定每天运行一次? Java范畴的Web Service 包含哪些内容? jboss与tomcat整合版测试 一个很麻烦的问题,求救啊! 我想问一下 JDOM是不是不能直接得到element 中的string 串啊? Struts标记问题,急!在线等!!!
因此,我一般喊你都叫你弟弟(logic name),但是,我的弟弟也是有个名字的。
并且,在中国是中文名,在外国是外国名(名字在这里就是jndi),但是,我不管你的名字(jndi)是什么,我都喊你是弟弟(logic name),我都能找到(call or lookup)你,但是,别人,要找你,都得通过你的名字(jndi),,,,
明白了吧?
2。JNDI name 也就是HOME 接口的一个别名,为了实现网络的透明,可以把JNDI的别名和它的对象用键值的方式(象HASHTABLE)存放在JNDI 树上,这样不管你的EJB在那个机器上,只要找到这个别名,就可以找到对应的对象了。
EJB Reference就是jndi的logical name,EJB容器使用它们来调用EJB组件的home接口。你可以把它们看成是jndi name的别名,由组件开发人员在web.xml文件中指定。这样客户程序可以使用简单的名字来调用ejb组件,省去了使用jndi name所必须的复杂步骤。
当然要了,如果是同一种EJB服务器,比如是WEBLOGIC 这间访问好办,这样写就可以了: properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, EJBSERVERURL);
properties.put(Context.SECURITY_PRINCIPAL, EJBUSERNAME);
properties.put(Context.SECURITY_CREDENTIALS, EJBPASSWORD); Context context = new InitialContext(properties); YOURHome home = (YOURHome ) context.lookup(
"YOURRemote");如果要是访问其它的服务器,比如WEBLOGIC 访问 JBOSS 的EJB,我这样试的,理论可以,但没有成功: properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
properties.put(Context.PROVIDER_URL, "tangb:8080");
Context context = new InitialContext(properties);^_^
我在TheServerSide.com上也发了同样的帖子。大家可以参考一下:
http://www.theserverside.com/news/thread.tss?thread_id=24679#115247