Я пытаюсь развернуть приложение весенней загрузки на сервере EAP 7. Приложение отлично работает как автономное приложение с использованием встроенного сервлета tomcat в spring boot, но когда я пытаюсь развернуть его как WAR для EAP 7, я получаю следующее исключение:
14:55:11,156 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 70) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host."projectName": org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host."projectName": java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
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:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
at org.apache.tomcat.websocket.WsWebSocketContainer.<clinit>(WsWebSocketContainer.java:78)
at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131)
at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47)
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:184)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.res.StringManager from [Module "deployment.projectName.war:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:196)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)
... 12 more
14:55:11,156 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "projectName.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host.\"projectName"" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host.\"projectName": java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.res.StringManager from [Module \"deployment.projectName.war:main\" from Service Module Loader]"}}
14:55:11,187 INFO [org.jboss.as.server] (ServerService Thread Pool -- 37)
14:55:11,249 INFO [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report
WFLYCTL0186: Services which failed to start: service jboss.undertow.deployment.default-server.default-host."projectName": org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host."projectName": java.lang.NoClassDefFoundError: org/apache/tomcat/util/res/StringManager
Я сделал то, что рекомендует документация по весенней загрузке при преобразовании из файла jar в war.
В частности, я объявил зависимость от spring-boot-starter-web, за исключением tomcat:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
Я также импортировал pom-зависимости от spring -boot:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
Я также добавил зависимость для spring-boot-starter-undertow с предоставленным объемом:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<scope>provided</scope>
</dependency>
Я удалил spring-boot-maven-plugin и расширил свой класс приложения, переопределив SpringBootServletInitializer.
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
Я не понимаю, почему это не работает, поэтому будет очень благодарна за любую помощь.
@Kenster Я добавил все сообщение об ошибке, хотя казалось, что то, что у меня было раньше, было основной проблемой.
Исключением является отказ с откатом. Вы пробовали это без зависимости от отката? Это похоже на еще один встроенный контейнер, и вам не нужен встроенный контейнер, потому что jboss предоставляет его. У нас есть пара войн с весенней загрузкой, которые развертываются в EAP 6.4, и у них нет встроенного контейнера. Они зависят от s-b-starter-web и исключают s-b-starter-tomcat.
@Kenster благодарит за предложение, к сожалению, я только что попробовал, но по-прежнему выдает ту же ошибку. Что странно, так это то, что у меня есть еще один проект, который является spring -boot на eap 7 и отлично работает. Эти два даже не настолько разные конфигурации.
По-моему, пружинный ботинок и EAP .. ой .. почему?




Удалена зависимость от затмения, которая сначала не работала, но затем я закрыл eclipse и снова открыл, и это сработало. Я действительно не знаю, почему это сработало, но сработало.
Вы включили только одну строку из сообщения об ошибке, которое вы получаете? Можете ли вы понять из всей ошибки, почему у вас зависимость от StringManager?