2013-10-09 1 views
2

RAD의 기본 제공 도구 대신 Maven을 사용하여 애플리케이션을 빌드하고 배포하도록 애플리케이션을 변환했습니다. 대부분 잘 돌아 갔지만 마지막으로 "gotcha"는 애플리케이션에 "parent last/application"이라는 클래스 로더 정책이 필요하다는 것입니다. 지금은 WAS plugin for Maven을 사용하면 응용 프로그램을 완전히 제거하고 다시 설치하는 것처럼 보이므로 코드를 변경하고 응용 프로그램을 다시 배포 할 때마다 관리 콘솔을 통해 진행해야하므로이 작업을 자동화하고 싶습니다. 배포 된 EAR에 클래스 로더 설정을 내장 할 수 있다면 작업 속도가 훨씬 빨라질 것입니다.WebSphere 및 Maven 용 deployment.xml

클래스 로더 구성은 RAD 관리 파일 "EAR 프로젝트의"META-INF/ibmconfig "폴더에있는"deployment.xml "에서 제어됩니다. 필자는 EAR에이 디렉토리 구조를 포함시킬 수 있다고 생각합니다. WebSphere에 배포 할 때 제대로 작동하지만이 파일의 내용에 대해 더 염려합니다. 그것은이 같은 같습니다

<?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_1460348645719"> 
    <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1460348645719" startingWeight="10" warClassLoaderPolicy="SINGLE"> 
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1460348645719" startingWeight="10000" uri="MyWarProject1.war"/> 
    <modules xmi:type="appdeployment:EJBModuleDeployment" xmi:id="EJBModuleDeployment_1460348645719" startingWeight="5000" uri="MyEJBProject1.jar"/> 
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1460348645720" startingWeight="10000" uri="MyWarProject2.war"/> 
    <classloader xmi:id="Classloader_1460348645719" mode="PARENT_LAST"/> 
    ... 

응용 프로그램의 모든 모듈은 EJBModuleDeployment_1460348645719로 ID가, 그리고 내가 RAD를 통해 WAS에 응용 프로그램이 처음 출판되었을 때이이 만들어진 같은데요. 새로운 Maven 화 프로젝트를 새로운 개발자에게 제공하면이 deployment.xml 파일을 사용할 수 있습니까? 아니면 일반적으로 RAD가 관리하는 특정 WAS 인스턴스에만 해당하는 부분이 있습니까?

나중에 애플리케이션에 모듈을 추가하면 Maven으로 새 모듈 ID를 어떻게 생성합니까? EJBModuleDeployment_123과 같은 ID를 만들거나 RAD/WAS가 실제로 관리해야하는 항목일까요? Jython 스크립트를 작성하여 Maven과 어떻게 든 통합 할 수 있는지 궁금 해서요.하지만 작동하는지 또는 필요한 경우인지 확실하지 않습니다.

+0

ID의 숫자와 관련하여 (EJBModuleDeployment_123과 같은 ID를 구성 할 수 있습니까? 아니면 실제로 RAD/WAS에서 관리해야 할 것입니까?), 원하는대로 사용할 수 있습니다 (at 최소 WAS 7.0 및 8.5.5) – butallmj

답변

1

일반적으로 maven으로 내 응용 프로그램을 배포 한 다음 wsadmin 스크립트 (Jython)를 실행하여 다음과 같은 구성 정보를 변경합니다 (클래스 로더 정책, 공유 라이브러리 등).

Jenkins 작업을 통해 maven 작업과 wsadmin 스크립트를 함께 실행하여 함께 수행되도록합니다.

+0

흠 좋습니다. 좋습니다. 물론, 나는 자이 썬에서 wsadmin 스크립트를 작성하는 법을 배워야 할 필요가있다.;) – FrustratedWithFormsDesigner

+1

동의하는 것은 배우는 것이지만 이것을 더 쉽게 만드는 샘플이있다. http://pic.dhe.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.express.doc%2Finfo%2Fexp%2Fae%2Ftxml_classloader.html. 솔직히 이것이 관리 콘솔이 편리하게 제공되는 곳입니다. UI 액션과 동등한 wsadmin 명령을 표시 할 수 있습니다 (불행히도 모든 액션을 다루지는 않지만 클래스 로딩을 다루고 있습니다) – Manglu