2013-05-02 2 views
2

Я пытаюсь подключиться к серверу MBean. Мне нужно написать приложение JMX Client. Это код, используемый для клиентского приложения. Но у меня есть исключение, связанные с этимСоздание клиента коннектора RMI

Не удалось получить RMIServer окурок: javax.naming.ServiceUnavailableException [Root исключение java.rmi.ConnectException: Соединение отказался принять: локальный; Вложенное исключение:

Может кто-нибудь помочь мне исправить это.

import java.io.IOException; 
import javax.management.MBeanServerConnection; 
import javax.management.MBeanServerInvocationHandler; 
import javax.management.MalformedObjectNameException; 
import javax.management.ObjectName; 
import javax.management.remote.JMXConnector; 
import javax.management.remote.JMXConnectorFactory; 
import javax.management.remote.JMXServiceURL; 


public class SystemConfigClient { 

    public static final String HOST = "localhost"; 
    public static final String PORT = "1099"; 


    public static void main(String[] args) throws IOException, MalformedObjectNameException { 
     JMXServiceURL url =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + HOST + ":" +PORT+ "/jmxrmi"); 

     JMXConnector jmxConnector = JMXConnectorFactory.connect(url); 
     MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection(); 
     //ObjectName should be same as your MBean name 
     ObjectName mbeanName = new ObjectName("ifs.demo1.jmx:type=SystemConfig"); 

     //Get MBean proxy instance that will be used to make calls to registered MBean 
     SystemConfigMBean mbeanProxy = 
      (SystemConfigMBean) MBeanServerInvocationHandler.newProxyInstance(
       mbeanServerConnection, mbeanName, SystemConfigMBean.class, true); 

     //let's make some calls to mbean through proxy and see the results. 
     System.out.println("Current SystemConfig::" + mbeanProxy.doConfig()); 

     mbeanProxy.setSchemaName("NewSchema"); 
     mbeanProxy.setThreadCount(5); 

     System.out.println("New SystemConfig::" + mbeanProxy.doConfig()); 

     //let's terminate the mbean by making thread count as 0 
     mbeanProxy.setThreadCount(0); 

     //close the connection 
     jmxConnector.close(); 
    } 

} 

Я запустил этот код со следующими аргументами.

Dcom.sun.management.jmxremote Dcom.sun.management.jmxremote.port = 1099 Dcom.sun.management.jmxremote.authenticate = ложь Dcom.sun.management.jmxremote.ssl = ложь

но я получил исключение

исключение в потоке "основной" java.io.IOException: Не удалось получить RMIServer окурок: javax.naming.ServiceUnavailableException [Root исключение яв a.rmi.ConnectException: подключение отказалось от хоста: localhost; вложенное исключение: java.net.ConnectException: Connection отказался: подключение] на javax.management.remote.rmi.RMIConnector.connect (RMIConnector.java:338) в javax.management.remote.JMXConnectorFactory.connect (JMXConnectorFactory .java: 248) на javax.management.remote.JMXConnectorFactory.connect (JMXConnectorFactory.java:207) в com.demo1.jmx.SystemConfigClient.main (SystemConfigClient.java:29) вызваны следующими причинами: javax.naming. ServiceUnavailableException [Исключение корня: java.rmi.ConnectException: подключение отказалось от хоста: localhost; вложенного исключения: java.net.ConnectException: Соединение отклонено: подключение] в com.sun.jndi.rmi.registry.RegistryContext.lookup (RegistryContext.java:101) на com.sun.jndi.toolkit. url.GenericURLContext.lookup (GenericURLContext.java:185) на javax.naming.InitialContext.lookup (InitialContext.java:392) при javax.management.remote.rmi.RMIConnector.findRMIServerJNDI (RMIConnector.java:1886) на javax.management.remote.rmi.RMIConnector.findRMIServer (RMIConnector.java:1856) на javax.management.remote.rmi.RMIConnector.connect (RMIConnector.java:257) ... более 3 Вызванный: Java .rmi.ConnectException: соединение отклонено для размещения: localhost; вложенное исключение: java.net.ConnectException: Соединение отказано: подключитесь к sun.rmi.transport.tcp.TCPEndpoint.newSocket (TCPEndpoint.java:601) в sun.rmi.transport.tcp.TCPChannel.createConnection (TCPChannel .java: 198) на sun.rmi.transport.tcp.TCPChannel.newConnection (TCPChannel.java:184) в sun.rmi.server.UnicastRef.newCall (UnicastRef.java:322) в sun.rmi. registry.RegistryImpl_Stub.lookup (Неизвестный источник) в com.sun.jndi.rmi.registry.RegistryContext.lookup (RegistryContext.java:97) ... 8 more Причиненный: java.net.ConnectException: Соединение отклонено: подключения на java.net.PlainSocketImpl.socketConnect (Native Method) в java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:333) в java.net.PlainSocketImpl.connectToAddress (PlainSocketImpl.java:195) на java.net.PlainSocketImpl.connect (PlainSocketImpl.java:182) на java.net.SocksSocketImpl.connect (SocksSocketImpl.java:366) на java.net.Socket.connect (Socket.java:529) на java.net.Socket.connect (Socket.java:478) на java.net.Socket. (Socket.java:375) на java.net.Socket. (Socket.java:189) на sun.rmi .transport.proxy.RMIDirectSocketFactory.createSocket (RMIDirectSocketFactory.java:22) по адресу sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket (RMIMasterSocketFactory.java:128) at sun.rmi.transport.tcp.TCPEndpoint.newSocket (TCPEndpoint.java:595) ... 13 еще Java Результат: 1

+0

Какая версия jboss? – Nicholas

ответ

2

Вы заметили, что используете аргументы виртуальной машины с «D», а не «-D»? Или это просто опечатка? Правильно было бы:

-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
Смежные вопросы