Guten Morgen zusammen,
ich versuche zurzeit ein einfaches Servlet zu schreiben, welches einfach nur eine Funktion aus einer JNI Library aufruft.
Da man den System.loadLibrary("") Aufruf ja nicht im Servlet direkt machen darf, um die Library nicht doppelt zu laden, habe ich einen einfachen Loader geschrieben:
Dieses File habe ich dann zu einem .class File kompiliert und unter "$CATALINE_HOME/shared/lib/" abgelegt. Danach habe ich in der catalina.properties die Einstellung "shared.loader" wie folgt angepasst:
"shared.loader=${catalina.home}/shared/lib"
Davon hätte ich mir erwartet, dass er das sharedObject direkt beim Start des Tomcats lädt und man nun die native Funktionen im Servlet zur Verfügung hat.
Daraufhin bekomme ich aber einen "java.lang.UnsatisfiedLinkError" wenn ich die Funktion "sayHello" aufrufe.
Also habe ich noch versucht die DLLBootstrapper Klasse in ein .jar File zu packen und über
"shared.loader=${catalina.home}/shared/lib/*.jar" zu laden. Aber auch über diese Methode bekomme ich den Link Error.
Zum Test habe ich einfach mal versucht eine ungültige Library zu laden bei der ich weiß, dass sie nicht existiert. In diesem Fall bekomme ich aber nirgends eine Fehlermeldung, dass die Library nicht existiert also vermute ich, dass sie niemals geladen wird.
Nun also zu meiner eigentlichen Frage:
Wie kann ich dem Tomcat beibringen bei seinem Start/beim Start einer Application diese Library zu laden?
ich versuche zurzeit ein einfaches Servlet zu schreiben, welches einfach nur eine Funktion aus einer JNI Library aufruft.
Da man den System.loadLibrary("") Aufruf ja nicht im Servlet direkt machen darf, um die Library nicht doppelt zu laden, habe ich einen einfachen Loader geschrieben:
Java:
public class DLLBootstrapper {
static
{
System.loadLibrary("jni_test");
}
public static native int sayHello(String[] keys, String[] vals, String req_type);
}
"shared.loader=${catalina.home}/shared/lib"
Davon hätte ich mir erwartet, dass er das sharedObject direkt beim Start des Tomcats lädt und man nun die native Funktionen im Servlet zur Verfügung hat.
Daraufhin bekomme ich aber einen "java.lang.UnsatisfiedLinkError" wenn ich die Funktion "sayHello" aufrufe.
Also habe ich noch versucht die DLLBootstrapper Klasse in ein .jar File zu packen und über
"shared.loader=${catalina.home}/shared/lib/*.jar" zu laden. Aber auch über diese Methode bekomme ich den Link Error.
Zum Test habe ich einfach mal versucht eine ungültige Library zu laden bei der ich weiß, dass sie nicht existiert. In diesem Fall bekomme ich aber nirgends eine Fehlermeldung, dass die Library nicht existiert also vermute ich, dass sie niemals geladen wird.
Nun also zu meiner eigentlichen Frage:
Wie kann ich dem Tomcat beibringen bei seinem Start/beim Start einer Application diese Library zu laden?