Saudações pessoal,
Estou iniciando no desenvolvimento com o java ee 6.
Criei um projeto simples que possui um servlet que chama um ejb. Ao rodar e acessar pelo browser a aplicação roda normalmente, e é imprimido o esperado com a resposta do servlet e de uma string retornada pelo ejb.
O meu problema é ao tentar gerar e executar um teste unitário com o JUnit sobre o ejb. Criei um teste unitário pelo tools (estou usando o netbeans 7.01), create JUnit test, 4.x. Ele cria a classe de testes, com o método teste abaixo:
@Test
public void testHello() throws Exception {
System.out.println("hello");
EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
NewSessionBean instance = (NewSessionBean)container.getContext().lookup("java:global/classes/NewSessionBean");
String expResult = "Hello World";
String result = instance.hello();
assertEquals(expResult, result);
container.close();
}
Ao rodar o teste ele gera uma exceção (meio longa), o principal me pareceu ser isso:
WARNING: IOP00100006: Class com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy is not Serializable
SEVERE: Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
java.lang.RuntimeException: EJB Container initialization error
Caused by: java.lang.RuntimeException: Error while binding JNDI name java:global/classes/NewSessionBean for EJB : NewSessionBean
Caused by: javax.naming.CommunicationException: java.rmi.MarshalException: CORBA BAD_PARAM [telefone removido] Maybe; nested exception is:
java.io.NotSerializableException: WARNING: IOP00100006: Class com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy is not Serializable
SEVERE: Exception while loading the app : EJB Container initialization error
java.lang.RuntimeException: Error while binding JNDI name java:global/classes/NewSessionBean for EJB : NewSessionBean
Caused by: javax.naming.CommunicationException: java.rmi.MarshalException: CORBA BAD_PARAM [telefone removido] Maybe; nested exception is:
java.io.NotSerializableException: WARNING: IOP00100006: Class com.sun.ejb.containers.JavaGlobalJndiNamingObjectProxy is not Serializable
Ela parece reclamar que um dos objetos não é serializável, mas não compreendo todo o processo por de tras das chamadas para entender a razão de ter este erro. Mais de um tutorial já vi com o passo a passo que utilizei sem gerar erros )=.
Provavelmente eu deva estar cometendo algum erro muito simples, alguém poderia me dar uma luz?
Agradeço.