一个关于tomcat加载工程的问题 恳求tomcat方面的高手解惑

李樟 发布于 2012/03/23 22:55
阅读 2K+
收藏 0

最近想看tomcat的源代码 就去网上下了tomcat(6.0)的源码 部署启动没有错误后 就尝试在webapp文件夹中放了个简单web工程 Test 用Bootstrap启动tomcat后 能进http://localhost:8080/  但是想要访问所建工程中的servlet TestServlet就不行了http://localhost:8080/Test/TestServlet 报的是 HTTP Status 404 错误 不知道是不是tomcat没有加载工程 不清楚原因

tomcat启动时控制台信息

2012-3-23 22:46:43 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_14\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.6.0_14\bin

2012-3-23 22:46:46 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2012-3-23 22:46:46 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 4933 ms
2012-3-23 22:46:46 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2012-3-23 22:46:46 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/@VERSION@
2012-3-23 22:46:46 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor docs.xml
2012-3-23 22:46:49 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor host-manager.xml
2012-3-23 22:46:49 org.apache.catalina.startup.HostConfig deployDescriptor
信息: Deploying configuration descriptor manager.xml
2012-3-23 22:46:49 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory examples
2012-3-23 22:46:50 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2012-3-23 22:46:50 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2012-3-23 22:46:50 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory ROOT
2012-3-23 22:46:50 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory Test
2012-3-23 22:46:50 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2012-3-23 22:46:51 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2012-3-23 22:46:51 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/169  config=null
2012-3-23 22:46:51 org.apache.catalina.startup.Catalina start
信息: Server startup in 4824 ms

工程web.xml 文件内容

  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>TestServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/TestServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

 

 

 

加载中
0
everyx
everyx
你项目能不能找到啊, http://localhost:8080/Test/是不是也是404
0
nubo
nubo

把tomcat的server.xml添加上:

<Context docBase="工程绝对路径" path="/Test" reloadable="false"/>

试试

0
李樟
李樟

引用来自“愤怒的波纹”的答案

把tomcat的server.xml添加上:

<Context docBase="工程绝对路径" path="/Test" reloadable="false"/>

试试

好像不行 这样设置是当工程不在webapps文件夹中时需要添加 当工程在webapps中时就不用写了 tomcat会检查添加webapps中的工程

nubo
nubo
直接部署是没有WebRoot这层目录的,不过既然你是debug,最好是改server.xml 然后想怎么debug就怎么debug。
0
李樟
李樟

引用来自“罗光盛”的答案

你项目能不能找到啊, http://localhost:8080/Test/是不是也是404

是一样的

everyx
everyx
那说明你的项目根本就部署的有问题啊,把你的项目目录结构列出来。
0
polly
polly

你的web.xml在哪里?你的Test目录如果独立一个Context,有两个方法,一个是用楼上指定的配置Test指向的物理路径;另外一个直接把Test目录放在webapps里,和ROOT同一级目录。

这样他的访问地址才是:http://localhost:8080/Test/TestServlet

不知道你怎么部署的,大家只能猜谜语。

http://localhost:8080/TestServlet

显示什么??

显示什么玩意?

0
李樟
李樟

引用来自“李小樟”的答案

引用来自“罗光盛”的答案

你项目能不能找到啊, http://localhost:8080/Test/是不是也是404

是一样的

项目是直接用的tomcat的源码 Test在webapps中

everyx
everyx
Test的目录结构,到web.xml那级,看看。
0
李樟
李樟

引用来自“polly”的答案

你的web.xml在哪里?你的Test目录如果独立一个Context,有两个方法,一个是用楼上指定的配置Test指向的物理路径;另外一个直接把Test目录放在webapps里,和ROOT同一级目录。

这样他的访问地址才是:http://localhost:8080/Test/TestServlet

不知道你怎么部署的,大家只能猜谜语。

http://localhost:8080/TestServlet

显示什么??

显示什么玩意?

将Test工程放在了webapps中 开始就说过了 web.xml在Test工程中
0
李樟
李樟

引用来自“李小樟”的答案

引用来自“罗光盛”的答案

你项目能不能找到啊, http://localhost:8080/Test/是不是也是404

是一样的

everyx
everyx
顺便把其他不相关的文件夹都删了吧
everyx
everyx
将WebRoot文件夹下的所有文件放到Test目录下
0
polly
polly

怎么这么乱呢?eclipse的Web Projects的目录结构如下:

如果把你的web.xml配置信息配置到上图的配置文件中,那么我的url将是:

http://localhost:8080/webDemo/TestServlet

 李小樟贴的目录结构,看不懂,没看过。

0
李樟
李樟
唉 看样子难以解决了
everyx
everyx
@李小樟 : 不是做了手脚,是本来就是这个结构的,你要不把项目打包成war发布,要不然就直接将webroot下的文件拷贝过去。
李樟
李樟
@罗光盛 : 果然像您说的这样 真是太感谢了 这个Test工程是我从MyEclipse中的工程复制过来 在MyEclipse配置的tomcat下是能访问的 为什么复制到到webapps下就不行了呢 难道MyEcplipse做的手脚 看样子我还有很多不懂的 非常感谢你一直热心的回答!
everyx
everyx
你文件路径放错了,把你项目文件夹下WebRoot下的所有文件开到你项目文件夹下面,然后将其他无关的文件夹删除,最终的目录结构应该为 +Test -WEB-INF -META-INF -index.jsp
返回顶部
顶部