Boa Tarde Pessoal!
Possuo várias aplicações Web aqui na empresa e que tem integração com o sistema DataSul(Banco Progress).
Hoje cada aplicação web tem sua camada de negócios que acessa o banco progress, pretendo unificar isso com o módulo EJB.
Ou seja todas minhas aplicações Web irão acessar esse módulo que terá as regras de negócios e as principais entidades utilizadas pelo banco.
Pois bem, criei esse módulo criei as entidades e os métodos de controle.
Agora estou com dificuldades em acessar o Módulo EJB.
Estou chamando o EJB da seguinte maneira:
package control;
import javax.ejb.EJB;
import javax.naming.InitialContext;
import br.com.gnt.business.GerenciarPedidoRemote;
import br.com.gnt.modelo.Pedido;
/**
* Created by JBoss Tools
*/
public class MBPedido {
@EJB(name = "ejb/GerenciarPedido")
private GerenciarPedidoRemote gerenciarPedido;
private static final Logger logger = Logger.getLogger(MBPedido.class.getName());
public MBPedido(){
try{
Pedido pedido = null;
pedido = lookup().findById(1);
logger.info("LookUp: " + pedido);
pedido = gerenciarPedido.findById(1);
logger.info("Annotation: " + pedido);
}catch(Exception e){
logger.severe(e.getMessage());
}
}
private GerenciarPedidoRemote lookup() {
try {
InitialContext ctx = new InitialContext();
GerenciarPedidoRemote remote = (GerenciarPedidoRemote) ctx
.lookup("ejb/GerenciarPedido");
return remote;
} catch (Exception e) {
logger.severe(e.getMessage());
return null;
}
}
}
Quando eu rodo a aplicação tenho o seguinte erro:
Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener
java.lang.NoClassDefFoundError: Lbr/com/gnt/business/GerenciarPedidoRemote;
at java.lang.Class.getDeclaredFields0(Native Method)
Até ai normal, ele não está achando a classe do EJB, ai adicionei o jar do EJB no projeto.
Ele encontra a classe normalmente, inicia o projeto, mas me dá o seguinte erro:
javax.faces.FacesException: javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref ejb/GerenciarPedido@jndi: br.com.gnt.business.GerenciarPedidoRemote@[email removido]@Session@null into class control.MBPedido
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:556)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:143)
...
Caused by: javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref ejb/GerenciarPedido@jndi: br.com.gnt.business.GerenciarPedidoRemote@[email removido]@Session@null into control.MBPedido
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:340)
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:546)
... 63 more
Caused by: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref ejb/GerenciarPedido@jndi: br.com.gnt.business.GerenciarPedidoRemote@[email removido]@Session@null into class control.MBPedido
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:387)
at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:206)
at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:127)
at com.sun.faces.vendor.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:79)
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:298)
... 64 more
Caused by: javax.naming.NameNotFoundException: br.com.gnt.business.GerenciarPedidoRemote#br.com.gnt.business.GerenciarPedidoRemote not found
at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:398)
Alguem já passou por isso? Estou fazendo da forma correta ao adicionar o jar do EJB na aplicação?
ps:
[color=blue]1. Estou usando Glassfish v2
2. As aplicações estão rodando na mesma instância do Servidor de aplicação
3. Tentei tanto com injeção via annotation quanto via lookup.
4. Tentei adicionar as referências do EJB no web.xml e nada![/color]
Obrigado
[]s
