Loja Virtual completa - WebService Category - Erro - Caused by: javax.naming.NamingException: Error retrieving java:comp/BeanManager

23/03/2011

0

Pessoal,
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

Noésio Souza

Responder

Posts

25/03/2011

Dyego Carmo

Eu disponibilizei o codigo fonte desta aplicacao em meu devspace ,
De uma baixada e verifique o que pode estar diferente ;)
Abracos !
Responder

27/03/2011

Noésio Souza

Olá Dyego,
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!
 
Responder

28/03/2011

Davi Costa

Posta  aqui o beans.xml... p ver se n tem como ajudar.

att Davi
Responder

28/03/2011

Noésio Souza

Segue o xml...
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
 
Responder

28/03/2011

Dyego Carmo

Isto ocorre nos testes ou com app em execucao ?
Responder

29/03/2011

Noésio Souza

E ai Dyego, blz!
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.
Responder

04/04/2011

Dyego Carmo

Tentou pegar o codigo fonte ? Esta na aula 96 !!!

Valeu !

Responder

10/04/2011

Noésio Souza

Olá Diego,
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!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar