【问题标题】:javax.servlet.ServletException: Servlet.init() for servlet Relay threw exceptionjavax.servlet.ServletException: Servlet Relay 的 Servlet.init() 抛出异常
【发布时间】:2011-01-31 05:50:35
【问题描述】:

我使用 Netbeans 构建了应用程序,它运行良好。但是当我在 TOMCAT 上部署时,我收到了这个错误

javax.servlet.ServletException: Servlet.init() for servlet Relay threw exception
       org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
       org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
       org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
       org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
       java.lang.Thread.run(Thread.java:636)

*root cause*

java.security.AccessControlException: access denied (java.util.PropertyPermission jasper.reports.compile.class.path write)
       java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
       java.security.AccessController.checkPermission(AccessController.java:553)
       java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
       java.lang.System.setProperty(System.java:744)
       com.servlet.Relay.init(Relay.java:38)
       javax.servlet.GenericServlet.init(GenericServlet.java:212)
       sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
       sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       java.lang.reflect.Method.invoke(Method.java:616)
       org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:269)
       java.security.AccessController.doPrivileged(Native Method)
       javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
       org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:301)
       org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
       org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:115)
       org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
       org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
       org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
       org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) 

任何想法。

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    看起来 SecurityManager 被配置为阻止修改类路径。你在什么平台上运行?并查看用于安全管理器配置的 tomcat conf 目录。

    查看these docs 以获取 tomcat 5.5。

    我认为你应该检查一下你是否有一个文件$CATALINA_BASE/conf/catalina.policy,如果有,请添加如下内容:

    permission jasper.reports "jasper.reports.compile.class.path", "write";
    

    如果您在 Relay servlet 中写入该类路径,则不应使用 jasper.reports,而应使用您自己的包。

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多