Java RMI Logging

Lebensraum:

Mit dem Parameter -Djava.rmi.server.logCalls=true werden die RMI Aufrufe zwischen Client und Server nach System.err geloggt. Eine Beschreibung findet man unter http://download.oracle.com/javase/1.4.2/docs/guide/rmi/javarmiproperties.html. Folgedende Ausgaben werden bspw. erzeugt:

19.01.2011 20:04:16 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(1)-192.168.2.1: [192.168.2.1: sun.rmi.registry.RegistryImpl[0:0:0, 0]: void bind(java.lang.String, java.rmi.Remote)]

19.01.2011 20:04:16 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(2)-192.168.2.1: [192.168.2.1: sun.rmi.transport.DGCImpl[0:0:0, 2]: java.rmi.dgc.Lease dirty(java.rmi.server.ObjID[], long, java.rmi.dgc.Lease)]

19.01.2011 20:06:46 sun.rmi.server.UnicastServerRef logCall
FEINER: RMI TCP Connection(5)-192.168.2.1: [192.168.2.1: my.rmitest.RMITestObject[3fd2b2b8:12d9e290bab:-5e98, -5339502066124191275]: public abstract int my.rmitest.RMITestObjectInterface.number() throws java.rmi.RemoteException]

Auf der Seite http://download.oracle.com/javase/1.4.2/docs/guide/rmi/sunrmiproperties.html sind noch weitere Einstellmöglichkeiten für RMI und Logging beschrieben. Dazu gibt es allerdings eine Warnung, dass die Properties nicht in jeder VM vorhanden sind bzw. gegebenenfalls wieder entfernt werden. Bei einem Test mit Java SDK 1.6.0_18-b07 ergaben die Parameter
-Dsun.rmi.server.logLevel=VERBOSE -Dsun.rmi.log.debug=true foglende Ausgaben:

19.01.2011 20:09:54 sun.rmi.server.Util computeMethodHash
FEINER: RMI TCP Connection(4)-192.168.2.1: string used for method hash: "isValid()Z"

19.01.2011 20:19:17 sun.rmi.server.UnicastRef invoke
FEINER: MyThread0: method: public abstract void my.rmitest.RMITestObject.ping() throws java.rmi.RemoteException
19.01.2011 20:19:17 sun.rmi.server.UnicastRef invoke
FEINER: MyThread0: opnum = 5866401369815527589
19.01.2011 20:19:17 sun.rmi.server.UnicastRef invoke
FEIN: MyThread0: free connection (reuse = true)
19.01.2011 20:19:18 sun.rmi.server.UnicastRef newCall
FEIN: RMI RenewClean-[192.168.2.1:2948]: get connection
19.01.2011 20:19:18 sun.rmi.server.UnicastRef newCall
FEINER: RMI RenewClean-[192.168.2.1:2948]: create call context
19.01.2011 20:19:18 sun.rmi.server.UnicastRef invoke
FEINER: RMI RenewClean-[192.168.2.1:2948]: execute call
19.01.2011 20:19:18 sun.rmi.server.UnicastRef done
FEIN: RMI RenewClean-[192.168.2.1:2948]: free connection (reuse = true)