When testing an EJB3 SLSB from a remote client I found that jboss started with option
"-b 0.0.0.0" (on Linux) binds all sockets to all network interfaces, except for
the socket at port 3873!
JBOSS seems to bind this port to the IP address listed for the hostname of the server,
only. On my development notebook this was 127.0.0.1 at that time, which gave me the
following interesting exception on the client:
org.jboss.remoting.CannotConnectException: Can not get connection to server. Problem
establishing socket connection for InvokerLocator [socket://127.0.0.1:3873/]
at
org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:530)
at
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1550)
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.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103)
at $Proxy0.divide(Unknown Source)
at at.co.xss.test.client.TestClient.runTest(TestClient.java:25)
at at.co.xss.test.client.TestClient.main(TestClient.java:32)
Caused by: java.net.ConnectException: Connection refused
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:366)
at java.net.Socket.connect(Socket.java:519)
at
org.jboss.remoting.transport.socket.SocketClientInvoker.createSocket(SocketClientInvoker.java:187)
at
org.jboss.remoting.transport.socket.MicroSocketClientInvoker.getConnection(MicroSocketClientInvoker.java:801)
at
org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:526)
at
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
at org.jboss.remoting.Client.invoke(Client.java:1550)
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.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at
org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:103)
at $Proxy0.divide(Unknown Source)
at at.co.xss.test.client.TestClient.runTest(TestClient.java:25)
at at.co.xss.test.client.TestClient.main(TestClient.java:32)
at
org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)
... 11 more
When I changed the entry in /etc/hosts on my notebook to map the IP address of the
ethernet port to the machines hostname and restarted JBOSS, I could connect from the
remote client side without problem.
On the server, netstat now shows the following bound ports:
| tcp 0 0 192.168.162.96:3873 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:1098 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:1099 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:32816 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:32817 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:32819 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:8093 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:4445 0.0.0.0:* LISTEN
1766/java
| tcp 0 0 0.0.0.0:4446 0.0.0.0:* LISTEN
1766/java
|
192.168.162.96 is the IP address listed in /etc/hosts for the hostname of
the notebook and it happens to be the current IP address of the ethernet interface (which
is not always the case!)
But why does JBOSS bind port 3873 to this IP address only and not to 0.0.0.0 like it does
for all other ports?
I explicitely used option "-b 0.0.0.0" to have JBOSS listen on all network
interfaces on this machine.
Is this a bug or do I miss something here?
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4098486#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...