2011-04-05 93 views
1

林有麻烦做一个查找问题做JNDI查找EJB

项目结构: 动态Web项目(GSS-网络)和内部的.ear一起部署EJB项目(GSS-EJB)(GSS- EA)到6的JBoss服务器

异常: javax.naming.NamingException中:无法提领对象[根异常是javax.naming.NameNotFoundException:GSS-EA未结合]

代码 - 从内的管理豆在我的网站项目:

InitialContext ctx = new InitialContext(); 
return (CodesService)ctx.lookup("java:/global/gss-ea/gss-ejb/CodesBean"); 

java Namespace : jndi tree (from jmx console on jboss): 
+- global (class: org.jnp.interfaces.NamingContext) 
    | +- jmx-console (class: org.jnp.interfaces.NamingContext) 
    | +- ROOT (class: org.jnp.interfaces.NamingContext) 
    | +- uuid-key-generator (class: org.jnp.interfaces.NamingContext) 
    | +- http-invoker (class: org.jnp.interfaces.NamingContext) 
    | | +- invoker (class: org.jnp.interfaces.NamingContext) 
    | +- gss-ea (class: org.jnp.interfaces.NamingContext) 
    | | +- gss-web (class: org.jnp.interfaces.NamingContext) 
    | | +- gss-ejb (class: org.jnp.interfaces.NamingContext) 
    | | | +- CorporateActionBean!com.comp.gss.session.CorporateActionService[link -> gss-ea/CorporateActionBean/local-com.comp.gss.session.CorporateActionService] (class: javax.naming.LinkRef) 
    | | | +- CodesBean!com.comp.gss.session.CodesService[link -> gss-ea/CodesBean/local-com.comp.gss.session.CodesService] (class: javax.naming.LinkRef) 
    | | | +- BasketBean!com.comp.gss.session.BasketService[link -> gss-ea/BasketBean/local-com.comp.gss.session.BasketService] (class: javax.naming.LinkRef) 
    | | | +- FPBean[link -> gss-ea/FPBean/local-com.comp.gss.session.FPService] (class: javax.naming.LinkRef) 
    | | | +- CodesBean[link -> gss-ea/CodesBean/local-com.comp.gss.session.CodesService] (class: javax.naming.LinkRef) 
    | | | +- PopulationBasketBean!com.comp.gss.session.PopulationBasketBean[link -> gss-ea/PopulationBasketBean/no-interface] (class: javax.naming.LinkRef) 
    | | | +- CorporateActionBean[link -> gss-ea/CorporateActionBean/local-com.comp.gss.session.CorporateActionService] (class: javax.naming.LinkRef) 
    | | | +- OutputBean!com.comp.gss.session.OutputService[link -> gss-ea/OutputBean/local-com.comp.gss.session.OutputService] (class: javax.naming.LinkRef) 
    | | | +- FPBean!com.comp.gss.session.FPService[link -> gss-ea/FPBean/local-com.comp.gss.session.FPService] (class: javax.naming.LinkRef) 
    | | | +- PopulationBean[link -> gss-ea/PopulationBean/local-com.comp.gss.session.PopulationService] (class: javax.naming.LinkRef) 
    | | | +- BasketBean[link -> gss-ea/BasketBean/local-com.comp.gss.session.BasketService] (class: javax.naming.LinkRef) 
    | | | +- PopulationBean!com.comp.gss.session.PopulationService[link -> gss-ea/PopulationBean/local-com.comp.gss.session.PopulationService] (class: javax.naming.LinkRef) 
    | | | +- PopulationBasketBean!com.comp.gss.session.PopulationBasketService[link -> gss-ea/PopulationBasketBean/local-com.comp.gss.session.PopulationBasketService] (class: javax.naming.LinkRef) 
    | | | +- OutputBean[link -> gss-ea/OutputBean/local-com.comp.gss.session.OutputService] (class: javax.naming.LinkRef) 

任何帮助将不胜感激。提前致谢!

/埃里克

回答

0

你检查你的JMX控制台,看看EJB的正确部署。我认为你用来查找的名字是不正确的。其通常ejb名称附加本地或远程。快速浏览一下你的jmx控制台会给你正确的名字。尽管如此,如果您使用的是ejb 3.x,那么您不必也可能不应该像这样查找ejb。只需使用@Ejb注释将您的Ejb注入到您的servlet中即可。

如果您使用Ejb3.1,您可以直接在战争中打包ejb。

1

尝试:

return (CodesService)ctx.lookup("java:global/gss-ea/gss-ejb/CodesBean"); 

注:没有 “/” 之前 “全球”。