Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / October 2006

Tip: Looking for answers? Try searching our database.

jni problem - destroy jvm and rebuild it

Thread view: 
Bert Boehne - 05 Oct 2006 10:12 GMT
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
Chris Uppal - 05 Oct 2006 12:29 GMT
> 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.

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

> 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?

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
Manfred Rosenboom - 05 Oct 2006 13:56 GMT
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
Bert Boehne - 05 Oct 2006 14:35 GMT
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
Chris Uppal - 05 Oct 2006 14:39 GMT
> 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 ;-)

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


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.