2011-05-17 42 views
2

我有一个由Maven管理的简单WAR项目。我有src/main/java/*下的servlet代码和src/main/webapp下的所有静态内容(HTML,图像等)。我可以在我们的暂存JBoss服务器上部署最终的WAR,并且它可以工作,但重新部署的往返速度却非常缓慢。我希望能够在嵌入式Tomcat本地测试更改,但我遇到了问题。Maven的tomcat:运行mojo没有看到我的servlet

servlet映射设置在src/main/resources/web.xml - 我认为这是正确的;相关的部分看起来像

<servlet> 
    <servlet-name>myServ</servlet-name> 
    <servlet-class>my.pkg.MyServ</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myServ</servlet-name> 
    <url-pattern>/ms</url-pattern> 
</servlet-mapping> 

Maven的告诉我它运行在localhost:8080/myprojectname,而事实上,当我去那里,我可以看到的静态内容。然而,我试过localhost:8080/myprojectname/ms以及localhost:8080/ms--前者给了我404,后者是0字节的响应。

总之:我的活动内容在哪里?我在控制台上看不到任何东西。它看起来像Maven做了一个target/tomcat/logs但这是空的。 target/tomcat/webapps也是空的,当我运行mvn tomcat:run -X时,我得到了很多调试输出,包括对我所有JAR依赖项的引用,classesDir属性指向target/classes(这是正确的),但没有提到我设置的那个URL模式的任何地方,也不需要作为处理程序调用的Servlet类的名称。我觉得我应该告诉Maven或Tomcat如何找到web.xml,或者以另一种方式指定URL映射....如果你不能说,我是新的:D

ETA:我的设置看起来非常像this guy,尽管我们的问题看起来有所不同。

+0

是的,我面临同样的问题。 Glassfish 4看到了servlet,而tomcat 8看不到。 – Benas 2017-04-24 09:59:55

回答

2

比我想象的要简单:虽然POM设置为使用src/main/resources/web.xml,但这不是“正确”的地方。将它移动到src/main/webapp/META-INF使得servlet显示出来 - 当然这在项目设置中导致了另外十多个错误,但这是另一个故事。