EJB 3 + Hibernate

3 respostas
M

Olá Pessoal como vai ? Blz?

Pessoal montei esquema com EJB 3 que faiz o seguinte, tenho um EJB que é uma Fábrica de Daos ele tem interface Remote, bom eu faço o lookup certinho sem problemas, o problema aparece quando eu chamo o método por exemplo, getUsuarioDao, que teria que me devolver um Objeto Dao que tem todas as funções como save, update, etc… Aí ele apresenta o seguinte erro:

Exception in thread main java.lang.reflect.UndeclaredThrowableException

at $Proxy0.getMessageDao(Unknown Source)

at MainTest.main(MainTest.java:38)

Caused by: java.rmi.MarshalException: Failed to communicate.  Problem during marshalling/unmarshalling; nested exception is:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: br.com.carva.ejb.dao.DaoBean

at org.jboss.remoting.transport.socket.SocketClientInvoker.handleException(SocketClientInvoker.java:122)

at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:646)

at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)

at org.jboss.remoting.Client.invoke(Client.java:1634)

at org.jboss.remoting.Client.invoke(Client.java:548)

at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)

 2 more

Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: br.com.carva.ejb.dao.DaoBean

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at org.jboss.aop.joinpoint.InvocationResponse.readExternal(InvocationResponse.java:122)

at java.io.ObjectInputStream.readExternalData(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.defaultReadFields(Unknown Source)

at java.io.ObjectInputStream.readSerialData(Unknown Source)

at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObjectVersion2_2(JavaSerializationManager.java:239)

at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:133)

at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:120)

at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.versionedRead(MicroSocketClientInvoker.java:957)

at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:586)

at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)

at org.jboss.remoting.Client.invoke(Client.java:1634)

at org.jboss.remoting.Client.invoke(Client.java:548)

at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)

at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)

at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:107)

at $Proxy0.getMessageDao(Unknown Source)

at MainTest.main(MainTest.java:38)

at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)

 10 more

Caused by: java.io.NotSerializableException: br.com.carva.ejb.dao.DaoBean

at java.io.ObjectOutputStream.writeObject0(Unknown Source)

at java.io.ObjectOutputStream.writeObject(Unknown Source)

at org.jboss.aop.joinpoint.InvocationResponse.writeExternal(InvocationResponse.java:101)

at java.io.ObjectOutputStream.writeExternalData(Unknown Source)

at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

at java.io.ObjectOutputStream.writeObject0(Unknown Source)

at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

at java.io.ObjectOutputStream.writeSerialData(Unknown Source)

at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)

at java.io.ObjectOutputStream.writeObject0(Unknown Source)

at java.io.ObjectOutputStream.writeObject(Unknown Source)

at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObjectVersion2_2(JavaSerializationManager.java:120)

at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObject(JavaSerializationManager.java:95)

at org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java:120)

at org.jboss.remoting.transport.socket.ServerThread.versionedWrite(ServerThread.java:806)

at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:606)

at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:373)

at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)

Por favor, alguém pode me ajudar?

3 Respostas

Avante

Não entendi uma coisa, você está exportando seus DAOs via EJB ?
A idéia do EJB é justamente abstrair para o cliente a infra-estrutura utilizada em um serviço.
Tipo, você teria que criar um serviço EJB que faz o uso de DAO e não criar um serviço EJB que disponibilize seus DAOs.

[]´s

M

Entendi cara.

Por gentileza tem como vc passar um exemplo de estrutura para esclarecer melhor essa arquitetura.

VlW.

A

Uma dúvida.

Estou fazendo meu primeiro EJB para disponibilização de um serviço remoto via JBoss.

Estou observando que toda vez que eu acesso o serviço disponibilizado, hospedado e deployado lá no JBoss, é sempre a mesma instância da classe EJB que está sendo referenciada. Se outras mil aplicações clientes fizerem o lookup do EJB, elas estarãp se utilizando do mesmíssimo objeto no servidor JBoss??? (mesmíssima instância)

Criado 29 de fevereiro de 2008
Ultima resposta 14 de jan. de 2011
Respostas 3
Participantes 3