Warum bin ich immer die Fehlermeldung "Verbindung abgelehnt", mit JMX
Ich kann keine Verbindung zum JMX-Objekt. Hier ist, wie ich das erstellen eines JMX-Objekt:
public static void main(String... args) {
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
try {
ObjectName name = new ObjectName("org.javasimon.jmx.example:type=Simon");
if (mbs.isRegistered(name)) {
mbs.unregisterMBean(name);
}
SimonManagerMXBean simonManagerMXBean = new SimonManagerMXBeanImpl(SimonManager.manager());
mbs.registerMBean(simonManagerMXBean, name);
System.out.println("SimonManagerMXBean registerd under name: "+name);
} catch (JMException e) {
System.out.println("SimonManagerMXBean registration failed!\n"+e);
}
while (true) {
//waiting for connections
}
}
Dies ist ein code für die Verbindung zum remote-JMX-Objekt:
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://127.0.0.1:9999/jndi/rmi://127.0.0.1:1099/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
SimonManagerMXBean simonManagerMXBean = JMX.newMXBeanProxy(mbsc, new ObjectName("org.javasimon.jmx.example:type=Simon"), SimonManagerMXBean.class);
return simonManagerMXBean;
Leider erhalte ich die folgende Fehlermeldung:
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect]
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
at my.code.RemoteSimonManagerFactoryImpl.createSimonManager(RemoteSimonManagerFactoryImpl.java:24)
at my.code.Demo.main(DemoAggregation.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect]
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886)
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:255)
... 9 more
Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
java.net.ConnectException: Connection refused: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
... 14 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
... 19 more
Wenn ich versuche eine Verbindung zu meinem JMX-server (als lokaler Prozess) mit "jconsole" - Dienstprogramm, bekomme ich als erstes "ConnectionFailedSSL1" Fehler, aber wenn ich auf "Unsicher" - button in der error-form, die ich erfolgreich eine Verbindung herstellen.
Server und client auf dem gleichen computer.
Ich bin mit Windows 7 x64. Windows-firewall ist deaktiviert.
InformationsquelleAutor Ivan Mushketyk | 2014-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich sind Sie nicht läuft Ihr server mit der richtigen JVM-Parameter. Jconsole verwendet einen anderen Mechanismus zu finden und zu verbinden, um lokale Prozesse. Ihrem client-code versucht, auf die Verwendung von TCP/IP-Verbindung zu Ihrem server. Um dies auf, müssen Sie etwas wie das folgende in der Java-Befehl auf Ihrem server:
Finden Sie unter: So aktivieren Sie JMX auf meinem JVM für den Zugang mit jconsole?
Als ein beiseite, möchten Sie vielleicht zu prüfen, mit meinem
SimpleJMX
- Bibliothek was bedeutet all dieser code für Sie. Es enthält eine JMX-client-code als auch.Die erste Zeile lautet "nicht läuft Ihr server mit der richtigen JVM-Parameter" @IvanMushketyk.
Es funktioniert. Danke. Die richtige port-Nummer 1099.
InformationsquelleAutor Gray
Habe ich den gleichen Fehler. In meinem Fall war ich mit einer @PostConstruct-annotation und die Methode wurde versucht, die RMI-Verbindung vor dem Frühling eine chance hatte, um die Verbindung zu konfigurieren.
Es nicht, am Ende wird alles, was falsch mit der Konfiguration der Verbindung, nur dass ich versehentlich versucht, es zu benutzen, bevor es fertig war. Hoffe dies kann jemand helfen.
InformationsquelleAutor Ryan D
Habe ich zu verwalten, führen Sie Tomcat mit JMX (Tomcat 8, Windows) durch:
hinzufügen
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
ausführen mit admin-Berechtigungen
InformationsquelleAutor GKislin
überprüfen Sie Ihre tomcat-bin-Ordner für catalina.sh Datei. öffnen Sie es und finden java-server-Parameter. hinzufügen thoose folgenden zu $JAVA_OPTS auf jeder Linie, die Sie wollen.
sind Sie fertig!
InformationsquelleAutor Kıvılcım