Weblogic 8.1 und JMX

Sapperlot

Mitglied
Hallo.
Ich habe schon wieder diverse Probleme damit einen App-Server über JMX anzusprechen und dessen MBeans abzufragen.
Nach längerer Recherche habe ich herausgefunden, dass man Weblogic 9.1 mit folgender URL über die JConsole und Analog auch über eine MBeanServer-Verbindung in einem Programm erreicht:
service:jmx:rmi:///jndi/iiop://localhost:7001/weblogic.management.mbeanservers.runtime
Funktoniert, nachdem man in der AdminConsole IIOP aktiviert hat und im Startscript des Servers den -XManagement Parameter übergibt um JRockit zu aktivieren (wenn ich das richtig verstanden habe)

Weiter habe ich gelesen, dass das mit WebLogic 8.1 so nicht funktioniert!
Man solle die MBeanHome Klasse verwenden.
http://edocs.bea.com/wls/docs70/jmx/basics.html#1124879
Dieses Beispiel beendet sich bei mir mit folgendem Fehler:
Code:
weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception

Dann gibt es noch die Methode sich aus einem MBeanHome Objekt ein MBeanServer Object zurückgeben zu lassen.

Ich frage alle MBeanNamen ab:
Code:
Set allMBeans = homeServer.queryNames(null, null);
Iterator iter = allMBeans.iterator();
while(iter.hasNext())
                   System.out.println("Name: "+(ObjectName)iter.next());
Als Ausgabe kommt unter anderem Folgender String:
medrec:ServerRuntime=MedRecServer,Name=MedRecServer_MedRecServer_console_weblogic.management.console.webapp._domain.__wtcremotetuxdom_226,Type=ServletRuntime,Location=MedRecServer,ApplicationRuntime=MedRecServer_console,WebAppComponentRuntime=MedRecServer_MedRecServer_console_console

Mit diesem erzeuge ich dann explizit ein ObjectName...
Code:
ObjectName obj = new ObjectName("medrec:ServerRuntime=MedRecServer,Name=MedRecServer_MedRecServer_console_weblogic.management.console.webapp._common.__reload_frameset_234,Type=ServletRuntime,Location=MedRecServer,ApplicationRuntime=MedRecServer_console,WebAppComponentRuntime=MedRecServer_MedRecServer_console_console");                MBeanInfo info = homeServer.getMBeanInfo(obj);

Beim Ausführen wird durch den letzten Code-Teil folgende Exception ausgelöst:
Code:
 java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848
java.io.InvalidClassException: javax.management.MBeanAttributeInfo; local class incompatible: stream classdesc serialVersionUID = 7043855487133450673, local class serialVersionUID = 8644704819898565848
	at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
	at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at weblogic.rjvm.ClassTableEntry.readExternal(ClassTableEntry.java:36)
	at java.io.ObjectInputStream.readExternalData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at weblogic.rjvm.InboundMsgAbbrev.readObject(InboundMsgAbbrev.java:65)
	at weblogic.rjvm.InboundMsgAbbrev.read(InboundMsgAbbrev.java:37)
	at weblogic.rjvm.MsgAbbrevJVMConnection.readMsgAbbrevs(MsgAbbrevJVMConnection.java:214)
	at weblogic.rjvm.MsgAbbrevInputStream.init(MsgAbbrevInputStream.java:169)
	at weblogic.rjvm.MsgAbbrevJVMConnection.dispatch(MsgAbbrevJVMConnection.java:424)
	at weblogic.rjvm.t3.MuxableSocketT3.dispatch(MuxableSocketT3.java:362)
	at weblogic.socket.AbstractMuxableSocket.dispatch(AbstractMuxableSocket.java:359)
	at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:851)
	at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:787)
	at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:283)
	at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)
	at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
> 
weblogic.rmi.extensions.RemoteRuntimeException: Unexpected Exception


Ich habe jedoch keine Idee, woran das liegen könnte.
Muss im WebLogic 8.1 erst wieder JMX aktiviert werden?

Gruß, Bastian
 
Hallo,
ich habe die Lösung jetzt gefunden.
Es lag daran, dass ich mit meinem java5 kompilliert und ausgeführt habe.
Bea Weblogic besitzt sein eigenes Java.
-> Java Versionen stimmten somit nicht überein.
Verwende jetzt das Bea-Java um meine Anwendung zu builden und auszuführen.
Gruß, bastian
 
Zurück