Tauruser

JSF will hibernate in spring.

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  24 随笔 :: 2 文章 :: 19 评论 :: 0 Trackbacks
 

摘要:

 在Sas IntrNet Module很多功能都是需要用到CGICommon Gateway Interface)进行工作。在使用CGI进行工作时候,我们首先要进行CGI服务器的配置。一般情况下可以直接使用Apache来架设CGI服务器。由于我们后期的一些应用可能是在JEE平台上进行开发,所以在一个可以运行Web ContainerServer上架设CGI服务是有必要的。本文将介绍如何在Tomcat下配置CGI服务。

配置步骤:

要为Tomcat配置CGI服务主要有下面几个步骤:

1.       servlets-cgi.renametojar (在%CATALINA_HOME%/server/lib/目录下)改名为servlets-cgi.jar

2.       Tomcat%CATALINA_BASE%/conf/web.xml 文件中,把关于<servlet-name> CGI的那段的注释去掉。内容样式如下:

<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>executable</param-name>

       <param-value>C:/Perl/bin/Perl.exe</param-value>

     </init-param>

     <load-on-startup>5</load-on-startup>

</servlet>

其中参数executable需要自已添加进去,它的值就是我们用来解释CGI脚本的程序。一般情况下这里会配置为Perl"C:/Perl/bin/"Perl的安装目录。

3.       Tomcat%CATALINA_BASE%/conf/web.xml文件中,把关于对CGI进行映射的那段的注释去掉。内容样式如下:

<servlet-mapping>

    <servlet-name>cgi</servlet-name>

<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>

其中url-pattern就是将来我们访问CGI脚本的url地址模式。

  完成上面三个步骤后,我们的Tomcat服务器就具有了运行CGI脚本的能力了。

测试CGI服务。

  为了测试CGI服务,需要新建一个Web Project。并在WEB-INF目录下新建一个名为"cgi"的目录,CGI脚本将放置在这个目录下。这里提供了一个用于测试CGI脚本printenv.pl|^printenv.plDeloy the web project。启动Tomcat后,我们就可以通过http://localhost:8080/projectName/cgi-bin/printenv.pl访问了。

  如果访问成功,页面将显示如下的类似信息。

AUTH_TYPE=""
CONTENT_LENGTH=""
CONTENT_TYPE=""
GATEWAY_INTERFACE="CGI/1.1"
HTTP_ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-silverlight, */*"
HTTP_ACCEPT_ENCODING="gzip, deflate"
HTTP_ACCEPT_LANGUAGE="zh-cn"
HTTP_CONNECTION="Keep-Alive"
HTTP_HOST="localhost:8080"
HTTP_USER_AGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
PATH_INFO=""
QUERY_STRING=""
REMOTE_ADDR="127.0.0.1"
REMOTE_HOST="127.0.0.1"
REMOTE_IDENT=""
REMOTE_USER=""
REQUEST_METHOD="GET"
REQUEST_URI="/sasIntrNet/cgi-bin/printenv.pl"
SCRIPT_NAME="/sasIntrNet/cgi-bin"printenv.pl"
SERVER_NAME="localhost"
SERVER_PORT="8080"
SERVER_PROTOCOL="HTTP/1.1"
SERVER_SOFTWARE="TOMCAT"
X_TOMCAT_SCRIPT_PATH="D:"Program Files"apache-tomcat-5.5.17"webapps"sasIntrNet"WEB-INF"cgi"printenv.pl"

  这个脚本主要打印当前CGI的一些环境变量出来。

参考文档

1、《Apache Tomcat 5.5 Servlet/JSP 容器 怎样使用CGIhttp://tomcat.jaxmao.org/cgi-howto.html

2、《Tomcat配置技巧Top 10》 http://www.pconline.com.cn/pcedu/empolder/wz/webserver/0502/549840_3.html

补充说明:

对于上文的补充说明:

 当我们要在TomcatCGI服务上跑SAS IntrNet服务的时候,需要对上文的配置作一定的修改。首先Sas IntrNetDispatcher模块用来接收Browers请求的broke.exe文件只是一个普通的Windows Win32可执行文件,并不是Perl脚本。(可以在Console环境下直接运行broker.exe文件。)基于上面的认识所以Servletexecutable参数不能配置使用Perl来运行,应该改成为如下命令。

<init-param>

   <param-name>executable</param-name>

   <param-value>cmd /c</param-value>

</init-param>

其中,"cmd /c"正是windows的系统命令,调用console。具体参数/c,使用/?开关进行查看。
 此外,Sas IntrNet应用还需要系统的环境变量等信息,所以需要再多加配置一个参数。 

<init-param>

 <param-name>passShellEnvironment</param-name>

 <param-value>true</param-value>

</init-param>

 完整的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>executable</param-name>

    <param-value>cmd /c</param-value>

 </init-param>

 <init-param>

    <param-name>passShellEnvironment</param-name>

    <param-value>true</param-value>

  </init-param>

 <load-on-startup>5</load-on-startup>

</servlet>

posted on 2007-09-06 10:40 Tauruser 阅读(7921) 评论(3)  编辑  收藏 所属分类: SAS

评论

# re: 为Tomcat配置CGI服务 2007-09-26 15:39 hqhony
按照你的描述,我现在出现这样一个问题:不能运行exe类型的cgi程序,而总是提示下载,请问是什么原因造成的,该如何解决。
e-mail:hqhony@msn.com  回复  更多评论
  

# re: 为Tomcat配置CGI服务 2009-10-14 10:08 trent
如果配置exe,这段配置了吗
<init-param>

   <param-name>executable</param-name>

   <param-value>cmd /c</param-value>

</init-param>
如果是运行perl
那么<param-value>应设置perl.exe全路径  回复  更多评论
  

# re: 为Tomcat配置CGI服务 2009-11-12 10:48 227
linux下如何配置?  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: