2011-04-05 4 views
1

Im ayant du mal à faire une rechercheProblème faire jndi recherche pour EJB

Structure du projet: un projet web dynamique (GSS-web) et un projet EJB (GSS-ejb) déployé ensemble à l'intérieur d'un .ear (GSS ea) sur un serveur jboss 6

exception: javax.naming.NamingException: Impossible objet déréférencer [exception Root est javax.naming.NameNotFoundException: GSS-ea pas lié]

code - de l'intérieur d'un gérés bean dans mon projet web:

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) 

Toute aide serait grandement appréciée. Merci d'avance!

/Eric

Répondre

0

Avez-vous vérifié votre console JMX pour voir si les ejb de sont déployés correctement. Je pense que le nom que vous avez utilisé pour rechercher n'est pas correct. Son nom ejb est généralement ajouté avec local ou distant. Un coup d'œil rapide à votre console jmx vous donnera le nom correct. Cela dit, vous n'avez pas besoin de chercher ejb, et vous ne devriez pas le faire, si vous utilisez ejb 3.x. Il suffit d'injecter votre Ejb dans votre servlet en utilisant l'annotation @Ejb.

Si vous utilisez Ejb3.1, vous pouvez empaqueter ejb directement dans votre war.

1

Essayez:

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

Note: non "/" avant "global".