首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSphere8.5与Spring-5

WebSphere8.5与Spring-5
EN

Stack Overflow用户
提问于 2018-01-08 18:34:10
回答 5查看 10.6K关注 0票数 5

Websphere 8.5.5与Spring 5兼容吗?spring5中引用的验证API ( Validation 5)导致了MethodNotFound异常。有什么指针/补丁可以解决这个问题吗?没有升级到Websphere 9吗?

由: javax/validation/Configuration.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider;引起( org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@25d460de)从org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@25d460de)加载从org.springframework.validation.beanvalidation.LocalValidatorFactoryBean类调用的com.ibm.ws.classloader.CompoundClassLoader@1c7dbdd9 )(从文件加载:../spring 5.0.2.RELEASE.jar由com.ibm.ws.classloader.CompoundClassLoader@1c7dbdd9

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-01-09 17:18:17

javax/validation/Configuration.getDefaultParameterNameProvider方法是在Bean验证1.1中添加的,因此指示您正在使用的Spring试图使用Bean验证1.1API。根据https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html的说法:

从Spring5.0开始,该类需要Bean验证1.1+

WebSphere 8.5.5提供了Bean验证1.0,直到9.0版本才添加对Bean验证1.1的支持。因此,您需要使用Spring4.x或WebSphere 9.x。

票数 7
EN

Stack Overflow用户

发布于 2018-12-06 18:27:43

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

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

下面是Maven依赖项的示例。

代码语言:javascript
复制
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

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

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

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

这是一个样本..。

代码语言:javascript
复制
<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>
票数 5
EN

Stack Overflow用户

发布于 2018-12-14 17:07:25

@是正确的,尽管WebSphere 8.5.5提供了Bean验证1.0,但这是可能的。为此,您需要更改应用程序的类加载器。

要通过UI实现这一点,请转到Applications -> WebSphere enterprise -> --您的应用程序-> 类加载和更新检测--并将类加载程序顺序更改为由本地类加载器加载的类--首先(父类的最后一个)。这个“使类加载器在将类加载委托给其父类之前尝试从其本地类路径加载类。”

如果您正在部署EAR,并且希望此更改传播到内部应用程序,则可以将WAR类加载器策略更改为用于应用程序的单类加载程序,也可以更改单个war的类加载器(在EAR中单击Manage Modules -> Your Module,然后更改类加载程序命令)。

只要您提供了validation-api的一个版本(我使用了2.0.1.Final),),您就应该通过上述问题。

下面的wasadmin.sh脚本将应用上述设置(用应用程序的名称替换app_name ):(贷记)

代码语言:javascript
复制
dep = AdminConfig.getid('/Deployment:app_name/');
depObject = AdminConfig.showAttribute(dep, 'deployedObject');
AdminConfig.modify(depObject, [['warClassLoaderPolicy', 'SINGLE']]);
classldr = AdminConfig.showAttribute(depObject, 'classloader');
AdminConfig.modify(classldr, [['mode', 'PARENT_LAST']]);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48156126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档