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

崔作非 2005-05-16 02:05:07
初来贵宝地,提个问题露个脸。这个问题让我困惑了很久了。我知道大家一般很少会配它,但我知道Tomcat肯定能用可执行CGI的。因为一样特殊原因,我现在只能用Tomcat来作Web服务器,所以也没得选择,望众Tomcat高手能够帮我解决,指引方向。
...全文
356 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigo 2005-05-18
  • 打赏
  • 举报
回复

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部署机制。



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

晕,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的前几条记录吧。





崔作非 2005-05-18
  • 打赏
  • 举报
回复
等会儿就结贴。
崔作非 2005-05-18
  • 打赏
  • 举报
回复
你的Tomcat5.5.9是exe的安装程序的吗?要是Zip的话我可不会安装呀。能发给我一份吗?我的大信箱是fanyufanyu@126.com
pigo 2005-05-18
  • 打赏
  • 举报
回复


估计和tomcat有关。

我现在用的是Tomcat5.5.9.

如果没有特殊限制的话。建议用最新版本的tomcat,里面增加了很多有用的功能。


崔作非 2005-05-18
  • 打赏
  • 举报
回复
我的结果是不一样。
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来处理的。
pigo 2005-05-18
  • 打赏
  • 举报
回复
关于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来处理的。

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

呵呵,配置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

楼主给分吧。


遇到问题多搜索资料吧,我也是顺手搜索了几下就搞定了。

崔作非 2005-05-17
  • 打赏
  • 举报
回复
大家努力呀,补充一下,我把我的CGI放到我的网络硬盘上有,有兴趣的朋友可以去下来试试。
功能最简单不无了,是调试版的程序,比较大一些。网址是http://fanyufanyu.vdisk.cn
根目录下有一个BCBCGI.exe的就是。
崔作非 2005-05-17
  • 打赏
  • 举报
回复
这个东西怎么配也不好使,郁闷呀,谁能告诉我它的访问URL该如何输入呀
http;//127.0.0.1:8080/后面该写的路径和文件是什么呀。
谁要有兴趣可以把我的可执行CGI发到他信箱里自已回去测测,我是弄不好了。
等试好后在发贴子告诉大家的解决办法。我在IIS下根本不需要配置,在Apache下只需要加几行信息来说明路径、文件名什么的就可以了。在Tomcat下怎么这么费劲呀。
pigo 2005-05-17
  • 打赏
  • 举报
回复
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脚本的权限。
ytnice 2005-05-17
  • 打赏
  • 举报
回复
不会,帮你顶
崔作非 2005-05-17
  • 打赏
  • 举报
回复
难道大家以前就没“玩过”可执行CGI这东西吗?我现在很需要一个Web服务器。我觉得对于熟悉Tomcat的人来说,这个应该不算是什么问题的。顺便说一下,我的Tomcat版本是4.1。
崔作非 2005-05-16
  • 打赏
  • 举报
回复
我只是用Tomcat来调试程序用的,最终完成后还是要在别的服务器上跑的。Apache和IIS因为某些原因,并不能使用,我也是没办法才到找Tomcat的,也是听同事说挺好才用的。我本人也不怎么会用Tomcat的。如果分不够还可以再加的。
楼上朋友的方法我试了,还是不好使呀,只能下载不能执行。
pigo 2005-05-16
  • 打赏
  • 举报
回复


把 conf/web.xml关于cgi那段 的注释取消掉,然后配置一下就ok了。

找tomcat官方文档看吧。

jFresH_MaN 2005-05-16
  • 打赏
  • 举报
回复
这个需要用apache和tomcat整合了。
querlang 2005-05-16
  • 打赏
  • 举报
回复
用java调用如何
kaymo 2005-05-16
  • 打赏
  • 举报
回复
没用tomcat做过这样的事,怎么,现在还有这样的需求?
cgi程序要用tomcat来跑?晕晕

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