2017-12-18 10 views
0

から起動します。コードは、サーバーとクライアントが同じマシン上にある場合に機能します。別のマシンでサーバーコードを実行すると、以下の例外が発生します。リモート接続はJMXで動作しません。メインメソッド

[WARNING] 
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
    java.net.ConnectException: Operation timed out (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:129) 
    at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source) 
    at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2430) 
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:308) 
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270) 
    at Client.main(Client.java:70) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282) 
    at java.lang.Thread.run(Thread.java:748) 
Caused by: java.net.ConnectException: Operation timed out (Connection timed out) 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at java.net.Socket.connect(Socket.java:538) 
    at java.net.Socket.<init>(Socket.java:434) 
    at java.net.Socket.<init>(Socket.java:211) 
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) 
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148) 
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613) 
    ... 14 more 

それは例外は、クライアントが本当に下回るてJMXServiceURLを使用したときに127.0.1.1が接続を拒否したと言うことを不審だ:私は-Dcom.sun.management.jmxremoteを使用してアプリケーションを起動した場合

service:jmx:rmi:///jndi/rmi://10.10.173.196:8474/jmxrmi 

。*設定では、クライアントはリモート接続に問題はありません。私はまた、サーバー上でてJMXServiceURLを使用

import javax.management.MBeanServer; 
import javax.management.remote.JMXConnectorServer; 
import javax.management.remote.JMXConnectorServerFactory; 
import javax.management.remote.JMXServiceURL; 

import java.lang.management.ManagementFactory; 
import java.rmi.registry.LocateRegistry; 
import java.util.*; 

public class Server { 

    public static void main(String[] args) throws Exception { 
     if(args.length != 2) { 
      throw new IllegalArgumentException("Server <port> <path suffix>" 
          + "\nservice:jmx:rmi://0.0.0.0:<port>/jndi/rmi://0.0.0.0:<port>/<pathsuffix>" 
          ); 
     } 

     int port = Integer.parseInt(args[0]); 
     String pathSuffix = args[1]; 

     LocateRegistry.createRegistry(port); 

     MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
     JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://0.0.0.0:" 
         + port + "/jndi/rmi://0.0.0.0:" + port + "/" + pathSuffix); 

     Map<String, Object> envConf = new HashMap<>(); 
     envConf.put("jmx.remote.x.password.file", "password.properties"); 
     envConf.put("jmx.remote.x.access.file", "access.properties"); 

     JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, envConf, mbs); 
     cs.start(); 

     while(true) { 
      Thread.sleep(1000); 
     } 
    } 

} 

コードを下に貼り付けられます

service:jmx:rmi:///jndi/rmi://0.0.0.0:<port>/jmxrmi 

答えて

0

https://stackoverflow.com/a/11654322/1810962は、etc/hostsファイルが正しく設定されている必要があり/ことを言及しています。

hostname -i 
127.0.1.1 
:動作していないマシンで

hostname -i 
10.10.172.72 10.10.172.72 

:JMXは私が持っている機能することをマシン上で

関連する問題