我正在尝试在JBoss EAP 7.1服务器上部署Spring Boot(2.0.2)应用程序。
导致问题的代码是:
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-deployment-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>
但是,没有运气。解决方法是什么?提前谢谢。
答案 0 :(得分:1)
即使这个问题已经提出一年了,我也遇到了同样的问题,却找不到解决方案。
我知道,这将适用于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>
假设您不需要jboss的JSF,这应该可以。
答案 1 :(得分:0)
根据this article,jboss-deployment-structure.xml应放置在META-INF(或用于Web部署的WEB-INF)的顶级部署中。&#39;。< / p>
因此,对于您当前的设置,不会应用xml中配置的内容,因此如果将xml放在正确的位置,它可能会起作用。
答案 2 :(得分:0)
javax.validation.constraints.NotBlank
是Bean Validation 2.0的一部分,因此是Java EE 8.我怀疑EAP 7.1还不支持此功能。