gpt4 book ai didi

java - ServletContext 中的 getClassLoader() 导致 AccessControlException

转载 作者:行者123 更新时间:2023-12-02 08:07:45 25 4
gpt4 key购买 nike

我正在尝试执行以下操作(在 Jetty 8 中运行):

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

这就是我得到的:

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)

这是关于什么的以及如何解决?

最佳答案

jetty 与安全管理器一起运行,该管理器限制 servlet 可以执行的操作(以避免恶意代码能够对 servlet 容器执行令人讨厌的操作)。解决此问题的最简单方法是关闭安全管理器,在您的 jetty 启动脚本中搜索此 cmdline 选项:

-Djava.security.manager

但要注意:这会关闭所有安全检查,解决此问题的更好方法是增强策略文件,寻找此选项:

-Djava.security.policy=

这将引导您找到所使用的策略文件并对其进行编辑以满足您的需求,以下是文档:

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

关于java - ServletContext 中的 getClassLoader() 导致 AccessControlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com