Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » Tomcat 6 / Security Manager / JNI

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: