Salve galera, blz?
Bom aqui estou eu apanhando do EJB… :lol:
Comecei a estudar EJB e achei uns tutoriais muito bons. Por sinal, eis aí os links:
Introdução a Message-Driven Beans
Implementação de Stateful Session Beans
Implementação de Stateless Session Beans
Bom minha saga foi o seguinte, fiz o exemplo do StateLess Session Bean, e funcionou que nem um relógio.Daí fiquei animado e fiz meu próprio brinquedinho…Funfou também.
Daí fiquei uns dias sem mexer lá vou eu desenvolver mais outra coisa em EJB, mas o problema é que não funfou mais.Depois de apanhar um pouco, resolvi olhar novamente no tutorial e fazer o seu exemplo, mas o problema é que também deu o mesmo erro.
Tipo assim, criei o Home, EJBObject e o StateLess e fiz o deploy(sem problemas), daí quando fui fazer a chamada do cliente, eis que ele me lança a seguinte exception:
Exception in thread "main" javax.naming.CommunicationException
Root exception is java.lang.ClassNotFoundException: br.com.j2eebrasil.artigos.ejb.SaqueHome
(nosecurity manager: RMI class loader disabled)]
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:653)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:508)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at Client.main(Client.java:13)
Caused by: java.lang.ClassNotFoundException: br.com.j2eebrasil.artigos.ejb.Saque
Home (no security manager: RMI class loader disabled)
at sun.rmi.server.LoaderHandler.loadProxyClass(LoaderHandler.java:531)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RMIClassLoader.java:6
28)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIClassLoader.java:294
)
at sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStrea
m.java:238)
at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1494)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1457)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1
693)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:4
8)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:551)
... 3 more
Agora me digam, onde estou “levando uma taca”?
Seu cliente roda no JBoss ou numa JVM separada?
Se for separada, certifique-se que não falta a classe br.com.j2eebrasil.artigos.ejb.SaqueHome.
Bom, no JBoss é a mesma coisa.
Meu Client está rodando em JVM separada…
Estava até vendo esta thread, mas coloquei uma porrada de jars(todos do JBoss client) e não adiantou.
E o pior que não falta a classe…
E aí? :roll:
A Paz!!
Tem um tal de jbossall-client.jar que é o que você precisa.
Certifique-se de pôr os JARs da sua app também no CLASSPATH.
Pior que tem…
Não seria o seguinte, por exemplo no meu componente eu coloquei as classes Home e EJBObject em um pacote e na cliente(separado) coloquei em outro.Teria a ver?
A Paz!!
Vou simplificar a coisa:
No JBoss:
seu EAR
|--- classes EJB
|--- interfaces EJB
|--- outras classes
No cliente:
JAR
|--- suas classes cliente
|--- interfaces Home e Remote
JAR jbossall-client.jar
Ôpa fiz aquilo que falei em outro e mudou o erro:
Exception in thread "main" java.lang.IllegalStateException: Failed to find method for
hash:-6993301247273825440 available mappings: {4121927297169232143=public
abstract void javax.ejb.EJBHome.remove(javax.ejb.Handle) throws java.rmi.RemoteE
xception,javax.ejb.RemoveException, -7423251857241384719=public abstract void ja
vax.ejb.EJBHome.remove(java.lang.Object) throws java.rmi.RemoteException,javax.e
jb.RemoveException, 7415355246179212884=public abstract boolean javax.ejb.EJBObj
ect.isIdentical(javax.ejb.EJBObject) throws java.rmi.RemoteException, 1588202679
097188875=public abstract br.com.Cliente br.com.ejb.Clientes.getCliente() throws
java.rmi.RemoteException, 8981122088959051067=public abstract javax.ejb.HomeHan
dle javax.ejb.EJBHome.getHomeHandle() throws java.rmi.RemoteException, -12258649
25247205563=public abstract void javax.ejb.EJBObject.remove() throws java.rmi.Re
moteException,javax.ejb.RemoveException, -759407284375168265=public abstract br.
com.ejb.Clientes br.com.ejb.ClientesHome.create() throws javax.ejb.CreateExcepti
on,java.rmi.RemoteException, -883843542736932254=public abstract java.lang.Objec
t javax.ejb.EJBObject.getPrimaryKey() throws java.rmi.RemoteException, 451209517
1315154818=public abstract javax.ejb.EJBHome javax.ejb.EJBObject.getEJBHome() th
rows java.rmi.RemoteException, 3781219857755091396=public abstract javax.ejb.EJB
MetaData javax.ejb.EJBHome.getEJBMetaData() throws java.rmi.RemoteException, -32
60590760910195779=public abstract javax.ejb.Handle javax.ejb.EJBObject.getHandle
() throws java.rmi.RemoteException, 8594593460157411074=public abstract javax.ej
b.EJBObject javax.ejb.Handle.getEJBObject() throws java.rmi.RemoteException}
at org.jboss.invocation.MarshalledInvocation.getMethod(MarshalledInvocat
ion.java:297)
at org.jboss.ejb.Container.invoke(Container.java:852)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke
(JRMPInvoker.java:775)
at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:
382)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Sour
ce)
at java.lang.Thread.run(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Stream
RemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:
223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Sour
ce)
at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvo
kerProxy.java:118)
at org.jboss.invocation.MarshallingInvokerInterceptor.invoke(Marshalling
InvokerInterceptor.java:73)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.
java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:5
5)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessi
onInterceptor.java:97)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:86)
at $Proxy1.getCliente(Unknown Source)
at Client.main(Client.java:23)
Me parece que ele não está conseguinte decerializar, não?
Pq no getCliente eu faço um solicitação de um objeto Cliente que implements Serializable.E agora?
A Paz!!
Tenta usar o plugin JBoss-IDE do Eclipse. Simplifica sua vida.
Ou, coloquei tudo nun diretório só(tanto client(em um) quanto server(em outro)) e funfou…
:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
É classpath, canseira…
Mas valeu cara!!
A Paz!!