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

标签 java eclipse web-applications tomcat

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

我在实现 ServletContainerInitializer 接口(interface)的类中放置了调试行,但它从来没有出现过。甚至没有默认构造函数...

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

\MyApp
      \META-INF\services\javax.servlet.ServletContainerInitializer
      \WEB-INF\classes\
                 ... [list of classes and packages go here]

有什么我需要检查的想法吗??

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

注意 2:我从 Eclipse 启动我的 Tomcat - 如果这有区别的话!

最佳答案

好吧,我认为您需要将您的初始化程序类(以及它与服务相关的 META-INF 目录)包装到一个单独的 *.jar 中,并将其放在 WEB-INF/lib.

这是一个 JAR 服务,所以我猜它可能与在 *.war 文件中发现服务的问题有关。此外,如果您将 META-INF 目录放在 WEB-INF/classes 中并设置 unpackWAR=false Tomcat 的 server.xml

HTH.

关于java - Tomcat - 不会加载我的 META-INF\services\javax.servlet.ServletContainerInitializer 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7692497/

相关文章:

创建小于 100 个线程时的 Java `OutOfMemoryError`

java - 是什么造成了这种差异 通过在左侧添加额外的零

java - 一次从命令行读取多行输入

android - 将 native 代码添加到现有的 Worklight 混合应用程序

java - 是什么导致了 java.lang.InternalError(它扩展了 VirtualMachineError)

java - 可能的尝试/捕获和内存管理问题?

eclipse - 安装适用于 Eclipse 的 Google 插件时出现问题 : Unable to get past accepting licenses

python - Django WebApp - SSL 升级破坏了 CSS/模板

javascript - Safari 橡皮筋在 DIV 上滚动但不在页面上滚动

visual-studio-2010 - Visual Studio 调试器不会在 IE10 窗口关闭时停止