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!