I have just installed jdk1.3 rc 1 that uses hotspot as a virtual machine. The problem that you encounter is related to a feature in Jonathan that allows you to change the scheduler used by the infrastructure, and to use another mechanism for synchronizing monitors than the "synchronized" blocks. In the Jonathan (and Jeremie) code, you should not see :
 
synchronized (lck) {
    ...

}


but rather
 

try {
    scheduler.lock(lck);
    ...
} finally {
    scheduler.unlock(lck);
}
where scheduler is a reference to a Scheduler object implementing the lock and unlock operations.

The default scheduler of course implements the standard "synchronized" semantics. To do that efficiently, a class file has been written directly in bytecode, to implement the default lock and unlock methods. The implementation of the lock method is essentially:

aload_1         // getting the method argument
monitorenter // getting the lock on the object reference
return

The code for unlock is likewise:

aload_1
monitorexit
return

This, to my knowledge, is perfectly correct bytecode, and is accepted by all the virtual machines I have tested, except hotspot: hotspot fails on the unlock method with an IllegalMonitorState exception. This exception then triggers the jonathan.apis.kernel.InternalException you mention.

Since, I am not sure the Sun people will look at this problem rapidly, the only practical solution I see is the use of a pre-processor, that will avoid the use of our home-made class file when the java monitors are used.

Bruno
 
 
 

"Halas, Miroslav" wrote:

We have tried Jonas with Java Hotspot Server VM 2.0 rc1.
Jonas running on RMI works without any problem
Jonas running on Jeremie doesn't work. Here is the exception:

Start Jeremie Registry at port 12340...
Exception in thread "main" java.lang.ExceptionInInitializerError:
org.objectweb.
jonathan.apis.kernel.InternalException:
java.lang.reflect.InvocationTargetExcept
ion
        at
org.objectweb.jeremie.libs.contexts.soa.UnicastRemoteObject.<clinit>(
UnicastRemoteObject.java:76)
        at
org.objectweb.jeremie.libs.services.registry.JRMIRegistry.main(JRMIRe
gistry.java:223)
        at
aqp.eqplite.server.eQPServer.startJeremieRegistry(eQPServer.java:199)

        at aqp.eqplite.server.eQPServer.main(eQPServer.java:380)

Miroslav Halas
Software Engineer
Compuware Corp.
15305 Dallas Parkway
Suite 900
Addison, TX 75001
phone 9720-960-0960 x 1333
fax 972-960-8489

----
To unsubscribe, send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe jonas-users".
For general help, send email to [EMAIL PROTECTED] and
include in the body of the message "help".

--
*******************************************************************
Bruno Dumant
DTL/ASR
france telecom R&D
38-40 rue du général Leclerc
92794 Issy Moulineaux Cedex 9
FRANCE

mailto:[EMAIL PROTECTED]
tel: +33 1 45 29 46 03
fax: +33 1 45 29 66 04
*******************************************************************
 

Reply via email to