2011-10-25 2 views
0

Je suis en train de faire ce qui suit (en cours d'exécution à la jetée 8):getClassLoader() de ServletContext conduit à AccessControlException

public class FooListener implements ServletContextListener { 
    public void contextInitialized(ServletContextEvent event) { 
    event.getServletContext().getClassLoader(); 
    } 
} 

C'est ce que je reçois:

java.security.AccessControlException: access denied (java.lang.RuntimePermission getClassLoader) 
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
at java.security.AccessController.checkPermission(AccessController.java:546) 
at org.eclipse.jetty.server.handler.ContextHandler$Context.getClassLoader(ContextHandler.java:2179) 
at com.example.FooListener.contextInitialized(FooListener.java:69) 
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:672) 
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:403) 
at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:664) 

Qu'est-ce il sur et comment peut être résolu?

+0

La restriction est mentionnée dans les documents API (similaire à 'Class.getClassLoader'): http://download.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getClassLoader() –

Répondre

2

jetty est en cours d'exécution avec un gestionnaire de sécurité qui limite les choses que les servlets peuvent faire (pour éviter que le code malicieux ne puisse faire des choses désagréables au conteneur de servlet). La chose easist pour contourner ce problème est de désactiver le gestionnaire de sécurité, recherchez cette option cmdline dans vos scripts de démarrage de la jetée:

-Djava.security.manager 

Mais attention: ce éteint tous les contrôles de sécurité, une meilleure façon de régler c'est pour améliorer le fichier de stratégie, recherchez cette option:

-Djava.security.policy= 

qui vous mènera au fichier de stratégie utilisé et le modifier pour répondre à vos besoins, la documentation est ici:

http://download.oracle.com/javase/1.4.2/docs/guide/security/PolicyFiles.html

Questions connexes