Jboss 在类路径上没有检测到 Spring WebApplicationInitializer 类型

Posted

技术标签:

【中文标题】Jboss 在类路径上没有检测到 Spring WebApplicationInitializer 类型【英文标题】:Jboss No Spring WebApplicationInitializer types detected on classpath 【发布时间】:2021-08-31 03:16:24 【问题描述】:

我正在尝试在 JBoss7.1.1 服务器上部署我的项目。但我收到以下消息,我的项目没有得到部署。

 19:13:39,075 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "ips-configuration-dynamic.war" 
 19:13:42,731 INFO  [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ips-configuration-dynamic]] (MSC service thread 1-8) No Spring WebApplicationInitializer types detected on classpath
 19:13:42,781 INFO  [org.jboss.web] (MSC service thread 1-8) JBAS018210: Registering web context: /ips-configuration-dynamic
 19:13:43,723 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "ips-configuration-dynamic.war"

我正在使用 Spring 3.1.1 发行版 jar。提前致谢。

【问题讨论】:

你有一个实现WebApplicationInitializer的类吗?否则你需要一个 web.xml。 是的。你说的对。我没有 web.xml。现在它工作正常。谢谢。 【参考方案1】:

在典型的 servlet 应用程序中,您将拥有一个 web.xml 描述符文件来为您的应用程序声明您的 servlet、过滤器、侦听器、上下文参数、安全配置等。从 servlet 3.0 开始,您可以通过编程方式完成大部分工作。

Servlet 3.0 提供了接口ServletContainerInitializer,您可以实现该接口。您的 servlet 容器将在 META-INF/services/javax.servlet.ServletContainerInitializer 文件中查找该类的实现,将其实例化,然后调用其 onStartup() 方法。

Spring 在该接口之上构建了WebApplicationInitializer,作为适配器/助手。

您需要web.xml 描述符或实现WebApplicationInitializer 的类来设置和运行您的应用程序。

【讨论】:

我的 webapp 中已经有一个 web.xml 文件..但是我在控制台的类路径中显示 No Spring WebApplicationInitializer types detected..我需要在 web.xml 文件中添加一些东西吗关于 WebApplicationInitializer 接口? @namxal 您需要在与 Servlet 3.0 兼容的 servlet 容器中运行,并让您的 web.xml 将您的应用程序声明为使用 Servlet 3.0。其余的将由 Servlet 容器完成。

以上是关于Jboss 在类路径上没有检测到 Spring WebApplicationInitializer 类型的主要内容,如果未能解决你的问题,请参考以下文章

使用 maven 和 spring boot 在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar

在 JBoss EAP 6.4 中没有检测到 HTTP 安全头

春天云网关;在类路径上发现 Spring MVC,与 Spring Cloud Gateway 不兼容问题

在类路径上检测到log4j-over-slf4j.jar和slf4j-log4j12.jar,抢占StackOverflowError。

如果 Spring 安全性在类路径上,则无法使用 @DataJpaTest

杰克逊 2.0 和 Spring 3.1