복붙노트

[SPRING] Websphere 8.5와 Spring-5

SPRING

Websphere 8.5와 Spring-5

Websphere 8.5.5는 Spring 5와 호환됩니까? spring5 (유효성 검사 API 5)에서 참조 된 유효성 검사 API는 MethodNotFound 예외를 발생시킵니다.이 문제를 해결할 수있는 모든 포인터 / 패치가 있습니다. Websphere 9 로의 업그레이드가 부족합니다.

해결법

  1. ==============================

    1.메소드 javax / validation / Configuration.getDefaultParameterNameProvider가 Bean Validation 1.1에 추가되었으므로 사용중인 Spring Validator가 Bean Validation 1.1 API를 사용하려고 시도하고 있음을 나타냅니다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html에 따라 :

    메소드 javax / validation / Configuration.getDefaultParameterNameProvider가 Bean Validation 1.1에 추가되었으므로 사용중인 Spring Validator가 Bean Validation 1.1 API를 사용하려고 시도하고 있음을 나타냅니다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html에 따라 :

    WebSphere 8.5.5는 Bean 유효성 검증 1.0을 제공하고 버전 9.0까지 Bean 유효성 검증 1.1에 대한 지원을 추가하지 않았습니다. 따라서 Spring 4.x 또는 WebSphere 9.x를 사용해야합니다.

  2. ==============================

    2.위의 대답은 정확하지 않습니다. WebSphere 8.5에서 Spring 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>
    

    2.) 다음의 deployment.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>
    
  3. ==============================

    3.@ rob-breidecker가 정확하다. 이것은 WebSphere 8.5.5가 Bean Validation 1.0을 제공하더라도 가능하다. 이렇게하려면 응용 프로그램의 클래스 로더를 변경해야합니다.

    @ rob-breidecker가 정확하다. 이것은 WebSphere 8.5.5가 Bean Validation 1.0을 제공하더라도 가능하다. 이렇게하려면 응용 프로그램의 클래스 로더를 변경해야합니다.

    UI를 통해 그렇게하려면 응용 프로그램 -> WebSphere 엔터프라이즈 응용 프로그램 -> 응용 프로그램 -> 클래스로드 및 갱신 감지로 이동하여 클래스 로더 순서를 로컬 클래스 로더가 먼저로드 된 클래스 (상위 마지막)로 변경하십시오. 이것은 "클래스 로딩을 부모 클래스로 위임하기 전에 클래스 로더가 로컬 클래스 경로에서 클래스를로드하려고 시도합니다."

    EAR을 전개하고이 변경 사항을 내부 어플리케이션에 전파하려면 WAR 클래스 로더 정책을 단일 클래스 로더로 변경하거나 개별 WAR의 클래스 로더를 변경하십시오 (EAR에서 모듈 관리 -> 모듈 클릭). 클래스 로더 순서 변경).

    당신이 valid-api (2.0.1.Final을 사용)의 버전을 제공하는 한, 당신은 위의 문제를 통과해야합니다.

    다음 wasadmin.sh 스크립트는 위의 설정을 적용합니다 (app_name을 응용 프로그램 이름으로 바꿉니다). (credit)

    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']]);
    
  4. from https://stackoverflow.com/questions/48156126/websphere-8-5-with-spring-5 by cc-by-sa and MIT license