Pessoal, estou usando ServiceLocator para pegar minha interface EJB, mas ta dando NullPointer alguem ajuda?
<07/02/2012 18h45min41s BRST> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.internal.WebAppServletContext@19494f6 - appName: 'TesteEAR', name: 'Teste', context-path: '/Teste'] Root cause of ServletException.
javax.faces.el.EvaluationException: java.lang.NullPointerException
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:98)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
at javax.faces.component.UICommand.broadcast(UICommand.java:311)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1246)
Truncated. see log file for complete stacktrace
java.lang.NullPointerException
at utils.ServiceLocator.jndiLookup(ServiceLocator.java:102)
at utils.ServiceLocator.getLocalBean(ServiceLocator.java:83)
at managedBeans.Teste.logar(Teste.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Truncated. see log file for complete stacktrace
No meu servidor esta o projeto EAR que contem um WEB e um EJB
packageutils;importjava.util.Collections;importjava.util.HashMap;importjava.util.Map;importjavax.naming.InitialContext;importjavax.naming.NamingException;importjavax.rmi.PortableRemoteObject;publicclassServiceLocator{privateStringNOME_APLICACAO="";privateStringSUFIXO_LOCAL="Bean/local";privateStringSUFIXO_REMOTO="Bean/remote";InitialContextcontext=null;Map<String,Object>cache=null;/** * Inicializa service locator. * Assume como sufixo dos beans: SUFIXO_LOCAL = "Bean/local" e SUFIXO_REMOTO = "Bean/remote". * * @param nomeAplicacao nome da aplicação */publicvoidsetup(StringnomeAplicacao){try{context=newInitialContext();cache=Collections.synchronizedMap(newHashMap<String,Object>());}catch(NamingExceptione){thrownewRuntimeException(e);}if(!(nomeAplicacao==null||nomeAplicacao.trim().equals(""))){NOME_APLICACAO=nomeAplicacao+"/";}}/** * Inicializa service locator * * @param nomeAplicacao nome da aplicação * @param sufixoLocal sufixo dos beans locais * @param sufixoRemoto sufixo dos beans remotos */publicvoidsetup(StringnomeAplicacao,StringsufixoLocal,StringsufixoRemoto){setup(nomeAplicacao);SUFIXO_LOCAL=sufixoLocal;SUFIXO_REMOTO=sufixoRemoto;}/** * Obtem bean remoto * @param interfaceRemota tipo do bean * @return */@SuppressWarnings("unchecked")public<T>TgetRemoteBean(Class<T>interfaceRemota){StringserviceName=getServiceName(interfaceRemota,false);Tservico=(T)cache.get(serviceName);if(servico==null){Objectref=jndiLookup(serviceName);servico=(T)PortableRemoteObject.narrow(ref,interfaceRemota);cache.put(serviceName,servico);}returnservico;}/** * Obtem bean local * @param interfaceRemota tipo do bean * @return */@SuppressWarnings("unchecked")public<T>TgetLocalBean(Class<T>interfaceLocal){StringserviceName=getServiceName(interfaceLocal,true);Tservico=(T)cache.get(serviceName);if(servico==null){Objectref=jndiLookup(serviceName);servico=(T)PortableRemoteObject.narrow(ref,interfaceLocal);cache.put(serviceName,servico);}returnservico;}privateStringgetServiceName(Class<?>beanInterface,finalbooleanisLocal){if(isLocal){returnNOME_APLICACAO+beanInterface.getSimpleName()+SUFIXO_LOCAL;}else{returnNOME_APLICACAO+beanInterface.getSimpleName()+SUFIXO_REMOTO;}}privateObjectjndiLookup(Stringservice){try{System.out.println(service);returncontext.lookup(service);}catch(NamingExceptione){System.out.println(e.getMessage());thrownull;}}}
evertonsilvagomesjav
Tem alguma coisa haver com meu EJB esta dentro do EAR?