带Spring-5的Websphere 8.5

Jeb*_*tin 2 validation spring websphere-8

Websphere 8.5.5是否与Spring 5兼容?在spring5(validation-api 5)中引用的Validation API导致MethodNotFound异常。任何可用的指针/补丁程序都可以解决此问题-升级到Websphere 9不够?

引起原因:java.lang.NoSuchMethodError:javax / validation / Configuration.getDefaultParameterNameProvider()Ljavax / validation / ParameterNameProvider; (由org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@25d460de从文件:/opt/IBM/WebSphere/AppServer/plugins/javax.j2ee.validation.jar加载)从类org.springframework.validation.beanvalidation.LocalValidatorFactoryBean调用(由com.ibm.ws.classloader.CompoundClassLoader@1c7dbdd9从文件:../ spring-context-5.0.2.RELEASE.jar加载

小智 5

该方法javax/validation/Configuration.getDefaultParameterNameProvider已添加到Bean验证1.1中,因此表明您正在使用的Spring验证程序正在尝试使用Bean验证1.1 API。根据https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html

从Spring 5.0开始,此类需要Bean Validation 1.1+

WebSphere 8.5.5提供Bean Validation 1.0,直到9.0版才添加对Bean Validation 1.1的支持。因此,您将需要使用Spring 4.x或WebSphere9.x。


Rob*_*ker 5

上面的答案不正确。您可以在WebSphere 8.5 中运行Spring 5。这可能不是适合您情况的完美解决方案,但这将使您走上正确的道路。

1.) 提供您的 Bean 验证 1.1 JAR

以下是 Maven 依赖项的示例。

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

2.) 将以下部署.xml 文件添加到 EAR 文件中的以下位置。

/myAppEAR/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml

3.) 在deployment.xml 文件的内容中,必须将classloaderMode 设置为PARENT_LAST。您还必须修改此代码以使用正确的 WAR 文件名。

这是一个示例...

<appdeployment:Deployment xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:appdeployment="http://www.ibm.com/websphere/appserver/schemas/5.0/appdeployment.xmi" xmi:id="Deployment_1422578178899">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1422578178899" startingWeight="10" warClassLoaderPolicy="SINGLE">
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1422578178899" startingWeight="10000" **uri="myApp.war"** **classloaderMode="PARENT_LAST"**/>
    <classloader xmi:id="Classloader_1422578178899" **mode="PARENT_LAST"**/>
 </classloader>
  </deployedObject>
</appdeployment:Deployment>
Run Code Online (Sandbox Code Playgroud)