jni problem - destroy jvm and rebuild it

jni problem - destroy jvm and rebuild it

Post by Bert Boehn » Fri, 06 Oct 2006 18:12:29


hi!
i'm busy with jni. i want to start a jvm from my c++ code and call a
java method. that's working so far. but i have the problem that it has
to be possible to destroy the jvm and create afterwards again. i can't
just create the jvm in the main program and let it run until the main
program ends. that's because i'm writing a plug in to an existing program...
i downloaded the source from sun where i found the file jni.cpp. there
are the functions JNI_CreateJavaVM, jni_DestroyJavaVM and so on. also
there is a global variable:

volatile jint num_vm_created = 0; // number of VMs created so far

this variable will be checked at a call of JNI_CreateJavaVM. would it be
possible to set this variable to zero after calling jni_DestroyVM
(jni_DestroyJavaVM doesn't do that)i could create a jvm again.

now, here is my question: does someone know how to reach that variable
to set it to 0 again? or does someone have another idea to do the job?

greats,

bert
 
 
 

jni problem - destroy jvm and rebuild it

Post by Chris Uppa » Fri, 06 Oct 2006 20:29:27


Then, I'm afraid, you are out of luck. It can't be done. (And yes, I agree
that sucks.)



First you should find /why/ Sun have that variable, and work out how to fix
whatever technical problem it is that the variable is protecting against.

-- chris

 
 
 

jni problem - destroy jvm and rebuild it

Post by Manfred Ro » Fri, 06 Oct 2006 21:56:53

Hi Bert,

At least up to JDK 1.4.2 this isn't possible!
You have in all JDK versions the function jni_DestroyVM, but you can't
create a new instance of the JVM in the same process after calling this
function :-((

If my memory serves me well, this should be possible with the
Java 5 JVM, but I haven't give it a try and, to be honest,
I doubt that it is really working in Java 5 until I have seen
it working on my machine ;-)

Best,
Manfred
 
 
 

jni problem - destroy jvm and rebuild it

Post by Bert Boehn » Fri, 06 Oct 2006 22:35:20

hi Manfred!

i'm using jdk 1.5.0_07. so i think it's still not fixed. :(
i think there will be a very big party when this becomes possible!

greats,

bert
 
 
 

jni problem - destroy jvm and rebuild it

Post by Chris Uppa » Fri, 06 Oct 2006 22:39:58


Just tried it with 1.5, and it still fails.

If this is something that they are thinking of fixing, then that is excellent
news -- but like you, I'll believe it only when I see it (if then).

-- chris