Tomcat服务器下如何配置并使用可执行CGI,扩屏名是exe的。

来源:互联网 发布:淘宝怎样刷收藏 编辑:程序博客网 时间:2024/04/30 02:04

初来贵宝地,提个问题露个脸。这个问题让我困惑了很久了。我知道大家一般很少会配它,但我知道Tomcat肯定能用可执行CGI的。因为一样特殊原因,我现在只能用Tomcat来作Web服务器,所以也没得选择,望众Tomcat高手能够帮我解决,指引方向。 问题点数:100、回复次数:20Top

1 楼kaymo( 。。。 )回复于 2005-05-16 14:24:58 得分 1

没用tomcat做过这样的事,怎么,现在还有这样的需求?  
  cgi程序要用tomcat来跑?晕晕Top

2 楼querlang(编程浪子)回复于 2005-05-16 14:50:38 得分 1

用java调用如何Top

3 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2005-05-16 14:55:01 得分 1

这个需要用apache和tomcat整合了。Top

4 楼pigo()回复于 2005-05-16 15:26:11 得分 1

 
   
  把   conf/web.xml关于cgi那段   的注释取消掉,然后配置一下就ok了。  
   
  找tomcat官方文档看吧。  
   
  Top

5 楼fanyufanyu(反语)回复于 2005-05-16 16:21:15 得分 0

我只是用Tomcat来调试程序用的,最终完成后还是要在别的服务器上跑的。Apache和IIS因为某些原因,并不能使用,我也是没办法才到找Tomcat的,也是听同事说挺好才用的。我本人也不怎么会用Tomcat的。如果分不够还可以再加的。  
  楼上朋友的方法我试了,还是不好使呀,只能下载不能执行。Top

6 楼fanyufanyu(反语)回复于 2005-05-17 13:00:54 得分 0

难道大家以前就没“玩过”可执行CGI这东西吗?我现在很需要一个Web服务器。我觉得对于熟悉Tomcat的人来说,这个应该不算是什么问题的。顺便说一下,我的Tomcat版本是4.1。Top

7 楼ytnice()回复于 2005-05-17 14:01:47 得分 1

不会,帮你顶Top

8 楼pigo()回复于 2005-05-17 14:38:51 得分 40

