000
10.09.2010, 23:31 Uhr
0xdeadbeef
Gott (Operator)
|
Moin,
Ich versuche gerade, eine Webapp auf einen Tomat zu bringen. Der eigentliche Zugriff erfolgt durch Apache 2.2 und mod_proxy_ajp, aber das sollte eigentlich keine Rolle spielen. Was eine Rolle spielt, ist, dass das Servlet eine native Bibliothek lädt.
Jetzt funktioniert das ganze in einer Default-Tomcat-Konfiguration, wie sie aus den Debian-Repositories kommt, problemlos. Sobald ich aber den Security-Manager anschalte (und das würde ich wirklich gerne), bekomme ich vom Tomcat UnsatisfiedLinkErrors für eine Funktion, die in der Bibliothek auf jeden Fall vorhanden ist. Weder
Code: |
grant codeBase "file:${catalina.home}/webapps/webappname/-" { permission java.lang.RuntimePermission "loadLibrary.bibliotheksname"; };
|
noch
Code: |
grant codeBase "file:${catalina.home}/webapps/webappname/-" { permission java.lang.AllPermission; };
|
ändern daran etwas, und insbesondere das zweite verwundert mich doch sehr. Interessanterweise scheint das eigentliche Laden der Bibliothek auch zu funktionieren - wenn ich die Bibliothek umbenenne, bekomme ich eine Fehlermeldung "no bibliotheksname in java.library.path".
Der Stacktrace liest sich wie folgt:
Code: |
java.lang.UnsatisfiedLinkError: de.foo.servlet.do_compute(DDDD[[D[[DDD)D at de.foo.servlet.do_compute(NativeMethod) at de.foo.servlet.compute(servlet.java:12) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:537) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:283) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:56) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:189) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:185) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) at java.lang.Thread.run(Thread.java:636)
|
(Anwendungsinterna unverkenntlicht)
Habt ihr irgendeine Idee, woher so was kommen könnte? -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |