EJB client cannot connect: [SocketServerInvoker] Failed to a
nautilusiii Feb 18, 2006 2:22 PMHi guys!
I have developed a very simple EJB with the JBoss IDE 1.5:
Here is the EJB:
Interface:
package src; import javax.ejb.Remote; @Remote public interface MyCalculator { int add(int x, int y); int sub(int x, int y); }
Implementation:
package src; import javax.ejb.Stateless; import src.MyCalculator; public @Stateless class MyCalculatorBean implements MyCalculator { public int add(int x, int y) { return x+y; } public int sub(int x, int y) { return x-y; } }
jndi.properties:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099
It deployed successfully.
Next I developed the client.
First I got some ClassNotFoundException for the class EJBMetaDataImpl. Luckily that problem could be solved as I found another thread stating that the client project needs the jboss-client.jar.
Here ist the client:
import java.rmi.RMISecurityManager; import java.util.Enumeration; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import src.MyCalculator; public class MyCalculator_Client { /** * @param args */ public static void main(String[] args) { try { System.setSecurityManager(new RMISecurityManager()); InitialContext ctx = new InitialContext(); MyCalculator myCalculator = (MyCalculator) ctx .lookup("MyCalculatorBean/remote"); System.out.println("1+2=" + myCalculator.add(1, 2)); } catch (Exception e) { e.printStackTrace(System.err); } } }
Here is the exception during invocation:
20:13:12,665 ERROR [SocketServerInvoker] Failed to accept socket connection java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:147) at org.jboss.remoting.transport.socket.ServerThread.<init>(ServerThread.java:84) at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:434) at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:401) at java.lang.Thread.run(Thread.java:595) Caused by: java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2232) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2698) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:750) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268) at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.<init>(ObjectInputStreamWithClassLoader.java:57) at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.createInput(JavaSerializationManager.java:52) at org.jboss.remoting.transport.socket.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:56) at org.jboss.remoting.transport.socket.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:76) at org.jboss.remoting.transport.socket.ClientSocketWrapper.<init>(ClientSocketWrapper.java:54) at org.jboss.remoting.transport.socket.ServerSocketWrapper.<init>(ServerSocketWrapper.java:50) ... 9 more 20:13:12,675 ERROR [SocketServerInvoker] Failed to accept socket connection java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.jboss.remoting.transport.socket.ServerThread.createServerSocket(ServerThread.java:147) at org.jboss.remoting.transport.socket.ServerThread.<init>(ServerThread.java:84) at org.jboss.remoting.transport.socket.SocketServerInvoker.processInvocation(SocketServerInvoker.java:434) at org.jboss.remoting.transport.socket.SocketServerInvoker.run(SocketServerInvoker.java:401) at java.lang.Thread.run(Thread.java:595) Caused by: java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read1(BufferedInputStream.java:256) at java.io.BufferedInputStream.read(BufferedInputStream.java:313) at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2217) at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2230) at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2698) at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:750) at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268) at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.<init>(ObjectInputStreamWithClassLoader.java:57) at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.createInput(JavaSerializationManager.java:52) at org.jboss.remoting.transport.socket.ServerSocketWrapper.createInputStream(ServerSocketWrapper.java:56) at org.jboss.remoting.transport.socket.ClientSocketWrapper.createStreams(ClientSocketWrapper.java:76) at org.jboss.remoting.transport.socket.ClientSocketWrapper.<init>(ClientSocketWrapper.java:54) at org.jboss.remoting.transport.socket.ServerSocketWrapper.<init>(ServerSocketWrapper.java:50) ... 9 more
Any idea?
Thanks!