Une JVM avec JNI pour plusieurs appli Windows

Le
Stephane
Bonjour,

Je développe une grosse application C qui effectue des appels de méthodes Java
via JNI. Cette application est constituée de plusieurs programmes individuels
qui sont capables de s'échanger des données au moyen d'une zone de mémoire
partagée. Les appels JNI fonctionnent parfaitement bien à partir du moment ou
chaque programme dispose de sa propre JVM.

A raison d'une JVM par programme, je tourne au final avec 5 ou 6 JVM ce qui est
plus que lourd (minimum 15 à 20Mo par JVM).

J'essaye d'utiliser la zone de mémoire partagée des applications pour
fonctionner avec la même JVM. En affichant l'adresse de cette JVM, tout semble
bien fonctionner dans les différentes applications: c'est le même pointeur de
JVM.

J'essaye d'utiliser la fonction JNI AttachCurrentThread pour rattacher chaque
programme (hormis le premier appelé qui créé la JVM) à la même JVM. Voici ce que
j'obtiens alors (JVM classic):

*** panic: trying to attach a thread to an uninitialized VM

Est-ce que ce que j'essaye de faire est possible ? Si oui, comment ?

Voici la configuration:
- plateforme Windows NT 4.0 SP6,
- JDK 1.3 (JNI 1.2),
- testé avec la JVM classic et la hotspot.

Merci pour votre aide sur ce point très gênant.

Stéphane

--
Utilisez notre serveur de news 'news.foorum.com' depuis n'importe ou.
Plus d'info sur : http://nnrpinfo.go.foorum.fr/
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
damien gautherin
Le #648452

Est-ce que ce que j'essaye de faire est possible ? Si oui, comment ?


Bonjour,

Mon humble avis, un seul process pour instancier ta JVM et centraliser
les appels JNI, les autres process communiquant avec lui par une methode
de ton choix ( memoire partage, socket....).

Sinon si tu restes sur l'utilisation d'une seule JVM pour tes process voir:

http://www.jcp.org/en/jsr/detail?id1
http://chives.sunsite.dk/
http://www.javagroup.org/echidna

Bon courage dans cette voie surtout avec Jni ;-)

Damien

Publicité
Poster une réponse
Anonyme