mongodb挖的坑还没填完,tomcat又开始挖了个大坑。
最近在看tomcat那本大蓝书的时候,正好手头有各个javaweb的小工程,正好拿来练练手。就以遇到的各个问题做个总结,顺便做点tomcat的笔记。
- 在部署java web项目时,项目的servlet出现了问题:
12-May-2016 09:36:26.472 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/tongji]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1101)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1786)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: The servlets named [X] and [Y.X] are both mapped to the url-pattern [/X] which is not permitted
从log文件中查到这个问题:
Caused by: java.lang.IllegalArgumentException: The servlets named [X] and [Y.X] are both mapped to the url-pattern [/X] which is not permitted
从度娘那儿查到这个问题指向了那个web应用的web.xml中的:
<servlet>
<servlet-name>X</servlet-name>
<servlet-class>package.X</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>X</servlet-name>
<url-pattern>/X</url-pattern>
</servlet-mapping>
经过调试,发现是在
<url-pattern>*/X*</url-pattern>
这个地方没有指明资源的位置,导致服务无法正常启动的,必须要指明.class文件是在classes文件夹下哪个具体的文件夹中才行。
还有需要说明的是,我这个demo没有借助任何其它的第三方成熟的框架,完全是自己搭建起来的web服务,因此并不一定适用所有框架,特此说明。