Remoting problem
skomarla Apr 20, 2007 11:14 AMI deployed an slsb from the EJB3Trail samples. I can access the EJB via local lookup, but can't seem to do so using a remote lookup. when accessed remotely, I get the following exception.
EJBClient start
Exception in thread "main" org.jboss.remoting.CannotConnectException: Can not get connection to server. Problem establishing socket connection for InvokerLocator [socket://localhost:3873/]
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:525)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1544)
at org.jboss.remoting.Client.invoke(Client.java:530)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:48)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:61)
at $Proxy0.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:628)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:590)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at test.EJBClient.main(EJBClient.java:28)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
at java.net.Socket.connect(Socket.java:507)
at org.jboss.remoting.transport.socket.SocketClientInvoker.createSocket(SocketClientInvoker.java:187)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.getConnection(MicroSocketClientInvoker.java:796)
at org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:521)
at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1544)
at org.jboss.remoting.Client.invoke(Client.java:530)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:48)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:61)
at $Proxy0.lookup(Unknown Source)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:628)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:590)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at test.EJBClient.main(EJBClient.java:28)
at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)
... 9 more
Client code is pretty straight forward:
package test;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import trail.RemoteCalculator;
public class EJBClient
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("EJBClient start");
Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.JBossRemotingContextFactory");
properties.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
properties.setProperty(Context.PROVIDER_URL, "socket://localhost:3873");
try
{
Context ctx = new InitialContext(properties);
RemoteCalculator cal = (RemoteCalculator)ctx.lookup("EJB3Trail/RemoteCalculator");
String serverInfo = cal.getServerInfo();
System.out.println("got server info: " + serverInfo);
}
catch (NamingException e)
{
e.printStackTrace();
System.exit(-1);
}
System.out.println("exiting");
}
}
Server code:
....
public static void main(String[] args)
{
try
{
Bootstrap.getInstance().bootstrap();
AssembledDirectory jar = AssembledContextFactory.getInstance().create("calc.jar");
jar.addClass(Calculator.class);
jar.addClass(LocalRemoteCalculator.class);
jar.addClass(RemoteCalculator.class);
jar.addClass(StatelessCalculator.class);
Bootstrap.getInstance().deploy(jar);
}
catch (DeploymentException e1)
{
e1.printStackTrace();
System.exit(1);
}
// attempt a local lookup
Context ctx;
try
{
ctx = new InitialContext();
Calculator cal = (Calculator)ctx.lookup("EJB3Trail/LocalCalculator");
double val = cal.calculate(10,20,10,10);
System.out.println("got calculated value: " + val);
}
catch (NamingException e1)
{
e1.printStackTrace();
System.exit(1);
}
// wait for remote invocations..
....