Ошибка развертывания приложения весенней загрузки на jboss eap 7

Я не могу развернуть приложение Spring BOOT REST на сервере JBOSS EAP 7.

Однако после развертывания на сервере Apache Tomcat 8 он работает нормально.

Основной класс приложения:

@SpringBootApplication(scanBasePackages= {"org.nic"})
@PropertySource(value="classpath:database.properties")
public class PopulationApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(PopulationApplication.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(PopulationApplication.class, args);
    }

}

pom.xml

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <start-class>org.nic.PopulationApplication</start-class>
        </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <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>

         <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>  


        <!-- <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency> -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

Это вызывает следующую ошибку в журналах сервера

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.servlet.filter.OrderedHttpPutFormContentFilter]: Factory method 'httpPutFormContentFilter' threw exception; nested exception is java.lang.VerifyError: Failed to link com/fasterxml/jackson/databind/type/ReferenceType (Module "deployment.nhpmapi-0.0.1-SNAPSHOT.war:main" from Service Module Loader): Cannot inherit from final class
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579)
    ... 35 more

В моей серверной среде был только JBOSS EAP 7.

У меня было исследование, чтобы решить эту проблему, но я не смог добиться успеха.

У меня был последний вариант - удалить конфигурацию Spring BOOT для запуска на JBOSS EAP 7.


person Ankit    schedule 09.06.2018    source источник
comment
Я нашел соответствующую статью https://ilya-murzinov.github.io/articles/spring-boot-jboss/, но, похоже, слишком много настроек для запуска простого веб-приложения на jboss eap 7.   -  person Ankit    schedule 10.06.2018


Ответы (2)


У меня была точно такая же проблема, и я боролся два дня. Наконец-то нашел решение!

java.lang.VerifyError обычно вызывается несогласованностью классов.
Как показано в сообщении об ошибке, это вызвано com.fasterxml.jackson.core.jackson-databind
Поскольку Jboss имеет свой внутренний модуль Джексона, и его версия отличается от указанной в вашем приложении.
Чтобы решить проблему, добавьте jboss-deployment-structure.xml и поместите его под src/main/webapp/WEB-INF:

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
    <deployment>
        <exclusions>
            <module name="com.fasterxml.jackson.core.jackson-annotations" />
            <module name="com.fasterxml.jackson.core.jackson-core" />
            <module name="com.fasterxml.jackson.core.jackson-databind" />
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8"/>
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310"/>
            <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
            <module name="org.slf4j" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Это позволит избежать неявных зависимостей и решит проблему.

Ответ нашел здесь и здесь и здесь благодаря им!

Для получения дополнительной информации:
Причины получения java.lang.VerifyError
Что такое jboss-deployment-structure.xml
Зависимости модулей

person kinolollipop    schedule 17.08.2018
comment
Спасибо тебе друг. - person etech; 14.03.2019
comment
Это идеальное решение - person Gajotres; 27.03.2019

Похоже, Spring не может создавать экземпляры beans из WAR. Можете ли вы проверить, что классы внутри видны и правильно ли загружены?

Похоже, проблема с загрузкой класса.

person Sudhish Nair    schedule 19.06.2018
comment
Can you check classes inside are visible and are loaded properly Как это сделать? - person Ankit; 19.06.2018
comment
Вы можете поделиться структурой своего проекта? Где вы размещаете Spring Jars, внутри папки WAR lib? - person Sudhish Nair; 20.06.2018