JBoss über service:jmx:rmi... verbinden?

Sapperlot

Mitglied
Hallo,
ich möchte auf meinen JBoss Server über die JConsole auf die MBeans zugreifen, bzw. genereller gesagt:
Ich möchte JBoss über service:jmx:rmi oder ähnlich erreichen. Ähnlich der Syntax.
service:jmx:rmi://localhost/jndi/rmi://localhost:1090/jmxconnector

ich kann in der JConsole eine LocalConnection mit dem JBoss aufbauen, und kann auch aus meiner Java Application über

InitialContext ic = new InitialContext();
RMIAdaptor server = (RMIAdaptor) ic.lookup("jmx/invoker/RMIAdaptor");
....
auf Jboss zugreifen.
Ich möchte jedoch auf folgende Weise verbinden.

final String jmxServiceURL = "service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi";
System.out.println("Connecting to server...");
MBeanServerConnection jmxServerConnection = JMXConnectorFactory.connect(
new JMXServiceURL(jmxServiceURL), null).getMBeanServerConnection();


das funktoniert jedoch nicht.
Kann mir jemand weiterhelfen?
Muss diese Art der RMI-Verbindung erst im JBoss aktiviert werden? Wenn ja wie?
Stimmt vielleicht meine service:jmx:rmi Syntax nicht?

Gruß, bastian
 
Och neeee. Ich war wieder so nah dran an der Lösung...
Scheint zu funktionieren...
Danke
Um jetzt aber noch einen Lerneffekt zu haben:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

Die ersten beiden Zeilen leuchten mir ein, die dritte habe ich immer weggelassen, weil ich nie wusste für was die da steht.
Kannst Du mir erklären was diese Zeile bewirkt, bzw. warum es nicht funktoiniert, wenn man diese weg lässt?

Weiter hat mich auch verwirrt, dass in vielen Tutorials nach dieser dritten Zeile auch noch ein Klassenname stand. Jetzt im Nachhinein nehme ich an, dass es sich hierbei aber um die main-Klasse der Anwendung die ausgeführt werden sollte handelte und das Beispiel das ich gesehen habe der Aufruf der Klasse per Command-Line war.
java -D.... -Dcom.sun.management.jmxremote.ssl=false myClass

Danke nochmal auf jeden Fall.

Gruß, Bastian
 
Hallo!

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
Mit dieser Zeile sagst du dem JMX Subsystem dass es zur Erzeugung der RMI Verbindung eine ganz normale SocketFactory und keine SSLSocketFactory benutzen soll. Wuerdest du dieses Flag nicht mitgeben koenntest du dich nur Verbinden, wenn du die SSL Umgebung (Trust Store + entsprechende SSL Zertifikate) Konfiguriert haettest (genau das Problem hatte ich gestern...). In Produktiv Umgebungen sollte man natuerlich SSL einsetzen...

Gruss Tom
 
Hallo!

Der Websphere AS bietet eine Administrationsschnittstelle zum Zugriff auf den Server (AdminClient):
http://www-128.ibm.com/developerworks/websphere/techjournal/0302_cundiff/cundiff.html
http://www-128.ibm.com/developerworks/websphere/techjournal/0402_qiao/0402_qiao.html
Mit diesem kannst du auch auf den Internen MBeanServer des Websphere zugreiffen.
Wie die entsprechende JMX Service URL ausschaut, und welche Websphere spezifischen Sessings du setzten musst kann ich dir im Moment mangels websphere leider nicht sagen... vielleicht lade ich mir heute Abend mal die Evaluation Version...

Gruss Tom
 
Hallo,
Danke, aber leider hilft mir das nicht weiter.
Mir geht es tatsächlich nur um die JMX Service URL und die Konfigurationen am WeSphere...
Falls ich was herausfinde, werde ich es posten.

Gruß, bastian
 
Hallo!

Also zumindest komme ich an den (kleinen/kostenlosen (*)/geronimo basierten) WebSphere Application Server Community Edition, Version 1.0.1.1 2006-04-10 heran:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

/**
 * @author Tom
 * 
 */
public class JMXWebsphereInspector {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        Map env = new HashMap();
        String[] credentials = new String[] { "system", "manager" }; //default
        env.put("jmx.remote.credentials", credentials);

        MBeanServerConnection connection = JMXConnectorFactory
                .connect(
                        new JMXServiceURL(
                                "service:jmx:rmi:///jndi/rmi://localhost:1099/JMXConnector"),
                        env)
                .getMBeanServerConnection();

        System.out.println(Arrays.toString(connection.getDomains()));
    }
}

Ausgabe:
Code:
[openejb, geronimo.boot, geronimo, geronimo.server, geronimo.config, geronimo.maven, geronimo.remoting, ]

Ich schau mir die Evaluation von Websphere (5.1/6.0) heute Abend mal an...

(*)http://www-128.ibm.com/developerworks/downloads/ws/wasce/?S_TACT=105AGX10&S_CMP=WESDL

Gruss Tom
 
Zurück