Loja Virtual completa - WebService Category - Erro - Caused by: javax.naming.NamingException: Error retrieving java:comp/BeanManager
23/03/2011
0
Estou na aula do WebService category e ocorre o seguinte erro ao rodar a aplicação:
GRAVE: javax.naming.NamingException: Lookup failed for 'java:comp/BeanManager' in SerialContext [Root exception is javax.naming.NamingException: Error retrieving java:comp/BeanManager [Root exception is java.lang.IllegalStateException: Cannot resolve bean manager]] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442) at javax.naming.InitialContext.lookup(InitialContext.java:392) at javax.naming.InitialContext.lookup(InitialContext.java:392) at br.com.CDI.ManualCDILookup.getBeanManager(ManualCDILookup.java:34) at br.com.CDI.ManualCDILookup.getFacadeWithJNDI(ManualCDILookup.java:23) at br.com.ws.CatedoryRestWS.<init>(CatedoryRestWS.java:43) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:170) at com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:159) at com.sun.jersey.server.impl.resource.PerRequestFactory$PerRequest._getInstance(PerRequestFactory.java:179) at com.sun.jersey.server.impl.resource.PerRequestFactory$AbstractPerRequest.getInstance(PerRequestFactory.java:141) at com.sun.jersey.server.impl.application.WebApplicationContext.getResource(WebApplicationContext.java:181) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:66) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:990) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:662)Caused by: javax.naming.NamingException: Error retrieving java:comp/BeanManager [Root exception is java.lang.IllegalStateException: Cannot resolve bean manager] at org.glassfish.weld.BeanManagerNamingProxy.handle(BeanManagerNamingProxy.java:131) at com.sun.enterprise.naming.impl.NamedNamingObjectManager.tryNamedProxies(NamedNamingObjectManager.java:84) at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:153) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:428) ... 50 moreCaused by: java.lang.IllegalStateException: Cannot resolve bean manager at org.glassfish.weld.BeanManagerNamingProxy.handle(BeanManagerNamingProxy.java:121) ... 53 more
Segue o código que faz o lookp:
public abstract class ManualCDILookup {
public <T> T getFacadeWithJNDI(Class<T> classToFind) { BeanManager bm = getBeanManager(); Bean<T> bean = (Bean<T>) bm.getBeans(classToFind).iterator().next(); CreationalContext<T> ctx = bm.createCreationalContext(bean); T dao = (T) bm.getReference(bean, classToFind, ctx); // this could be inlined, but intentionally left this way return dao; }
public BeanManager getBeanManager() { try{ InitialContext initialContext = new InitialContext(); return (BeanManager) initialContext.lookup("java:comp/BeanManager"); } catch (NamingException e) { e.printStackTrace(); return null; } }
}
Valeu Pessoal,
Noésio Souza
Posts
25/03/2011
Dyego Carmo
De uma baixada e verifique o que pode estar diferente ;)
Abracos !
27/03/2011
Noésio Souza
Parabéns por esse trabalho que você está fazendo, com certeza está beneficiando várias pessoas que pretendem entrar no Mundo JAVA.
Cara simplismente o lookup não funciona.
Cheguei a criar até um projeto (bem mais simples) só pra rodar o lookup e mesmo assim não funcionou.
Alguns livros que andei lendo diz que
Essa exceção ocorre qundo a classe InitialContext não tem propriedades-padrão para o provedor de serviços JNDI, e as propriedades do servidor JNDI não foram configuradas explicitamente.
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
E
Essa exceção ocorre quando o caminho de classes denifido para o programa JNDI não inclui as classes do servidor JNDI.
javax.naming.NamingException: Lookup failed for 'java:comp/BeanManager' in SerialContext [Root exception is javax.naming.NamingException: Error retrieving java:comp/BeanManager [Root exception is java.lang.IllegalStateException: Cannot resolve bean manager]]
********************************************************************************************Resumindo :
*********************************Criei o bean :*********************************************
package ejb;
import javax.ejb.Stateless;
/** * * @author USERNOT */@Statelesspublic class MeuBean { // Add business logic below. (Right-click in editor and choose // "Insert Code > Add Business Method") }
****************************Criei o ManualCDILookup******************************************
package CDI;
import javax.enterprise.context.spi.CreationalContext;import javax.enterprise.inject.spi.Bean;import javax.enterprise.inject.spi.BeanManager;import javax.naming.InitialContext;import javax.naming.NamingException;
/** * * @author USERNOT */public abstract class ManualCDILookup {
public <T> T getFacadeWithJNDI(Class<T> classToFind) { BeanManager bm = getBeanManager(); Bean<T> bean = (Bean<T>) bm.getBeans(classToFind).iterator().next(); CreationalContext<T> ctx = bm.createCreationalContext(bean); T dao = (T) bm.getReference(bean, classToFind, ctx); // this could be inlined, but intentionally left this way return dao; }
public BeanManager getBeanManager() { try{ InitialContext initialContext = new InitialContext(); return (BeanManager) initialContext.lookup("java:comp/BeanManager"); } catch (NamingException e) { e.printStackTrace(); return null; } }
}
************************Estou executando a classe que chama o lookup******************************
package CDI;
import ejb.MeuBean;import javax.inject.Inject;
/** * * @author USERNOT */public class GetJNDI extends ManualCDILookup{
@Inject private MeuBean bean;
public void getJNDI(){ bean = getFacadeWithJNDI(MeuBean.class); }
}
**********************E simplesmente dá erro*******************************************************
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325) at javax.naming.InitialContext.lookup(InitialContext.java:392) at CDI.ManualCDILookup.getBeanManager(ManualCDILookup.java:33) at CDI.ManualCDILookup.getFacadeWithJNDI(ManualCDILookup.java:22) at CDI.GetJNDI.getJNDI(GetJNDI.java:21) at CDI.MainLookup.main(MainLookup.java:20)Exception in thread "main" java.lang.NullPointerException at CDI.ManualCDILookup.getFacadeWithJNDI(ManualCDILookup.java:23) at CDI.GetJNDI.getJNDI(GetJNDI.java:21) at CDI.MainLookup.main(MainLookup.java:20)Java Result: 1CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
************************Detalhe****************************************************************
O que eu encontrei de diferente entre o seu fonte e o que estou criando é um Beans.xml, que criei depois e mesmo assim não funcionou.
A versão do NetBeans que estou utilizando é a 6.9.1, / GlassFish 3
*******************E a pergunta que fica é!****************************************************
O que está faltando configurar?
Obrigado!
28/03/2011
Davi Costa
att Davi
28/03/2011
Noésio Souza
beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"></beans>
Valeu! Davi
29/03/2011
Noésio Souza
Não sei se você esta se referindo aos testes unitários com jUnit, se for neles, tá tudo ok, aquele mini container roda legal, sem problemas.Na aplicação (Deployment) não funciona.E no exemplo acima estou criando um public static void main, também não funciona.
No que percebi tem alguma configuração implicita que está faltando.
No livro PADRÕES DE PROJETO EJB -"Floyd Marrinescu" onde fala sobre Padrões de interação EJB do lado do cliente, tem alguns exemplos, mas utiliza outros servidores, no que entendi a configuração é diferente, e percebi que normalmente é utilizado um xml para JNDI.
Quando eu estava na aula WebService Category, já não funcionou, então optei em dar andamento nas aulas em quanto fazia algumas pesquisas para resolver o problema, mas quando chegou na aula de cadastro de produto quando tem que fazer um convert e o lookup é manual, nesse momento travou as quatro rodas e até agora não destravou...
Valeu.
04/04/2011
Dyego Carmo
Valeu !
10/04/2011
Noésio Souza
Eu peguei o código fonte, porém o que estou procurando é uma resposta "Por que não consigo fazer o lookp manual?" partindo de um projeto onde estou construindo desde o inicio, isto é, ter o código fonte pronto se torna simples, o problema é na hora de dar manutenção.
Obrigado!
Clique aqui para fazer login e interagir na Comunidade :)