Utilisation de JNI dans une appli web - Java - Programmation
Marsh Posté le 05-06-2003 à 14:24:02
Si tu encapsules les appels a ta lib C++ dans un singleton et que tu synchronise les methodes ?
Marsh Posté le 05-06-2003 à 14:30:47
Ben, je synchroniserai les accès JNI seulement si c'est obligatoire (qu'on perd le multi threading), parce que, niveau perfs, ça risque d'être une sacrée perte si je ne permet l'accès au code JNI qu'au un seul client à la fois!
Marsh Posté le 05-06-2003 à 14:48:32
El_gringo a écrit : Je me pose la question suivante : |
tu te trompes, rien ne garanti qu'un client = un thread
(n'oublions que web=deconnecté)
ton conteneur gere (eventuellement) plusieurs threads mais le meme peux servir pour plusieurs clients, et un meme client (en plusieurs requetes) peut utiliser different threads, je crois...
sinon pour le pb specifique à jni, je ne sais pas, mais ce n'est pas parce que la lib n'est chargée qu'une seule qu'elle ne peut pas etre utilisée par different threads, à priori !?
Marsh Posté le 05-06-2003 à 14:56:07
the real moins moins a écrit : |
Je pense pas, non. Mais ce serait bien que je puisse tester ça, et je n'vois pas trop comment faire! :-(
T'as pas une idée !?
Marsh Posté le 05-06-2003 à 15:18:04
Je ne pense pas que le mécanisme des librairies dynamiques soit un pb pour le multithread, après ça dépend de ce que tu fais dans ta librairie.
Marsh Posté le 05-06-2003 à 15:26:23
LetoII a écrit : Je ne pense pas que le mécanisme des librairies dynamiques soit un pb pour le multithread, après ça dépend de ce que tu fais dans ta librairie. |
...évidement! Mais si j'ai pas de variables globales, tu penses que ça devrait aller !?
Marsh Posté le 05-06-2003 à 10:28:19
Je me pose la question suivante :
Bon, si je n'me trompe pas, les servlets sont multi-thread, c à dire que chaque client est dans un thread séparé, c'est ce qui permet de ne pas se soucier de la synchronisation quand on est dans une méthode locale de servlet.
Mais, quand j'utilise JNI, est ce que je garde ce côté multi-thread ? Est ce que je n'serais pas obligé d'interdire de synchroniser certaines parties ? Etant donné qu'en JNI, la librairie C/C++ n'est chargée qu'une seule fois (avec la classe contenant le loadLibrary), je me dis que c'est bien possible (et bien emmerdant si c'est le cas!).
Autre question : si vous ne savez pas répondre aux questions précédantes, vous n'auriez pas au moins une idée de la méthode que je pourrais utiliser pour tester ça ? Vérifier si j'ai raison ou non de m'inquièter avant que mon truc ne soit en prod.
Merci à ceux qui répondront...