Quebrando a cabeça com JBOSS 6.0

1 resposta
er_amaral

Pessoal, boa noite.

Ando estudando EJB por conta própria.

Tentei fazer um teste em um servidor JBOSS 6.0, com um programa simples (o famoso HelloWorld).

O problema é o seguinte: fiz o deploy no servidor (local) de um EJB 3 contendo o bean e a interface remota.

Ao tentar conectar de uma aplicação Swing, recebo a seguinte exception:

javax.naming.NamingException: Could not dereference object [Root exception is java.lang.reflect.UndeclaredThrowableException]

at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1508)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:824)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)

at javax.naming.InitialContext.lookup(InitialContext.java:409)

at JFramePrincipal.obtemStringServidor(JFramePrincipal.java:62)

at JFramePrincipal.access$0(JFramePrincipal.java:51)

at JFramePrincipal$1.actionPerformed(JFramePrincipal.java:94)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)

at java.awt.Component.processMouseEvent(Component.java:6203)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:5968)

at java.awt.Container.processEvent(Container.java:2105)

at java.awt.Component.dispatchEventImpl(Component.java:4564)

at java.awt.Container.dispatchEventImpl(Container.java:2163)

at java.awt.Component.dispatchEvent(Component.java:4390)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)

at java.awt.Container.dispatchEventImpl(Container.java:2149)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4390)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)

at java.awt.EventQueue.access$000(EventQueue.java:96)

at java.awt.EventQueue$1.run(EventQueue.java:608)

at java.awt.EventQueue$1.run(EventQueue.java:606)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)

at java.awt.EventQueue$2.run(EventQueue.java:622)

at java.awt.EventQueue$2.run(EventQueue.java:620)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

Caused by: java.lang.reflect.UndeclaredThrowableException

at $Proxy0.createProxyBusiness(Unknown Source)

at org.jboss.ejb3.proxy.impl.objectfactory.session.SessionProxyObjectFactory.createProxy(SessionProxyObjectFactory.java:129)

at org.jboss.ejb3.proxy.impl.objectfactory.session.stateless.StatelessSessionProxyObjectFactory.getProxy(StatelessSessionProxyObjectFactory.java:79)

at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:161)

at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)

at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1483)

at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1500)

 42 more

Caused by: java.lang.ClassNotFoundException: ejbteste.HelloWorld

at org.jboss.remoting.serialization.ClassLoaderUtility.loadClass(ClassLoaderUtility.java:103)

at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:94)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:264)

at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveProxyClass(ObjectInputStreamWithClassLoader.java:253)

at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java:1548)

at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1510)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)

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

at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1809)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)

at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)

at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)

at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)

at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)

at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)

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

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

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

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

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

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

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

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

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

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

at org.jboss.ejb3.proxy.impl.remoting.IsLocalProxyFactoryInterceptor.invoke(IsLocalProxyFactoryInterceptor.java:104)

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

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

at $Proxy0.createProxyBusiness(Unknown Source)

at org.jboss.ejb3.proxy.impl.objectfactory.session.SessionProxyObjectFactory.createProxy(SessionProxyObjectFactory.java:129)

at org.jboss.ejb3.proxy.impl.objectfactory.session.stateless.StatelessSessionProxyObjectFactory.getProxy(StatelessSessionProxyObjectFactory.java:79)

at org.jboss.ejb3.proxy.impl.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:161)

at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)

at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1483)

at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1500)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:824)

at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)

at javax.naming.InitialContext.lookup(InitialContext.java:409)

at JFramePrincipal.obtemStringServidor(JFramePrincipal.java:62)

at JFramePrincipal.access$0(JFramePrincipal.java:51)

at JFramePrincipal$1.actionPerformed(JFramePrincipal.java:94)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2335)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:404)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:253)

at java.awt.Component.processMouseEvent(Component.java:6203)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:5968)

at java.awt.Container.processEvent(Container.java:2105)

at java.awt.Component.dispatchEventImpl(Component.java:4564)

at java.awt.Container.dispatchEventImpl(Container.java:2163)

at java.awt.Component.dispatchEvent(Component.java:4390)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4461)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4125)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4055)

at java.awt.Container.dispatchEventImpl(Container.java:2149)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4390)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:649)

at java.awt.EventQueue.access$000(EventQueue.java:96)

at java.awt.EventQueue$1.run(EventQueue.java:608)

at java.awt.EventQueue$1.run(EventQueue.java:606)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:116)

at java.awt.EventQueue$2.run(EventQueue.java:622)

at java.awt.EventQueue$2.run(EventQueue.java:620)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:105)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:619)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:275)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:200)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:185)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:138)

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

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

at org.jboss.ejb3.proxy.impl.remoting.IsLocalProxyFactoryInterceptor.invoke(IsLocalProxyFactoryInterceptor.java:104)

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

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

 49 more

Alguém aí faz idéia do que pode ser? Estranho o java.lang.ClassNotFoundException: ejbteste.HelloWorld

OBS:

1 - Código da interface remota:

package ejbteste;

import javax.ejb.Remote;

@Remote
public interface HelloWorld {

public String helloWorld();

}

2 - Código do bean:

package ejbteste;

import javax.ejb.Stateless;

import javax.ejb.TransactionAttribute;

import javax.ejb.TransactionAttributeType;

@Stateless
public class HelloWorldBean implements HelloWorld {

public String helloWorld() {
	return "Hello, world!";
}

}

3 - Função no aplicação Swing que resolve o bean:

private void obtemStringServidor() {

try {

Properties p = new Properties();

p.put(“java.naming.factory.initial”,

“org.jnp.interfaces.NamingContextFactory”);

p.put(“java.naming.provider.url”, jnp://127.0.0.1:1099);

p.put(“java.naming.factory.url.pkgs”,

“org.jboss.naming:org.jnp.interfaces);

InitialContext ctx = new InitialContext§;
HelloWorld helloWorld = (HelloWorld) ctx
				.lookup("HelloWorldBean/remote");
		String mensagem = helloWorld.helloWorld();
		this.jTextFieldMsgSrv.setText(mensagem);

	} catch (NamingException e) {
		e.printStackTrace();
	}
}

4 - Mensagens no console do JBOSS, após o deploy, com o nome do bean:

HelloWorldBean/remote - EJB3.x Default Remote Business Interface
HelloWorldBean/remote-ejbteste.HelloWorld - EJB3.x Remote Business Interface

5 - O JAR EJB3 foi criado utilizando Eclipse Galileo. O projeto foi criado como EJB, e a versão selecionada foi 3. O projeto usa a biblioteca ejb3-api-3.0.jar O cliente utiliza a biblioteca jbossall-client.jar, que veio com o JBOSS 6.0.

6 - Dados adicionais: OS - Linux Fedora 14 x86_64 / JVM: Sun OpenJDK 1.6.0_20

Estou quebrando a cabeça.

Um abraço aos amigos.

1 Resposta

er_amaral

Gente, resolvido depois de muita luta. Era a interface errada que eu estava usando no cliente.

Criado 8 de outubro de 2011
Ultima resposta 9 de out. de 2011
Respostas 1
Participantes 1