Tomcat - 不会加载我的META-INF\services\javax.servlet.ServletContainerInitializer文件?

Ayy*_*udy 10 java eclipse tomcat web-applications

我有一个Web项目,其\META-INF\services\javax.servlet.ServletContainerInitializer文件的内容指向实现ServletContainerInitializer接口的类的完全限定名称.我基本上遵循这里给出的例子:http://nullhaus.com/2011/03/using-servlets-3-0-servletcontainerinitializer/

我把调试行放在我的类中,它实现了ServletContainerInitializer接口,它永远不会在那里.甚至不是默认的构造函数......

我的应用程序文件夹结构如下:

\MyApp
      \META-INF\services\javax.servlet.ServletContainerInitializer
      \WEB-INF\classes\
                 ... [list of classes and packages go here]
Run Code Online (Sandbox Code Playgroud)

我需要检查的任何想法?

注1:我的Tomcat从包含我的应用程序的爆炸外部文件夹发布

注2:我从Eclipse开始使用Tomcat - 如果这有所不同的话!

Pio*_*cki 5

好吧,我认为你需要将你的初始化类(和它的服务相关的META-INF目录)包装成一个单独的*.jar并将其放入WEB-INF/lib.

这是一个JAR服务,所以我猜它可能与在*.war文件中发现服务的问题有关.此外,如果您将META-INF目录放在Tomcat中并且设置在Tomcat中,它甚至都没有帮助.WEB-INF/classesunpackWAR=falseserver.xml

HTH.


Ane*_*Dev 5

为了让 tomcat 加载META-INF目录,它必须位于classes 文件夹中。如果您使用的是maven项目,只需将META-INF目录放入src/main/resources目录中..在mvn包上,相同的内容将被复制到classes目录中..不需要单独的jar..如果更喜欢jar,您可以使用 HandlesTypes注释..