JMS服务器JBoss4.2装在RHEL6.4上(ip: 10.111.3.123),从远程windows平台发JMS消息,如果配置不当,经常会碰到如下exception:
[java] Exception in thread "main" javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
[java] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:780)
[java] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
[java] at javax.naming.InitialContext.lookup(Unknown Source)
[java] at JMSClient.<init>(Unknown Source)
[java] at JMSClient.main(Unknown Source)
[java] Caused by: java.rmi.NoSuchObjectException: no such object in table
[java] at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
[java] at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
[java] at sun.rmi.server.UnicastRef.invoke(Unknown Source)
[java] at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
[java] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:675)
[java] ... 4 more
[java] Java Result: 1
解决方案是在linux机器上修改hostname配置文件/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.111.1.123 localhost.localdomain
上面hostname不要用localhost,会和windows的hosts文件中的localhost冲突。
在windows机器上修改C:\WINDOWS\system32\drivers\etc\hosts文件,加入
10.111.1.123 localhost.localdomain
问题即可解决。