Я потратил больше, чем целый день, чтобы найти выход из этой ситуации.
Преамбула
Моя цель - развернуть приложение Spring Boot внутриEAR с двумя другими уже работающими модулями.Я преодолел многие проблемы из-за того, что POM приложения Spring Boot необходимо связать с родительским POM, поскольку структура имеет следующий вид:
/ POM POM
-----> EAR POM
-----> Модуль 1 POM
-----> Модуль 2 POM
-----> ПружинаBoot App POM
Проблема
Приложение Spring Boot правильно выполняет упаковку как WAR и успешно помещается в ухо.Проблема появляется, когда эта Война загружается на JBoss, поскольку есть некоторые проблемы с зависимостью .
Что я сделал
Я играл с jboss-deploy-structure.xml немного и, в конце концов, результат таков ( restService - это приложение с загрузочной пружиной):
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<exclusions>
<!-- WFCORE-209 workaround -->
<module name="javaee.api" />
<module name="org.hibernate.validator"/>
<module name="javax.persistence.api" />
<module name="org.hibernate" />
<!--<module name="javax.validation"/>-->
</exclusions>
<exclude-subsystems>
<subsystem name="jaxrs" />
<subsystem name="datasources" />
<subsystem name="ejb3" />
<subsystem name="infinispan" />
<subsystem name="jca" />
<subsystem name="logging" />
<subsystem name="jdr" />
<subsystem name="jpa" />
<subsystem name="jsf" />
<subsystem name="mail" />
<subsystem name="threads" />
<subsystem name="pojo" />
<subsystem name="sar" />
<subsystem name="transactions" />
<subsystem name="webservices" />
<subsystem name="weld" />
</exclude-subsystems>
<dependencies>
<!-- WFCORE-209 workaround -->
<module name="javax.activation.api" export="true"/>
<module name="javax.annotation.api" export="true"/>
<module name="javax.ejb.api" export="true"/>
<module name="javax.el.api" export="true"/>
<module name="javax.enterprise.api" export="true"/>
<module name="javax.enterprise.deploy.api" export="true"/>
<module name="javax.inject.api" export="true"/>
<module name="javax.interceptor.api" export="true"/>
<module name="javax.jms.api" export="true"/>
<module name="javax.jws.api" export="true"/>
<module name="javax.mail.api" export="true"/>
<module name="javax.management.j2ee.api" export="true"/>
<!-- <module name="javax.persistence.api" export="true"/> -->
<module name="javax.resource.api" export="true"/>
<module name="javax.rmi.api" export="true"/>
<module name="javax.security.auth.message.api" export="true"/>
<module name="javax.security.jacc.api" export="true"/>
<module name="javax.servlet.api" export="true"/>
<module name="javax.servlet.jsp.api" export="true"/>
<module name="javax.transaction.api" export="true"/>
<module name="javax.validation.api" export="true"/>
<module name="javax.ws.rs.api" export="true" services="export"/>
<module name="javax.xml.bind.api" export="true"/>
<module name="javax.xml.registry.api" export="true"/>
<module name="javax.xml.soap.api" export="true"/>
<module name="javax.xml.ws.api" export="true"/>
<!-- This one always goes last. -->
<module name="javax.api" export="true"/>
</dependencies>
</deployment>
<sub-deployment name="CRVbusinessService.war">
<dependencies>
<module name="javax.xml.rpc.api"/>
<module name="javax.wsdl4j.api"/>
</dependencies>
<exclusions>
<module name="org.apache.commons.logging"/>
<module name="org.apache.log4j"/>
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.logmanager.log4j"/>
<module name="org.slf4j"/>
<module name="org.slf4j.impl"/>
</exclusions>
</sub-deployment>
<sub-deployment name="restService.war">
<local-last value="true" />
<dependencies>
<module name="deployment.jpa2.1"/>
</dependencies>
<exclusions>
<module name="org.jboss.logging"/>
<!--<module name="javax.validation"/>-->
<module name="javaee.api" />
</exclusions>
</sub-deployment>
<module name="deployment.jpa2.1" >
<module-alias name="jpa2.1"/>
<resources>
<resource-root path="hibernate-jpa-2.1-api-1.0.0.Final.jar" />
</resources>
</module>
</jboss-deployment-structure>
Однако мне не удалось разобраться с проблемой, поскольку я на самом деле получаю это исключение:
Ошибка запуска приложения: org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'defaultValidator', определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / validation / ValidationAutoConfiguration.class]: сбой вызова метода init;Вложенное исключение: java.lang.NoSuchMethodError: javax.validation.Configuration.getDefaultParameterNameProvider () Ljavax / validation / ParameterNameProvider;
Для получения более подробной информации здесь это SpringЗагрузочное приложение pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>it.test.businessService</groupId>
<artifactId>parent-parent</artifactId>
<version>0.0</version>
</parent>
<groupId>com.crvservice</groupId>
<artifactId>restService</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<failOnMissingWebXml>false</failOnMissingWebXml>
<org.springframework-version>5.0.9.RELEASE</org.springframework-version>
<!--<hibernate.version>5.2.17.Final</hibernate.version>-->
</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>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>development</id>
<properties>
<spring.profiles.active>dev</spring.profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>production</id>
<properties>
<spring.profiles.active>ci</spring.profiles.active>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
</project>
Добавление <module name="javax.validation"/>
в jboss-deploy-structure.xml, похоже, не помогает, как это было с другими подобными проблемами, которые были исправлены путем добавления относительного исключения в Jboss.Я боюсь, что моя версия Spring Boot и каскад всего, что связано, например, hibernate, слишком нова, чтобы работать правильно в этой версии JBoss.
Я что-то упустил?Я оглянулся, но, похоже, мало кто действительно нуждался в таких вещах.
Заранее спасибо.