Caros,
Sou iniciante em EJB3 e estou tentando fazer um exemplo simples: cadastrar um Usuario(id, nome) em um banco de dados mysql. Por favor, caso algum desenvolvedor mais experiente puder me ajudar:
1- No Netbeans 7.2 criei uma Aplicação Enterprise, gerando CadUsuarios-war e CadUsuarios-ejb
2- No CadUsuarios-ejb:
2.1- Uma Unidade de persistência
2.2- Uma Classe de Entidade do Banco de Dados
2.3- Um Bean de Sessão @Local UsuarioSessionBean que apenas da um entityManager.persist(usuario) no método save, que e está definido na interface UsuarioSessionBeanLocal
3- No CadUsuarios-war
3.1- Adicionei o Framework Java Server Faces
3.2- Gerei uma Classe Java UsuarioController:
public class UsuarioController {
@EJB
private UsuarioSessionBean usuarioSB;
private Usuario usuario;
...
public void create(){
try{
usuarioSB.save(usuario);
System.out.println("Usuário cadastrado");
} catch (Exception ex) {
System.out.println("Erro ocorrido");
}
}
3.3- Criei um index.jsp:
...
<h:commandButton action="#{usuarioJSFBean.createSetup()}" label="Criar objeto"/>
<h:panelGrid columns="1">
<h:outputText value="Seu nome:"/>
<h:inputText id="userEmail" value= "#{usuarioJSFBean.usuario.nome}" title="Seu nome" />
</h:panelGrid>
<h:commandButton action="#{usuarioJSFBean.create()}" label="Cadastrar"/>
...
3.4- Configurei o faces-config.xml:
<managed-bean>
<managed-bean-name>usuarioJSFBean</managed-bean-name>
<managed-bean-class>br.com.jsf.UsuarioController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Implantei a Aplicação Enterprise. Quando rodo o http://localhost:8080/CadUsuarios-war/ ocorre o erro: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado usuarioJSFBean
com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado usuarioJSFBean
at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:211)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103)
at com.sun.el.parser.AstValue.getValue(AstValue.java:179)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:169)
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:355)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at com.sun.faces.application.view.JspViewHandlingStrategy.doRenderView(JspViewHandlingStrategy.java:432)
at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:233)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exceção ao tentar injetar Remote ejb-ref name=br.com.jsf.UsuarioController/usuarioSB,Remote 3.x interface =br.com.session.UsuarioSessionBean,ejb-link=null,lookup=,mappedName=,jndi-name=br.com.session.UsuarioSessionBean,refType=Session em class br.com.jsf.UsuarioController: Lookup failed for ‘java:comp/env/br.com.jsf.UsuarioController/usuarioSB’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:194)
at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:205)
… 57 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exceção ao tentar injetar Remote ejb-ref name=br.com.jsf.UsuarioController/usuarioSB,Remote 3.x interface =br.com.session.UsuarioSessionBean,ejb-link=null,lookup=,mappedName=,jndi-name=br.com.session.UsuarioSessionBean,refType=Session em class br.com.jsf.UsuarioController: Lookup failed for ‘java:comp/env/br.com.jsf.UsuarioController/usuarioSB’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171)
at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:184)
… 58 more
Caused by: javax.naming.NamingException: Lookup failed for ‘java:comp/env/br.com.jsf.UsuarioController/usuarioSB’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for ‘Remote ejb-ref name=br.com.jsf.UsuarioController/usuarioSB,Remote 3.x interface =br.com.session.UsuarioSessionBean,ejb-link=null,lookup=,mappedName=,jndi-name=br.com.session.UsuarioSessionBean,refType=Session’ . Actual (possibly internal) Remote JNDI name used for lookup is ‘br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean’ [Root exception is javax.naming.NamingException: Lookup failed for ‘br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean not found]]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
… 61 more
Caused by: javax.naming.NamingException: Exception resolving Ejb for ‘Remote ejb-ref name=br.com.jsf.UsuarioController/usuarioSB,Remote 3.x interface =br.com.session.UsuarioSessionBean,ejb-link=null,lookup=,mappedName=,jndi-name=br.com.session.UsuarioSessionBean,refType=Session’ . Actual (possibly internal) Remote JNDI name used for lookup is ‘br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean’ [Root exception is javax.naming.NamingException: Lookup failed for ‘br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean not found]]
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
… 65 more
Caused by: javax.naming.NamingException: Lookup failed for ‘br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean’ in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean not found]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
… 70 more
Caused by: javax.naming.NameNotFoundException: br.com.session.UsuarioSessionBean#br.com.session.UsuarioSessionBean not found
at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
… 74 more
