IBM-web-bnd.xmi 파일에서 WebSphere의 클래스 로더 정책을 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/813202

  •  03-07-2019
  •  | 
  •  

문제

JEE 애플리케이션은 6입니다. 6 개는 6입니다. 클래스 로더 주문 설정은 "응용 프로그램 클래스 로더가 먼저로드 된 클래스"와 War 클래스 로더 정책 옵션이 "응용 프로그램 용 단일 클래스 로더"로 설정해야합니다.

IBM-WEB-BND.XMI 파일 또는 다른 파일 에서이 옵션을 EAR 파일 안에 지정할 수 있으므로 관리자가 수동으로 이러한 설정을 변경할 필요가 없습니까?

앱은 자동화 된 스크립트를 통해 배포되며 배포를 담당하는 사람은 현장에서 벗어나 다른 정치적 이유로 인해 큰 도움이 될 것입니다!

도움이 되었습니까?

해결책

@Matthew Murdoch의 답변 덕분에 솔루션을 생각해 낼 수있었습니다. 여기에 다른 사람을 돕는 경우가 있습니다.

다음과 같은 배포 .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_1241112964096">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment" xmi:id="ApplicationDeployment_1241112964096" startingWeight="1" warClassLoaderPolicy="SINGLE">
    <classloader xmi:id="Classloader_1241112964096" mode="PARENT_LAST"/>
    <modules xmi:type="appdeployment:WebModuleDeployment" xmi:id="WebModuleDeployment_1241112964096" startingWeight="10000" uri="AGS.war">
      <classloader xmi:id="Classloader_1241112964097"/>
    </modules>
  </deployedObject>
</appdeployment:Deployment>

일치하도록 전쟁 파일의 이름을 변경하십시오 (광산을 AGS.War라고합니다).

나는 또한 숫자를 변경했습니다 xmi:id 속성은 독특하다는 것을 확신하기 위해서는 응용 프로그램에서 독특하다는 것이 중요하지는 않지만 확실하지 않습니다.

그런 다음 ANT를 통해 Deployment.xml 파일을 귀의 루트에 넣습니다.

    <ear destfile="${artifactsDir}/${earName}.ear" appxml="${projectName}_EAR/application.xml">
        <fileset dir="${artifactsDir}" includes="${warName}.war"/>
        <fileset dir="${projectName}_EAR/" includes="deployment.xml"/>
    </ear>

다른 팁

편집 (2) : 그만큼 WebSphere Application Server Toolkit (AST) 이 정보를 사용하여 귀 파일을 향상시키는 데 사용할 수있는 도구입니다 (예 : '향상된 귀 구성'섹션을 참조하십시오. 이 문서).

편집 (1) : 이 게시물 'Application Class Loader가 장착 된 클래스'(Application Class Loader First) (Parent_Last 설정)을 EAR 내에서 Deployment.xml 파일에서 설정할 수 있다고 제안합니다.

자동 배포 스크립트를 제어 할 수있는 경우이를 수행 할 수 있습니다. 아래는 웹 모듈 클래스 로더 오더를 '애플리케이션 클래스 로더가있는 클래스로로드 된 클래스'로 설정하기위한 일부 WSADMIN Jython 코드입니다 (흥미롭게도 설정은 parent_last라고합니다.

wsadmin 예제 (Jython) :

def getWebModule(config, applicationName):
    webModules = config.list('WebModuleDeployment').
         split(system.getProperty('line.separator'))
    for webModule in webModules:
        if (webModule.find(applicationName) != -1):
            return webModule
    return None

applicationName = "<Your application name here>"

webModule = getWebModule(AdminConfig, applicationName)
if (webModule != None):
    AdminConfig.modify(webModule, "[[classloaderMode PARENT_LAST]]")
    AdminConfig.save()
else:
    print "Error: Cannot find web module for application: " + applicationName

이 링크를 확인하십시오. 서버 버전을 기반으로 Jython을 사용하여 클래스 로더 정책을 설정하는 방법에는 여러 가지가 있습니다.http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2fcom.ibm.websphere.express.doc%2finfo%2fexp%2fae%2frxml_7lubapp4.html

pkaeding의 답과 유사하게, 나는 이름별로 특정 .war에 특화되지는 않지만 .ear 파일의 기본 .war에 적용 할 때 유용합니다. (.WAR 파일 하나가있는 .WAR 만 있으므로 .WAR 만 있으므로 .WAR의 이름은 항목에서 필요하지 않습니다.)이 접근법은 .WAR의 이름을 재조정 해야하는 상황에 좋을 수 있습니다. 어떤 이유로 든 나중에 프로젝트를 수행하면 업데이트에 대해 걱정할 필요가 없습니다. deployment.xml 파일. 나는 찾았다 deployment.xml 셀 참조 디렉토리 트레일 내부에 묻힌 파일; 파일을 디렉토리 레벨에 놓을 때 표시된대로 괜찮은 경우 Dunno META-INF 그리고 더 깊지 않습니다.

내 특별한 경우에 나는 발견했다 deployment.xml 내 .ear 프로젝트에서 :

u003Cproject_root>meta-inf ibmconfig cells defaultcell applications defaultApp deployments defaultApp

파일의 내용은 다음과 같습니다.

<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_1262775196208">
  <deployedObject xmi:type="appdeployment:ApplicationDeployment"
    xmi:id="ApplicationDeployment_1262775196208" startingWeight="10">
      <classloader xmi:id="Classloader_1262775196208" mode="PARENT_LAST" />
  </deployedObject>
</appdeployment:Deployment>

라인 :

<classloader xmi:id="Classloader_1262775196208" mode="PARENT_LAST" />

원래 읽기 :

<classloader xmi:id="Classloader_1262775196208" mode="PARENT_FIRST" />

참고.와 르에 대한 언급은 없습니다. pkaeding에 언급 된 바와 같이, 당신은 다양한 ID 번호가 동일 할 것으로 기대해서는 안됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top