[
https://issues.jboss.org/browse/JBREM-1302?page=com.atlassian.jira.plugin...
]
Ron Sigal edited comment on JBREM-1302 at 11/21/11 7:50 PM:
------------------------------------------------------------
I didn't know anyone was using the RMI transport. Unless this problem also applies to
the socket transport, I'm not likely to fix it.
Sergey, have you tried to use the socket transport?
was (Author: ron_sigal):
I didn't know anyone was using the RMI transport. Unless this problem also applies
to the socket transport, I'm not likely to fix it.
Can't invoke remote object if server bind address is 0.0.0.0
------------------------------------------------------------
Key: JBREM-1302
URL:
https://issues.jboss.org/browse/JBREM-1302
Project: JBoss Remoting
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: transport
Affects Versions: 2.5.4.SP3
Environment: Jboss 5.1.0 jdk 1.6 jboss remoting 2.5.4.SP2
Reporter: Sergey Chernov
Assignee: Ron Sigal
Fix For: 2.5.4.SP4
When jboss bind address is set to `0.0.0.0` remote client gets exception while trying to
invoke remote object's method:
java.rmi.ConnectException: Connection refused to host:
lx4-schernov.nn.five9.com; nested
exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
at org.jboss.remoting.transport.rmi.RMIServerInvoker_Stub.transport(Unknown Source)
at
org.jboss.remoting.transport.rmi.RMIClientInvoker.callTransport(RMIClientInvoker.java:648)
at
org.jboss.remoting.transport.rmi.RMIClientInvoker.access$100(RMIClientInvoker.java:78)
at org.jboss.remoting.transport.rmi.RMIClientInvoker$1.run(RMIClientInvoker.java:402)
at org.jboss.util.threadpool.RunnableTaskWrapper.run(RunnableTaskWrapper.java:147)
at org.jboss.util.threadpool.BasicThreadPool.executeOnThread(BasicThreadPool.java:473)
at org.jboss.util.threadpool.BasicThreadPool.runTaskWrapper(BasicThreadPool.java:201)
at
org.jboss.remoting.transport.rmi.RMIClientInvoker.transport(RMIClientInvoker.java:420)
at
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:169)
at org.jboss.remoting.Client.invoke(Client.java:2070)
at org.jboss.remoting.Client.invoke(Client.java:879)
at org.jboss.remoting.Client.invoke(Client.java:867)
at org.jboss.remoting.transporter.TransporterClient.invoke(TransporterClient.java:479)
at $Proxy0.getMySumHost(Unknown Source)
at test.Main.main(Main.java:45)
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:193)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:525)
at java.net.Socket.connect(Socket.java:475)
at java.net.Socket.<init>(Socket.java:372)
at java.net.Socket.<init>(Socket.java:186)
at javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:206)
at
org.jboss.remoting.transport.rmi.RemotingRMIClientSocketFactory.createSocketPrivate(RemotingRMIClientSocketFactory.java:333)
at
org.jboss.remoting.transport.rmi.RemotingRMIClientSocketFactory.createSocket(RemotingRMIClientSocketFactory.java:210)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 18 more
It happens because RemotingRMIClientSocketFactory had been created with wrong
('0.0.0.0') host name which becomes effective host while creating socket:
log:
328 [main] TRACE org.jboss.remoting.transport.rmi.RemotingRMIClientSocketFactory - host:
lx4-schernov.nn.five9.com, effective host: 0.0.0.0, port: 47952
source:
public Socket createSocket(String host, final int port) throws IOException
176 {
...
181 final String effectiveHost = hostName != null ? hostName : host;
While creating factory it should be checked, that host name is not broadcast or localhost
address, to make client's locatorUri mandatory for such cases.
Client source code:
String address = "remote.host.com";
Properties props = new Properties();
props.put(InitialContext.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL, "jnp://" + address +
":1099");
props.put(InitialContext.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
InitialContext context = new InitialContext(props);
Object tmp = context.lookup("remote/subsystem/Object");
ObjectInf object = (ObjectInf) tmp;
object.doJob(); // here exception it thrown
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira