黑山老妖拉肚子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

尝试:修改conf下的context.xml,在Context 后增加 privileged="true"。即变为:

<Context privileged="true">,项目启动成功。

网上搜索的方法如下:

一个是要修改conf下的context.xml,另一个是修改web.xml。

在context.xml中,在Context 后增加 privileged="true"。即变为:

<Context privileged="true">

另一个则是web.xml,因为应用不同,所以配置相应应用下的web.xml,

大家可以打开conf下的web.xml,这里有注释过的cgi的servlet,大家可以复制过来。

另外还要 servlet-mapping,这样就OK了。

 

注:另外一种配置Context的方式,是修改server.xml中的Context元素,这样来说相对安全。

因为cgi的运行需要Context中的privileged为true才可以。而conf下的context.xml会导致

所有的应用都开启了这个属性。这样就显得不够安全。可以在配置应用时加入privileged属性:

 

<Context docBase="myapp" path="/myapp" privileged="true"/>

这里是设置应用的地方,我们只将myapp下的目录才设为可以使用cgi。而在webapps/myapp/WEB-INF/web.xml中,我们就可以设置cgi的路径。在webapps/myapp/WEB-INF下还需要建立cgi的目录,然后往里面随便塞个脚本hello.py。
下面是需要添加到web.xml的内容:   
<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>         
<load-on-startup>5</load-on-startup>   
</servlet>   
<servlet-mapping>       
<servlet-name>cgi</servlet-name>       
<url-pattern>/cgi-bin/*</url-pattern>   
</servlet-mapping>
这样在访问时,就成为http://localhost:8080/myapp/cgi-bin/hello.py

另外的补充:
当我使用编译出的可执行程序时,无法正常显示。这里要做的是往上面的servlet中添加参数,
使其可以运行可执行的程序,而非脚本。
往前面的servlet中添加,就放在<load-on-startup>5</load-on-startup>前面就可以了:
        <init-param>
            <param-name>executable</param-name>
            <param-value></param-value>
        </init-param>

 

 

 
posted on 2013-03-08 16:49  黑山老妖拉肚子  阅读(285)  评论(0编辑  收藏  举报