Webservices et JNI [resolu] - Java - Programmation
Marsh Posté le 11-05-2007 à 14:33:57
Bonjour,
je dirais que le fait d'avoir mis la librairie dans :
$catalina_home\common\lib\
fait que cette librairie est chargée au démarrage du serveur tomcat (donc pas le classpath de tomcat).
L'appel donc de : System.loadLibrary("maLib" );
provoque une erreur car cette lib a déjà été chargée.
Je déduis cela du message d'erreur, en espérant pouvoir aider
Marsh Posté le 11-05-2007 à 14:52:24
Merci pour ton aide yaltar.
Donc, si j'enlève le System.loadLibrary, voici ce qu'il ce passe :
le servlet se déploie mais je peux lire dans mon client une exception soap :
Citation : javax.xml.ws.soap.SOAPFaultException: Unknown fault type:class java.lang.UnsatisfiedLinkError at com.sun.xml.internal.ws.encoding.soap.ClientEncoderDecoder.toMessageInfo(ClientEncoderDecoder.java:86) at |
Voici pourquoi j'ai mis ma lib dans le dossier common\lib :
Citation : |
http://wiki.apache.org/tomcat/HowT [...] 66b561139d
Marsh Posté le 11-05-2007 à 15:22:42
En lisant de plus près je me suis rendu compte que :
Citation : then both this class and the shared library should be placed in the $CATALINA_HOME/shared/lib directory. |
Donc je place ma classe compilée avec ma lib dans le dossier lib :
Code :
|
Mais le soucis, c'est que ma classe "service web" ne veut plus compiler car ne trouve pas la classe ci-dessus.
La question: y'a-t-il quelque chose de similaire au #include en java ? (sachant que mes deux classes sont du même package)
Marsh Posté le 11-05-2007 à 15:27:19
la notion de include, correspond à l'instruction 'import'
Ceci étant, as tu mis t'a classe directement sous shared/lib ? ou en respectant le package, à savoir : shared/lib/monpak/
Marsh Posté le 11-05-2007 à 15:33:38
oui oui tout a fait.
Netbeans me dit
Citation : |
Alors il me propose d'importer package monpak.jscp2. Ca apporte rien.
Marsh Posté le 11-05-2007 à 15:42:55
Tu veux dire que meme avec l'import ca met toujours l'erreur dans netbean?
Marsh Posté le 11-05-2007 à 15:44:29
Finalement, j'ai pris le jar et dans netbeans j'ai fais ajouter une lib et là j'ai plus d'erreurs.
Quelques bugs toujours, mais ça viens de ma partie jni je pense.
Merci beaucoup pour ton aide yaltar. Ca faisait plusieurs jours que j'étais coincé là dessus.
Marsh Posté le 11-05-2007 à 15:48:46
Ha ben de rien si ca t'a débloqué c'est tant mieux.
Bon courage pour la suite
Marsh Posté le 11-05-2007 à 16:12:11
Bon et bien, j'ai parlé trop vite
Citation : java.lang.NoClassDefFoundError: Could not initialize class monpak.jscp2 |
Marsh Posté le 11-05-2007 à 16:21:14
Je suppose que ce message d'erreur vient de tomcat ...
Donc il trouve pas ta class jscp2.
Tu l'as mis sous quel forme dans shared/lib
Marsh Posté le 11-05-2007 à 16:34:42
Bon alors j'avoue que la j'ai un doute, je vais peut etre dire une bétise.
Ne faudrait-il pas spécifier dans le CLASSPATH de tomcat que tu utlises ce jar du genre, CLASSPATH=%CLASSPATH%;$catalina_home\common\lib\ tonjar.jar
Marsh Posté le 11-05-2007 à 16:39:41
Pour le moment, dans le path il y a
$catalina_home\common\lib\
$catalina_home\shared\lib\
Et j'ai mis mon jar et ma dll dans shared\lib
Marsh Posté le 11-05-2007 à 16:47:02
C'est bon j'ai trouvé.
Il faut mettre sa lib (.dll) et et le fichier qui la charge (.jar) dans $catalina_home\common\lib\
Marsh Posté le 11-05-2007 à 16:48:15
Ha tant mieux alors
Content pour toi.
Pense à mettre : Résolu, si c'est bon
Marsh Posté le 11-05-2007 à 11:59:05
'hello
J'essaie de créer un service web qui fait appel à une biblio native.
J'utilise netbeans et tomcat et voici mon code:
Le soucis se fait au moment de l'appel à la lib.
GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.UnsatisfiedLinkError: Native Library C:\Program Files\netbeans-5.5\enterprise3\apache-tomcat-5.5.17\common\lib\maLib.dll already loaded in another classloader
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1716)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
J'ai pourtant suivis les conseils de tomcat, c'est à dire mettre la lib dans $catalina_home\common\lib\
Quelqu'un as une idée ?
D'avance merci
Message édité par negatifman le 11-05-2007 à 17:13:26