Erro Injeção de Dependência Glassfish EJB

4 respostas
JonnyWiller

Olá!
Já li e re-li trocentos tópicos aqui e em outros locais da internet e não consigo fazer minha aplicação funcionar.

Tenho um Projeto EJB no eclipse e um projeto Dynamic Web Project também no eclipse. Estou fazendo interface web com JSF 2.0
As interfaces do EJB são @Remote
As implementações são @Stateless

Seguem os códigos

ManagedBean
package mb;

import java.rmi.RMISecurityManager;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import rmi.bo.ServidorDeNomesBO;
import rmi.interfaces.Roteador;
import rmi.interfaces.ServidorDeNomes;

@ManagedBean
@ViewScoped
public class ServidorDeNomesMB {

	private Long codigo;
	@EJB
	private static ServidorDeNomes servidorDeNomes;
	private List<Roteador> roteadores;
	private String nameServer;
	
	public ServidorDeNomesMB() {
			
	}
	
	public void salvar(){
		try {
			InitialContext context = new InitialContext();
			System.setSecurityManager(new RMISecurityManager());
			context.bind("rmi://"+getNameServer()+":1099/ServidorDeNomes", "ejb/ServidorDeNomesJNDI");
			System.out.println("Servidor de nomes iniciado.");
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}

O Stateless

package rmi.impl;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import javax.ejb.Stateless;

import rmi.bo.ServidorDeNomesBO;
import rmi.interfaces.ServidorDeNomes;
import rmi.util.TabelaRoteador;

@Stateless(mappedName="ejb/ServidorDeNomesJNDI")
public class ServidorDeNomesImpl extends UnicastRemoteObject implements ServidorDeNomes {

	private static final long serialVersionUID = 1661994725967454161L;

	public ServidorDeNomesImpl() throws RemoteException {
		super();
	}

	public String registrarRoteador(String nome, String ipv4)
			throws RemoteException {
		ServidorDeNomesBO.registrarRoteador(nome, ipv4);
		return null;
	}

	public void removerRoteador(String name) throws RemoteException {
		ServidorDeNomesBO.removeRouter(name);

	}

	public void getTabelaRoteadores(TabelaRoteador tabelaRoteador)
			throws RemoteException {
		ServidorDeNomesBO.getTabelaRoteador();
	}
	
	public void main(){
		ServidorDeNomesBO.main(null);
	}

}

o @Remote

package rmi.interfaces;

import java.rmi.RemoteException;

import javax.ejb.Remote;

import rmi.util.TabelaRoteador;

@Remote
public interface ServidorDeNomes {
	public String registrarRoteador(String nome, String ipv4) throws RemoteException;
	public void removerRoteador(String name) throws RemoteException;
	public void getTabelaRoteadores(TabelaRoteador tabelaRoteador) throws RemoteException;
}

o sun-ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
  <enterprise-beans>
  
      <ejb>
        <ejb-name>ServidorDeNomesImpl</ejb-name>
        <jndi-name>ejb/ServidorDeNomesJNDI</jndi-name>
      </ejb>
      
      <ejb>
      	<ejb-name>RoteadorImpl</ejb-name>
      	<jndi-name>ejb/RoteadorImpl/JNDI</jndi-name>
      </ejb>
  
  </enterprise-beans>
</sun-ejb-jar>

O erro:

AVISO: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado roteadorMB
	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:405)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:267)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:99)
	at com.sun.el.parser.AstValue.getTarget(AstValue.java:127)
	at com.sun.el.parser.AstValue.invoke(AstValue.java:217)
	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
	at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43)
	at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:72)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
	at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:118)
	at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2345)
	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:102)
	at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:1993)
	at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:1941)
	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:285)
	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:243)
	at javax.faces.application.ApplicationWrapper.publishEvent(ApplicationWrapper.java:666)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:114)
	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:313)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277)
	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:619)
Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=mb.RoteadorMB/roteador,Remote 3.x interface =rmi.interfaces.Roteador resolved to intra-app EJB RoteadorImpl in module Rede.jar,ejb-link=Rede.jar#RoteadorImpl,lookup=null,mappedName=,jndi-name=ejb/RoteadorImpl/JNDI,refType=Session into class mb.RoteadorMB
	at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:98)
	at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:205)
	... 54 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=mb.RoteadorMB/roteador,Remote 3.x interface =rmi.interfaces.Roteador resolved to intra-app EJB RoteadorImpl in module Rede.jar,ejb-link=Rede.jar#RoteadorImpl,lookup=null,mappedName=,jndi-name=ejb/RoteadorImpl/JNDI,refType=Session into class mb.RoteadorMB
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:614)
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:384)
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:168)
	at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:94)
	... 55 more
Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Illegal use of static field private static rmi.interfaces.Roteador mb.RoteadorMB.roteador on class that only supports instance-based injection
	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:532)
	... 58 more

Não consigo de forma alguma fazer isso...

4 Respostas

Mr.style

Você repetiu duas vezes o O Stateless.

JonnyWiller

Ops, coloquei o Remote certo.
E ae, alguma luz?

Mr.style

Retira esse trecho do arquivo xml

<enterprise-beans>  
    
      <ejb>  
        <ejb-name>ServidorDeNomesImpl</ejb-name>  
        <jndi-name>ejb/ServidorDeNomesJNDI</jndi-name>  
      </ejb>  
        
      <ejb>  
        <ejb-name>RoteadorImpl</ejb-name>  
        <jndi-name>ejb/RoteadorImpl/JNDI</jndi-name>  
      </ejb>  
    
  </enterprise-beans>

Ele anotado não precisa disso.
Pelo menos nunca utilizei nos meus projetos.

JonnyWiller

Tirei o modificador static do ServidorDeNomes no ManagedBean e parou com essa Exception aí, mas agora ta dando essa:

Caused by: javax.ejb.EJBAccessException at rmi.interfaces._Roteador_Wrapper.getHostName(rmi/interfaces/_Roteador_Wrapper.java) at mb.RoteadorMB.salvar(RoteadorMB.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:234) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:72) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) ... 37 more Caused by: java.rmi.AccessException: CORBA NO_PERMISSION 9998 Maybe; nested exception is: org.omg.CORBA.NO_PERMISSION: vmcid: 0x2000 minor code: 1806 completed: Maybe at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:276) at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.wrapException(Util.java:698) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:238) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:147) at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:225) at rmi.interfaces.__Roteador_Remote_DynamicStub.getHostName(rmi/interfaces/__Roteador_Remote_DynamicStub.java) ... 49 more Caused by: org.omg.CORBA.NO_PERMISSION: vmcid: 0x2000 minor code: 1806 completed: Maybe Caused by: javax.ejb.AccessLocalException: Client not authorized for this invocation. at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1850) at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:200) at com.sun.ejb.containers.EJBObjectInvocationHandlerDelegate.invoke(EJBObjectInvocationHandlerDelegate.java:75) at $Proxy236.getHostName(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:228) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:147) at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:225) at rmi.interfaces.__Roteador_Remote_DynamicStub.getHostName(rmi/interfaces/__Roteador_Remote_DynamicStub.java) at rmi.interfaces._Roteador_Wrapper.getHostName(rmi/interfaces/_Roteador_Wrapper.java) at mb.RoteadorMB.salvar(RoteadorMB.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:234) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:72) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88) at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) at javax.faces.component.UICommand.broadcast(UICommand.java:315) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(Face GRAVE: sServlet.java:312) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:277) 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:619)

Criado 11 de julho de 2011
Ultima resposta 11 de jul. de 2011
Respostas 4
Participantes 2