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/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
damien gautherin
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:
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:
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: