2010-01-11 13 views
3

EAR 파일을 IBM WebSpehre 서버에 배포하고 있습니다. 6.1 - 배포 파일에 저장되어있는 EAR 응용 프로그램 이름에 액세스하려고합니다. 'display-name'. 관련 주제에 대한 스택 오버플로 게시물을 살펴보면 Java MBean API 또는 IBM의 WAS API를 통해 가능하다는 것을 알 수있었습니다. 이러한 API 목록이 요약 된 곳을 찾을 수 없습니까? 하나는보고 시작합니다. WAS 설치 위치를 하드 코드하고 'installedApps'디렉토리를보고 파일을 찾을 수는 있지만 동적은 아닙니다.IBM WebSphere 6.1에 배포 된 EAR의 application.xml 파일에 액세스하는 방법

누구나 이러한 API를 사용해 본 경험이 있습니까? 배포 된 EAR의 표시 이름을 동적으로 찾는 다른 방법은 없습니까?

EDIT - 나는이 정보가 다음 속성 "EARAppName.properties"규칙에 따라 명명 된 속성 파일을 동적으로로드하는 이유라고 덧붙여 야합니다. 따라서 원하는 뒤에 합리적인 '이유'가 있음을 알 수 있습니다. 이 응용 프로그램의 정보

EDIT 2 -이 응용 프로그램은 항상 WAS에 배포된다는 점에 유의해야합니다. 그러나 그렇지 않은 경우 일반적인 독점적 인 솔루션이 선호되지만이 경우에는 필요하지 않습니다. 순간.

EDIT 3 - 내가 달성하고자하는 것 : 응용 프로그램 코드 내에서 배치 된 EAR의 표시 이름을 동적으로 찾을 수있는 방법이 있습니까?

+0

원하는대로 질문을 편집하십시오. –

답변

2

이 목적의 모든 이유가 등록 정보 파일을 읽는 경우 다른 접근 방식을 권장합니다.

WebSphere 공유 라이브러리를 사용하십시오. 배포 된 각 EAR 들어

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/tcws_sharedlib.html

은 EAR에 액세스 할 필요가 속성 파일이 포함 된 별도의 디렉토리가 있습니다.

특성 파일이 들어있는 각 디렉토리에 대한 공유 라이브러리 항목을 작성하십시오.

EAR에서 필요한 공유 라이브러리에 대한 공유 라이브러리 참조를 만듭니다.

.

링크가 당신의 접근 방식에 대한 당신에게 어떤 도움이 될 수 있습니다 그러나 아래 : 여기 같은 일을 달성하기 위해 노력하고

Managing applications through programming

Interface AppManagement

+0

이것은 역동적 인 해결책을 제시하는 올바른 경로 일 수 있습니다. 정확히 내가 무엇을 찾고 있었는지는 모르지만 '록큰롤'에 충분히 가깝습니다 - 감사합니다. –

+0

또 다른 문제는 각 EAR 및 환경 (Dev/QA/Prod 등)에 대한 다양한 속성 파일을 관리하는 것입니다. –

0

귀하의 응용 프로그램이 그렇게하는 것이 아니라 응용 프로그램 서버를 포함한 EAR 처리 도구의 경우입니다.

+0

그럼 방법이 있습니까? 자바는 EAR 이름을 발견 할 수있는 방법이 없으면, 리플렉션을 통해 클래스와 메소드에 관한이 정보를 찾을 수있는 방법이 있습니까? –

2

직접 대답이 아니지만 등록 정보 파일에 하드 코딩 된 이름을 사용하는 것이 더 간단하지 않습니까? 결국, 주어진 애플리케이션이 어떤 파일을 로딩해야 하는지를 인식하는 것은 당연한 것처럼 보인다. 배포 설명자에서 display-name을 읽는 코드를 작성하는 것은 이상합니다 (특히 Application Component Provider과 같이 Application Assembler이 소유 한 것에 의존해서는 안됩니다.).

+0

나는 완전히 동의한다 - 요청은 '만들어졌다'고 말한 적이 없다 :) 나는보다 역동적 인 공식을 구상하려고한다. –

1

. 런타임에 Meta-INF/application.xml에있는 ApplicationName을 찾으려고합니다.

Log4J File Appender에서이 AppName을 사용하여 현재 로깅중인 응용 프로그램에 적절한 로그 파일 이름을 만듭니다. 우리에게는 많은 프로그래머와 많은 앱이 있으며 프레임 워크에 몇 가지 규칙을 적용해야합니다.

나는 단순히 호출 할 수 whish :

InputStream in = new MyObject().getClass().getResourceAsStream(“META-INF/application.xml”); 

는 또한 'PARENT_LAST/FIRST'와 '단일 클래스 로더'에 클래스 로더를 변경하는 시도했지만 작동하지 않습니다.

내 WAR 파일과 관련된 파일 시스템에서 application.xml을 찾을 수는 있지만 항상 작동하는지 확신 할 수 없습니다.

JMX Api가 유일한 방법입니까?

관련 문제