이 절에서는 Java EE(Java™
Platform, Enterprise Edition) 서버에 연결하는 방법과 여러 개의 벤더 서버를 관리하는
방법에 대해 설명합니다.
시작하기 전에
제품은 JSR-77(Java 스펙 요청 77)로도 알려진 Java EE 관리 스펙을 완전히
구현합니다. 그러나 Java EE 스펙과
WebSphere® Application Server
구현 사이의 일부 세부적인 차이점은 Java 관리 클라이언트 프로그램을 개발하여
여러 개의 벤더 서버를 관리하는 시기를 이해하는 데 중요합니다.
정보는 Java EE(
Java Platform, Enterprise
Edition) 관리 스펙 및 MBean Java API(Application Programming Interface)
문서
를 참조하십시오. 이 Information Center에서
를 클릭하십시오.
이 태스크 정보
관리 클라이언트 프로그램이 WebSphere Application Server에 배타적으로 액세스하는 경우에는
Java API 및 WebSphere Application Server 정의 MBean을 사용하여 이를 관리할 수 있습니다. 프로그램이 WebSphere Application Server 및 기타 Java EE 서버 모두에
액세스해야 하는 경우에는 Java EE 관리 스펙에 정의된 API를 사용하십시오.
프로시저
- Java EE 서버에 연결하십시오.
JNDI(Java Naming and Directory Interface)에서
관리 엔터프라이즈 Bean을 찾아서 서버에 연결하십시오. 관리 엔터프라이즈 Bean은 Application Server에서 실행되는
원격 인터페이스를 MBean 서버에 제공합니다.
관리 엔터프라이즈 Bean운
WebSphere Application Server 특정 기능을 제공하지 않는 것을 제외하고는
거의
WebSphere Application Server 관리 클라이언트처럼 작동합니다. 다음 예제에서는 관리 엔터프라이즈 Bean을 찾는 방법을 보여줍니다.
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.Management;
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "iiop://myhost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
예는 RMI(Remote Method Invocation) 커넥터의 포트 및 호스트를 전달하여 Application Server에 대한
초기 컨텍스트를 가져옵니다.
RMI 포트를 명확하게 코딩해야 합니다(이 경우 2809). 찾아보기 메소드는 관리 엔터프라이즈 Bean 홈의 위치인
ejb/mgmt/MEJB 경로를 찾습니다. 그런 다음, 예는 다음 단계에서 사용할 mejb Stateless 세션 Bean을
작성합니다.
- 여러 개의 벤더 Application Server를 관리하십시오.
mejb
Stateless 세션 Bean을 작성한 후 이 세션 Bean을 사용하여
Application Server를 관리할 수 있습니다. Application Server의 컴포넌트는
스펙이 정의하는 MBean으로 나타납니다. 이 MBean은 모두 j2eeType 특성을 갖고 있습니다.
이 특성은 스펙이 정의하는 유형 세트 중 하나입니다. 이러한 모든 유형에는 노출되는 속성 세트가 있습니다.
여러 개의 벤더 Application Server를
관리할 때 지침으로 다음 예를 사용하십시오.
예는 JVM(Java Virtual Machine) MBean을 사용하여 Application Server의 현재 힙 크기를
판별합니다.
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = mejb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if (hasStats) {
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
"stats");
String[] statisticNames = stats.getStatisticNames();
if (Arrays.asList(statisticNames).contains("heapSize")) {
System.out.println("Heap size: " + stats.getHeapSize());
}
}
queryNames() 메소드는 먼저 JVM MBean을 조회합니다. getAttribute 메소드는
statisticsProvider 속성을 조회하고 이 MBean이 통계를 제공하는지 판별합니다. MBean이 통계를 제공하면,
예는 stats 속성에 액세스한 후 getHeapSize() 메소드를 호출하여 힙 크기를 가져옵니다.
결과
이 예의 강점은 모든 벤더 Application Server에서 예를 실행할 수 있다는 것입니다. 예는
MBean이 선택적으로 정의된 인터페이스(이 경우 StatisticsProvider 인터페이스)를
구현할 수 있다는 것을 보여줍니다. MBean이 StatisticsProvider 인터페이스를
구현할 경우 Application Server가 특정 통계(이 경우 힙 크기)를 지원하는지 여부를
볼 수 있습니다. 이 값이 선택사항이더라도, 스펙은 힙 크기를 정의합니다. Application Server가 힙 크기를 지원하면
JVM의 힙크기를 표시할 수 있습니다.