当前位置: 代码迷 >> J2EE >> linux下,jndi 远道获取dataSource 报错,windows下测试没错
  详细解决方案

linux下,jndi 远道获取dataSource 报错,windows下测试没错

热度:299   发布时间:2016-04-17 23:40:18.0
linux下,jndi 远程获取dataSource 报错,windows下测试没错
本帖最后由 l_ji_l 于 2014-09-11 11:22:01 编辑
背景
    局域网内,有两台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吗
------解决思路----------------------
引用:
找到问题了,原来linux服务器A上有个RMI Object专用端口没有开,谢谢大家的回复。但不知道为什么windows却可以连?

RMI Object专用端口,是1099吗还是?
刚才午休的时候,还在想,如果实在不行,找你们安装服务器的同事,把网络重新设置下。
  相关解决方案