Re: JNI Loading a Library 2 times
hswerdfe wrote On 05/07/07 15:55,:
Eric Sosman wrote:
hswerdfe wrote On 05/07/07 15:16,:
[... has a library of Fortran code that models one Tank;
wants to load the library several times to model several
Tanks ...]
Sounds like you should turn the Fortran code into a
program rather than into a DLL. Run the program as many
times as you like, and communicate with it via input and
output streams (or other IPC mechanisms, if you prefer).
I am not so sure I want this.
I want to be able to communicate with the Model in a dynamic way.
I am not sure I/O streams would be efficient.
(Shrug.) Which is more efficient: Something that might
be slow, or something that doesn't work?
I thought the JNI was the best way to go.
I am open to other suggestions if you have some.
At any rate, the conversion to DLL is mostly already done.
and all the required access methods exist.
At this point I need a way to make several Instances of it.
You may have wasted your effort. Well, perhaps not
entirely wasted: Maybe you can attach the DLL to several
independent JVM instances, each handling one Tank, and use
RMI to control those Tanks from one "master" JVM. It's
really just the separate-program idea again, but using a
different communication method.
But getting one DLL attached to the same program
multiple times? And keeping all the subroutine linkages
straight, in some magical instance-specific way? I think
you're out of luck, unless you're going to write your own
native DLL loader ;-)
The Fortran code as you describe it implements what
amounts to a singleton. That's not what you'd like, but
that's the way it is. You can try to de-singularize the
singleton, or you can accept its singular nature and find
other ways to work with it.
(By the way: I don't mind receiving E-mail, but it's
confusing when the same message arrives on two separate
channels. Please send E-mail *or* post to Usenet, but
not both. Thank you.)
--
Eric.Sosman@sun.com