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:
Dann gibt es noch die Methode sich aus einem MBeanHome Objekt ein MBeanServer Object zurückgeben zu lassen.
Ich frage alle MBeanNamen ab:
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...
Beim Ausführen wird durch den letzten Code-Teil folgende Exception ausgelöst:
Ich habe jedoch keine Idee, woran das liegen könnte.
Muss im WebLogic 8.1 erst wieder JMX aktiviert werden?
Gruß, Bastian
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());
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