【问题标题】:How to set tomcat privileged="true" in grails?如何在 grails 中设置 tomcat privileged="true"?
【发布时间】:2013-10-14 16:16:17
【问题描述】:

我想在 grails 2.3 中使用 cgi,我的开发工具是 Intellij Idea 13。 所以我必须在 context.xml 中设置 privileged="true"。 但是我不知道如何在TomcatPlugin中设置它,我可以得到你的帮助吗? 非常感谢!!!

【问题讨论】:

    标签: tomcat grails cgi


    【解决方案1】:

    为了让这项工作正常运行,我运行了 grails install-templates 并编辑了 src/templates/war/web.xml 以添加 CGI servlet 和映射:

    <servlet>
       <servlet-name>cgi</servlet-name>
       <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
       <init-param>
          <param-name>debug</param-name>
          <param-value>0</param-value>
       </init-param>
       <init-param>
          <param-name>cgiPathPrefix</param-name>
          <param-value>WEB-INF/cgi</param-value>
       </init-param>
       <init-param>
          <param-name>passShellEnvironment</param-name>
          <param-value>true</param-value>
       </init-param>
       <init-param>
          <param-name>executable</param-name>
          <param-value>/usr/local/groovy/bin/groovy</param-value>
       </init-param>
       <load-on-startup>5</load-on-startup>
    </servlet>
    
    <servlet-mapping>
       <servlet-name>cgi</servlet-name>
       <url-pattern>/cgi-bin/*</url-pattern>
    </servlet-mapping>
    

    然后设置我创建 scripts/_Events.groovy 并添加的 privileged 标志

    eventConfigureTomcat = {tomcat ->
       def context = tomcat.host.findChild(serverContextPath)
       context.privileged = true
    }
    

    我使用web-app/WEB-INF/cgi/test1.cgi 进行了测试,这是一个 Groovy 脚本(我必须设置上面的“可执行”init-param 以使用 Groovy 而不是 Perl):

    #!/usr/local/groovy/bin/groovy
    
    println "Content-type: text/html\n\n"
    println """
    <html>
    <head>
    <title>CGI Test</title>
    </head>
    <body>
    <strong>Testing CGI at ${new Date()}</strong>
    </body>
    </html>
    """
    

    【讨论】:

    • 日志报告:java.lang.SecurityException: Restricted class org.apache.catalina.servlets.CGIServlet 和之前一样
    • grails 2.3.0 中似乎不再调用 _Events.groovy
    • 它已被调用,但在运行分叉的 JVM 时不会触发您要查找的事件。我在您的另一个问题中展示了如何禁用分叉:stackoverflow.com/questions/19371859/…
    猜你喜欢
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2011-09-11
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多