Как развернуть приложение весенней загрузки на сервере EAP?

Я пытаюсь развернуть приложение весенней загрузки на сервере 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)

Я не понимаю, почему это не работает, поэтому будет очень благодарна за любую помощь.

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

Kenster 24.08.2018 20:59

@Kenster Я добавил все сообщение об ошибке, хотя казалось, что то, что у меня было раньше, было основной проблемой.

Taylor Handy 24.08.2018 21:12

Исключением является отказ с откатом. Вы пробовали это без зависимости от отката? Это похоже на еще один встроенный контейнер, и вам не нужен встроенный контейнер, потому что jboss предоставляет его. У нас есть пара войн с весенней загрузкой, которые развертываются в EAP 6.4, и у них нет встроенного контейнера. Они зависят от s-b-starter-web и исключают s-b-starter-tomcat.

Kenster 24.08.2018 21:27

@Kenster благодарит за предложение, к сожалению, я только что попробовал, но по-прежнему выдает ту же ошибку. Что странно, так это то, что у меня есть еще один проект, который является spring -boot на eap 7 и отлично работает. Эти два даже не настолько разные конфигурации.

Taylor Handy 24.08.2018 21:37

По-моему, пружинный ботинок и EAP .. ой .. почему?

so-random-dude 24.08.2018 22:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
5
1 695
1

Ответы 1

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

Другие вопросы по теме