tomcat - 如何在grails中设置tomcat特权="true"?

标签 tomcat grails cgi

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

最佳答案

为了实现此功能,我运行了 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>
"""

关于tomcat - 如何在grails中设置tomcat特权="true"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364601/

相关文章:

java - 如何让 Spring Security 在跨多个域的负载均衡器后面工作?

java - Tomcat & Maven : "Publishing failed with multiple errors Error reading file"

Grails ListView 不起作用

grails - 缺少依赖项org/codehaus/groovy/grails/commons/ApplicationAttributes

php - 在 CGI 模式下运行时如何覆盖 PHP 配置

Perl CGI 持久性 cookie

java - 使用 Tomcat 服务器的 Java 中的 Servlet

java - 当我通过 IntelliJ 部署 WAR 时出现错误

unit-testing - 使用 Spock 和 Grails 在全局 stub 类中注入(inject) stub 协作者

c - 尝试在 Apache [Cloud9IDE] 上打开文件时在 header 之前结束脚本输出