JBoss EAP 7.1 + Spring Boot Application: не найден валидатор для ограничения 'javax.validation.constraints.NotBlank' - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь развернуть приложение Spring Boot (2.0.2) на сервере JBoss EAP 7.1.

Код, вызывающий проблему:

import javax.validation.constraints.NotBlank;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

@Component
@Validated
public class AppProperties {

  @NotBlank
  private String name;

Когда приложениеразвернут на JBoss Я получаю следующее исключение:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
16:44:25,861 ERROR [org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter] (ServerService Thread Pool -- 6 7)

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'app' to com.example.security.config.AppProperties:

    Property: app.contextpath
    Value: /api
    Origin: class path resource [application.yml]:5:18
    Reason: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'. Check configuration for 'name'

Action:

Update your application's configuration

Я попытался добавить файл jboss-deploy-structure.xml со следующим содержимым в WEB-INF / classes:

<jboss-deployment-structure>
  <ear-subdeployments-isolated>true</ear-subdeployments-isolated>
  <deployment>
    <exclude-subsystems>
      <subsystem name="jaxrs"/>
    </exclude-subsystems>
    <exclusions>
      <module name="javaee.api"/>
      <module name="javax.validation.api"/>
      <module name="javax.faces.api"/>
      <module name="org.hibernate.validator"/>
    </exclusions>
  </deployment>
</jboss-deployment-structure>

Но не повезло.Какой обходной путь?Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 18 июня 2018

javax.validation.constraints.NotBlank является частью Bean Validation 2.0 и, следовательно, Java EE 8. Я подозреваю, что EAP 7.1 пока не поддерживает эту функцию.

0 голосов
/ 28 июня 2019

Хотя этому вопросу уже год, я столкнулся с той же проблемой и не смог найти решение.

Это, я знаю, будет работать для Spring Boot 2.1.x и JBoss 7.1, не уверен насчет версий до этого.

Нам, очевидно, нужно исключить org.hibernate.validator и javax.validation.api.Неясно, что нам также нужно исключить javax.faces.api (он имеет транзитивную зависимость от javax.validation.api).За исключением того, что javax.faces вызывает сбой при запуске JBoss из-за отсутствия библиотек jsf.Затем мы можем просто исключить подсистему jsf.

<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="jsf" />
        </exclude-subsystems>
        <exclusions>
            <module name="javax.validation.api" />
            <module name="javax.faces.api" />
            <module name="org.hibernate.validator" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

Если вам не нужен JSF от jboss, это должно сработать.

0 голосов
/ 17 июня 2018

Согласно этой статье файл jboss-deploy-structure.xml должен быть помещен в «развертывание верхнего уровня в META-INF (или WEB-INF для веб-развертываний)».

Так что с вашей текущей настройкой вещи, сконфигурированные в xml, не применяются, поэтому, если xml помещен в правильное место, он может работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...