背景:
局域网内,有两台linux系统,一台windows系统
linux 服务器A :192.168.1.11,防火墙已经关闭
linux 普通机B:
执行过程:
A上装了jboss应用服务器,现在要在 B 上获取此A的数据源(已经配好 <local-tx-datasource>******* </local-tx-datasource>),
将客户端调用程序打成jar包,在windows下执行没有任何错误,在B下调用报错如下:
Caused by: java.rmi.ConnectException: Connection refused to host: 192.168.1.11; nested exception is:
java.net.ConnectException: Connection timed out
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:128)
at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source)
at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:133)
at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:241)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:181)
at org.jboss.proxy.ClientMethodInterceptor.invoke(ClientMethodInterceptor.java:74)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:101)
... 27 more
客户端程序如下:
try {
Context ctx;
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
p.put(Context.PROVIDER_URL, "jnp://192.168.1.11:1099");
ctx = new InitialContext(p);
dataSource = (javax.sql.DataSource) ctx.lookup("OracleDataSource");
System.out.println(dataSource);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
------解决思路----------------------
在linux A服务器里输入hostname -i,看看输出的是不是192.168.1.11,如果不是,就要设置/etc/hosts了。
------解决思路----------------------
在windows下请求的192.168.1.11怎么可以的?之前ip不是127.0.0.1吗
------解决思路----------------------
RMI Object专用端口,是1099吗还是?
刚才午休的时候,还在想,如果实在不行,找你们安装服务器的同事,把网络重新设置下。