如何在grails中设置tomcat privileged =“true”?

时间:2013-10-14 16:16:17

标签: tomcat grails cgi

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

1 个答案:

答案 0 :(得分:3)

为了实现这个目的,我运行了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>

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

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>
"""