身陷Tomcat4与Tomcat5中servlet调用器的迷魂阵

原创 2004年08月16日 09:59:00

作为tomcat新手,我为这个问题困惑了很长时间,书上写得太简单,没涉及到;曾在CSDN上发贴,但没能到想要的答案。昨突受启发,经上机试验,才彻底解决心中的疑问。真的很简单,现发出来,供servelt/jsp的学友一起探讨,少走弯路。

 

我一直以为最新版是功能最完美的,所以我使用了tomcat5.0.19,但按书上定的我编每个servlet,调试时都要在项目目录下的web-inf/web.xml加入类似以下的代码:     

 

  <servlet>

        <servlet-name>CounterServlet </servlet-name>

        <servlet-class>mypack.CounterServlet </servlet-class>

  </servlet>

  <servlet-mapping>

         <servlet-name>CounterServlet </servlet-name>

         <url-pattern>/counter</url-pattern>

  </servlet-mapping>

 

 

  <servlet>

        <servlet-name>CounterServlet </servlet-name>

        <servlet-class>mypack.CounterServlet </servlet-class>

  </servlet>

  <servlet-mapping>

         <servlet-name>CounterServlet </servlet-name>

         <url-pattern>/counter</url-pattern>

  </servlet-mapping>

 

后来通过多方打听,才知道tomcat有个调用器(invoker servlet,只要在web.xml中加入以下代码: 

   <servlet-mapping>

        <servlet-name>invoker</servlet-name>

        <url-pattern>/servlet/*</url-pattern>

   </servlet-mapping>

 

便直接用http://localhost:8080/项目目录名/servlet/servlet 的方式直接调试,如果项目是root话,其中的项目目录可省即 http://localhost:8080/servelt/servlet。可我按上述方法在tomcat5中使用总不成功(其它配置均正确),且启动tomcatdos窗口出现多行严重字样,提示错在web.xml上,连基本的tomcat默认页都出错,把以上servletmapping去掉,就没出现以上问题了。后来仔细查看了网上的帖子,发现网上谈调用器的人大都用的是tomcat4,而且也听说tomcat5相对于tomcat4是有些改变,于是从官方网上下了tomcat4.1.30版,再按上面方法试,居然成了。自然我的上机也就完全改用tomcat4了。由于我装有win2K+winXP双系统,为了了解tomcat5的新功能,在另一系统上也装有tomcat5,但调试还是用的tomcat4,这个疑问也放下了。

        <servlet-name>invoker</servlet-name>

        <url-pattern>/servlet/*</url-pattern>

   </servlet-mapping>

 

便直接用http://localhost:8080/项目目录名/servlet/servlet 的方式直接调试,如果项目是root话,其中的项目目录可省即 http://localhost:8080/servelt/servlet。可我按上述方法在tomcat5中使用总不成功(其它配置均正确),且启动tomcatdos窗口出现多行严重字样,提示错在web.xml上,连基本的tomcat默认页都出错,把以上servletmapping去掉,就没出现以上问题了。后来仔细查看了网上的帖子,发现网上谈调用器的人大都用的是tomcat4,而且也听说tomcat5相对于tomcat4是有些改变,于是从官方网上下了tomcat4.1.30版,再按上面方法试,居然成了。自然我的上机也就完全改用tomcat4了。由于我装有win2K+winXP双系统,为了了解tomcat5的新功能,在另一系统上也装有tomcat5,但调试还是用的tomcat4,这个疑问也放下了。

 

昨才得知tomcat4.1.12之前的版本,默认情况下调用器是启用的,由于一个安全缺陷的揭示,因此,此以后的版本,调用器默认情况下是禁用的。如果要启用的话,需要将conf/web.xml文件中下面的servlet-mapping元素项取消注释。打开相应的web.xml,发现其中真的有   

 

 <!-- The mapping for the invoker servlet -->

  <!

  <servlet-mapping>

        <servlet-name>invoker</servlet-name>

        <url-pattern>/servlet/*</url-pattern>

    </servlet-mapping>

  --> 

  --> 

 

只不过加了注释符,禁用了。要解禁,根本不用再加,只用把注释符去掉就行了(当时咋没注意呢,呵呵。想当然了,我又查看了一下tomcat5的相应的web.xml,它也有这几项,被加注释,相必有这个功能呀!于是切换系统,运行,还是上面的错误。哦,对了,在web.xml配置时,讲究对应关系,于时分别查看tomcat4tomcat5中的项,真的发现了

   <servlet>

        <servlet-name>invoker</servlet-name>

        <servlet-class>

          org.apache.catalina.servlets.InvokerServlet

        </servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <load-on-startup>2</load-on-startup>

    </servlet>

   

   

不同之处在于在tomcat5中,以上代码加了注释符被禁用了,而tomcat4却没有,这就解释为什么tomcat5总出错的原因。于是马上去掉注释符,再试tomcat5,初始化没出现“严重”字样,运行也没问题,又一个疑问解决了。

综上,在tomcat4中,启用servlet调用器,只用去掉名<servelt-mapping>项为invoker的注释符即可;而在tomcat5中,除此之外,你还要去掉同名<servlet>项的的注释符。

 

 

 另附:tomcat4最高版4.1.30 tomcat5最新版5.0.27  均可在tomcat官方地址下载

 http://jakarta.apache.org/site/binindex.cgi下载

 

CICS通讯java应用调用服务的CTG Client配置

当一个java应用需要调用CICS Server端的服务时,它调用的过程是这样的:首先java应用汇通过JavaGateway(String ip, intport)对象去连接CICS Transac...
  • lingang0607
  • lingang0607
  • 2014年02月13日 14:57
  • 1671

tomcat4.0源码调试

最近在看《How Tomcat Works》,由于书中介绍的是tomcat4.0的源码实现,但是对于学习来说已经是足够足够了,想对4.0版本的源码进行调试,就到网上找了找,网上大多是tomcat6.0...
  • u012945986
  • u012945986
  • 2016年10月18日 12:14
  • 539

java 访问web项目的servlet

一般一个项目访问另外一个项目 , 能想到的肯定是webservice,但是webservice是个大工程啊,整个项目就重了,如果只是一个servlet,当然指的是内部使用的情况下,可以直接给对方调用,...
  • heqinghua217
  • heqinghua217
  • 2015年07月23日 18:46
  • 3072

REST:异步Servlet和回调方法的实现

为了真正实现异步Servlet,不仅仅需要新开一个线程运行一个请求业务,还要做一个回调接口,给业务去调用,将返回的数据写回客户端,这样,在前段看来就达到异步的效果了。 Servlet关键代码: A...
  • u014162884
  • u014162884
  • 2014年03月19日 11:41
  • 510

Servlet调用过程详解

Servlet是java编程中的核心内容,对于初学者而言清晰的了解servlet的调用过程,明白从客户端到服务器的交互过程是至关重要的。下面通过一个简单的登陆实例的代码与图的结合详述一下servlet...
  • a1314517love
  • a1314517love
  • 2013年06月06日 21:27
  • 4566

servlet中的多线程同步问题

ServletContext和Web应用关系: 当servlet容器启动Web应用,并为每个Web应用创建唯一的ServletContext对象。可以吧ServletContext看成一个Web...
  • cao478208248
  • cao478208248
  • 2014年04月24日 19:48
  • 1218

java servlet处理微信企业号回调模式

package cn.com.lewis.wx.servlet; import java.io.BufferedReader; import java.io.IOException; import ...
  • qq631431929
  • qq631431929
  • 2014年11月13日 09:45
  • 6327

Tomcat下Servlet传输视频流

背景:之前有个android和iOS的项目要在线播放视频,服务器是用tomcat,而视频的播放需要用户的权限验证才能操作。所以如果将视频文件单纯的放入webroot下直接播放,就没有权限问题了。原先在...
  • acmersch
  • acmersch
  • 2014年11月12日 10:26
  • 4372

Tomcat5.5.x中部署Java Web应用程序

原文出处:http://www.blogjava.net/ocean07000814/articles/331694.html 本文的重点是如何部署,所以暂且先不介绍怎样开发Web应用程序和怎样启动...
  • sdd00001
  • sdd00001
  • 2013年11月20日 14:53
  • 1135

Java Web基础知识之Listener:监控Servlet的每个动作

之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响...
  • lmy86263
  • lmy86263
  • 2016年04月21日 23:31
  • 5018
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:身陷Tomcat4与Tomcat5中servlet调用器的迷魂阵
举报原因:
原因补充:

(最多只允许输入30个字)