http://jakarta.apache.org/tomcat/tomcat-5.0-doc/cgi-howto.html  
   
  我配置Tomcat支持pl就是这样做的,但是没有试过exe文件,因为我没有exe文件测试。  
   
  8.在Tomcat中使用CGI脚本  
  Tomcat主要是作为Servlet/JSP容器,但它也有许多传统web服务器的性能。支持通用网关接口(Common   Gateway   Interface,即CGI)就是其中之一,CGI提供一组方法在响应浏览器请求时运行一些扩展程序。CGI之所以被称为通用,是因为它能在大多数程序 或脚本中被调用,包括:Perl,Python,awk,Unix   shell   scripting等,甚至包括Java。当然,你大概不会把一个Java应用程序当作CGI来运行,毕竟这样太过原始。一般而言,开发Servlet总 要比CGI具有更好的效率,因为当用户点击一个链接或一个按钮时,你不需要从操作系统层开始进行处理。  
   
  Tomcat包括一个可选的CGI   Servlet,允许你运行遗留下来的CGI脚本。  
   
  为了使Tomcat能够运行CGI,你必须做如下几件事:  
  1.   把servlets-cgi.renametojar   (在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下。  
  2.   在Tomcat的CATALINA_BASE/conf/web.xml   文件中,把关于<servlet-name>   CGI的那段的注释去掉(默认情况下,该段位于第241行)。  
  3.   同样,在Tomcat的CATALINA_BASE/conf/web.xml文件中,把关于对CGI进行映射的那段的注释去掉(默认情况下,该段位于第299行)。注意,这段内容指定了HTML链接到CGI脚本的访问方式。  
  4.   你可以把CGI脚本放置在WEB-INF/cgi   目录下(注意,WEB-INF是一个安全的地方,你可以把一些不想被用户看见或基于安全考虑不想暴露的文件放在此处),或者你也可以把CGI脚本放置在 context下的其他目录下,并为CGI   Servlet调整cgiPathPrefix初始化参数。这就指定的CGI   Servlet的实际位置,且不能与上一步指定的URL重名。  
  5.   重新启动Tomcat,你的CGI就可以运行了。  
   
  在Tomcat中,CGI程序缺省放置在WEB-INF/cgi目录下,正如前面所提示的那样,WEB-INF目录受保护的,通过客户端的浏览器无法窥探 到其中内容,所以对于放置含有密码或其他敏感信息的CGI脚本而言,这是一个非常好的地方。为了兼容其他服务器,尽管你也可以把CGI脚本保存在传统的 /cgi-bin目录,但要知道,在这些目录中的文件有可能被网上好奇的冲浪者看到。另外,在Unix中,请确定运行Tomcat的用户有执行CGI脚本 的权限。  
  Top

9 楼fanyufanyu(反语)回复于 2005-05-17 15:29:41 得分 0

这个东西怎么配也不好使,郁闷呀,谁能告诉我它的访问URL该如何输入呀  
  http;//127.0.0.1:8080/后面该写的路径和文件是什么呀。  
  谁要有兴趣可以把我的可执行CGI发到他信箱里自已回去测测,我是弄不好了。  
  等试好后在发贴子告诉大家的解决办法。我在IIS下根本不需要配置,在Apache下只需要加几行信息来说明路径、文件名什么的就可以了。在Tomcat下怎么这么费劲呀。Top

10 楼fanyufanyu(反语)回复于 2005-05-17 17:27:10 得分 0

大家努力呀,补充一下,我把我的CGI放到我的网络硬盘上有,有兴趣的朋友可以去下来试试。  
  功能最简单不无了,是调试版的程序,比较大一些。网址是http://fanyufanyu.vdisk.cn  
  根目录下有一个BCBCGI.exe的就是。Top

11 楼pigo()回复于 2005-05-17 19:30:00 得分 40

 
  呵呵,配置ok了。  
   
  还需要设置一个参数executable。  
   
  这个参数的默认值是支持perl的。  
   
   
   
  配置如下:  
   
  <servlet>  
  <servlet-name>cgi</servlet-name>  
  <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>  
  <init-param>  
  <param-name>clientInputTimeout</param-name>  
  <param-value>100</param-value>  
  </init-param>  
  <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-bin</param-value>  
  </init-param>  
                  <init-param>  
                          <param-name>executable</param-name>  
                          <param-value>cmd   /c   </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>  
   
  exe文件存放的路径在  
   
  D:/jakarta-tomcat-5.5.8/webapps/mywebapp/WEB-INF/cgi-bin  
   
  访问地址是:  
   
  http://localhost:8080/mywebapp/cgi-bin/BCBCGI.exe  
   
  楼主给分吧。  
   
   
  遇到问题多搜索资料吧,我也是顺手搜索了几下就搞定了。  
   
  Top

12 楼fanyufanyu(反语)回复于 2005-05-18 08:59:01 得分 0

楼上朋友的方法很不错,在我的机器上可以得到正确的结果。说明基本配置成功。  
  但当输入http://localhost:8080/mywebapp/cgi-bin/BCBCGI.exe/index.asp  
  却出错了,没有结果,实际的结果和你看到的没有路径信息时的结果是一样的。/index.asp是CGI的路径信息,并不是文件,CGI是根据不同的路径 来选择执行不同的代码的。所以这样的CGI虽然能但,但没有意义的。还是希望有空楼上的朋友能在接在厉帮我把这个东西弄好,谢谢你了。一定会给你加很多分 的。Top

13 楼pigo()回复于 2005-05-18 09:34:00 得分 15

关于cgi,我只了解一点点运行原理,并没有写过相关的程序。刚才再试了一下,在我的配置中。http://localhost:8080/awstats/cgi-bin/cc.exe/index.asp  
  http://localhost:8080/awstats/cgi-bin/cc.exe/index.aspsddsds  
  http://localhost:8080/awstats/cgi-bin/cc.exe/dsdssdsd/dfdfindex.aspsddsds  
  这样的路径最终得到的效果和http://localhost:8080/awstats/cgi-bin/cc.exe所看到的结果是一样的。  
  对于这个cgi的调用,可以简单的看作是命令行执行   cmd   /c   "cc.exe"  
  那么执行cmd   /c   "cc.exe/index.asp"和   cmd   /c   "cc.exe/index.aspsddsds"和cmd   /c   "cc.exe"   在命令行下你都会看到同样的输出结果。  
   
  如果你是要看到不同的结果,这个应该是在你的cgi程序中自己写代码进行处理(好像是获取命令行传入的参数信息,然后进行相应处理,没有写过cgi,所以这只是我的大致猜测),而不是tomcat来处理的。  
   
  Top

14 楼fanyufanyu(反语)回复于 2005-05-18 09:54:28 得分 0

我的结果是不一样。  
  http://localhost:8080/mywebapp/cgi-bin/BCBCGI.exe   能够得到正常结果  
  http://localhost:8080/mywebapp/cgi-bin/BCBCGI.exe/index.asp  
  得到的是Tomcat的错误信息  
  我把它贴出来如下:  
  HTTP   Status   404   -    
   
  --------------------------------------------------------------------------------  
   
  type   Status   report  
   
  message    
   
  description   The   requested   resource   ()   is   not   available.  
   
   
  --------------------------------------------------------------------------------  
   
  Apache   Tomcat/4.1.30  
   
  这个东西是不是和Tomcat的版本有关呀。  
  ----------------------------------------------------------------  
  原贴内容:  
  关于cgi,我只了解一点点运行原理,并没有写过相关的程序。刚才再试了一下,在我的配置中。http://localhost:8080/awstats/cgi-bin/cc.exe/index.asp  
  http://localhost:8080/awstats/cgi-bin/cc.exe/index.aspsddsds  
  http://localhost:8080/awstats/cgi-bin/cc.exe/dsdssdsd/dfdfindex.aspsddsds  
  这样的路径最终得到的效果和http://localhost:8080/awstats/cgi-bin/cc.exe所看到的结果是一样的。  
  对于这个cgi的调用,可以简单的看作是命令行执行   cmd   /c   "cc.exe"  
  那么执行cmd   /c   "cc.exe/index.asp"和   cmd   /c   "cc.exe/index.aspsddsds"和cmd   /c   "cc.exe"   在命令行下你都会看到同样的输出结果。  
   
  如果你是要看到不同的结果,这个应该是在你的cgi程序中自己写代码进行处理,而不是tomcat来处理的。  
  Top

15 楼pigo()回复于 2005-05-18 10:00:01 得分 0

 
   
  估计和tomcat有关。  
   
  我现在用的是Tomcat5.5.9.  
   
  如果没有特殊限制的话。建议用最新版本的tomcat,里面增加了很多有用的功能。  
   
   
  Top

16 楼fanyufanyu(反语)回复于 2005-05-18 10:07:08 得分 0

你的Tomcat5.5.9是exe的安装程序的吗?要是Zip的话我可不会安装呀。能发给我一份吗?我的大信箱是fanyufanyu@126.comTop

17 楼fanyufanyu(反语)回复于 2005-05-18 10:08:51 得分 0

等会儿就结贴。Top

18 楼pigo()回复于 2005-05-18 10:12:01 得分 0

 
  晕,zip的不管在哪个操作系统,都解压就可以用了。  
   
  windows下,解压之后运行bin/下的startup.bat  
  其它的操作系统是运行startup.sh  
   
  http://www.google.com/search?q=tomcat+5.5.x&hl=zh-CN&lr=lang_zh-CN&ie=gb2312  
   
  仔细看google的前几条记录吧。  
   
   
   
   
   
  Top

19 楼fanyufanyu(反语)回复于 2005-05-18 10:19:05 得分 0

哦,这么简单呀,我以后很难的。能发给我吗?也让我爽爽,对了,我刚才又回顾了一下  
  mywebapp目录是你自已建的吗?我的系统里没有这个文件夹,我是把ROOT文件夹考过来以后改名得到的,能不能是这个原因呀。Top

20 楼pigo()回复于 2005-05-18 10:49:16 得分 0

 
  Tomcat5.5.9的下载:  
   
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/src/jakarta-tomcat-5.5.9-src.zip  
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.zip  
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9-fulldocs.tar.gz  
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9-admin.zip  
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9-compat.zip  
   
   
  关于各个文件的介绍请看:  
   
  http://www.apache.org/dist/jakarta/tomcat-5/v5.5.9/bin/   下面都有说明。  
   
   
  mywebapp当然是我自己建立的了,与文件夹名字没有特别的关系,  
   
  关于这些,你可以去了解一下servlet规范和Tomcat的webapp部署机制。