2014-01-29 2 views
10

클래스 로더를 변경해야하는 스프링 MVC 웹 애플리케이션이 있습니다. 클래스 로더를 PARENT_LAST와 동일하게 변경해야합니다. 나는 WAS 6.1을 사용하고 있으며 이미 작업을 수행하기 위해 복사 할 수있는 이전 웹 애플리케이션의 jacl 스크립트를 가지고있다.자바 클래스 로더 설정 방법 PARENT_LAST

마지막 응용 프로그램에서는 Apache ant가 사용되었으며 jacl 스크립트를 실행하는 데 종속적 인 배포를 수행했습니다.

내 새 웹 응용 프로그램에서 maven install을 사용하여 war 파일을 만들고 해당 war 파일을 내 응용 프로그램 서버에 배포하고 있습니다.

maven을 사용하여 클래스 로더를 PARENT_LAST로 설정하려면 어떻게해야합니까? 나는 콘솔에서 그것을하는 방법을 알고 있지만 좋은 스크립트를 사용하여 그것을 할 수있는 방법이 있다면.

또한이 설정은 war 파일의 어딘가에 배치되므로 응용 프로그램을 배포 할 때 설정이 선택됩니다. 이 질문은 jacl 스크립트가 어떻게 작동하는지에 대한 나의 이해 부족에서 비롯된 것입니까?

감사합니다.

+0

'java' 태그를 제거하는 것이 확실하지 않다는 것이 정당화 될 수 있습니까? – Torxed

답변

16

당신은 단지 당신이 통제 할 수없는 WAR 파일 자체를 배포,하지만 당신은 EAR 파일에 WAR 파일이있는 경우에는은 deployment.xml 솔루션을 사용 할 수 있습니다. 은 deployment.xml 파일은 다음과 같이 보일 것입니다 :

<?xml version="1.0" encoding="UTF-8"?> 
<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_1347529484613"> 
    <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1347544766353" startingWeight="99" warClassLoaderPolicy="SINGLE"> 
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1347543866613" startingWeight="1" uri="YourWebApp.war" classloaderMode="PARENT_LAST"/> 
    <classloader xmi:id="Classloader_1347543866613" mode="PARENT_LAST"/> 
    </deployedObject> 
</appdeployment:Deployment> 

당신은 당신이 할 필요가 src/main/application/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml 될 것입니다 당신이 src/main/application를 사용하는 가정 당신의 EAR 프로젝트 빌드의 올바른 위치에 파일을 추가하는 것입니다 완료되면 Maven을 정상적으로 사용하여 EAR을 빌드하십시오.

서버를 배치하는 동안 WAS에서 선택합니다.

+0

감사합니다. 정말 좋은 답변입니다. 나는 이제 전쟁 대신에 귀를 짓는 데 필요한 환경을 바꿀지를 이해합니다. 그것은 불행한 일입니다. 하지만 다른 대안은 배포 후 웹 관리 콘솔에서 항상 수동으로 설정됩니다. – Richie

+1

맞습니다. WAS가 고유 한 배치 설명자를 가지고있는 많은 (그러나 전부는 아님) 배치 특정 설정이 EAR 파일에 있습니다. 우리는 WAR 파일뿐만 아니라 EAR 파일을 배치하는 것이 배포의 용이성 때문에 주로 우리에게 유리하다는 것을 발견했습니다. – DanielBarbarian

1

Websphere는 deployment.xml 파일을 사용하여 ear 파일의 각 모듈에 대한 배치 설정을 제어합니다. 다음과 같은 경로에은 deployment.xml의 클래스 로더의 설정을 변경할 수 있습니다

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

난 몰라 Maven에서 어떻게 구성 할 수 있는지 알고 있어야합니다.

2

AFAIK 어셈블리 중에 PARENT_LAST의 WAR를 미리 구성 할 수있는 방법이 없습니다. 클래스로드 정책은 배포 중에 지정되므로 응용 프로그램을 배포하는 방법에 따라 설정 방법이 달라집니다.

스크립트를 사용하여 정책을 변경하는 것은 간단합니다. 스크립트는 wsadmin 도구를 사용하여 실행됩니다. 자이 썬 스 니펫은 아래 작업을 수행한다. 그것은 쉽게 Jacl로 개종 될 수 있습니다.

dep = AdminConfig.getid('/Deployment:app_name/') 
depObject = AdminConfig.showAttribute(dep, 'deployedObject') 
classldr = AdminConfig.showAttribute(depObject, 'classloader') 
AdminConfig.modify(classldr, [['mode', 'PARENT_LAST']]) 
AdminConfig.save()