|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 패키지 다음의 패키지 | 프레임 있어 프레임 없음 |
참조처:
설명
인터페이스의 개요 | |
---|---|
RMIConnection | 클라이언트로부터 서버측의 MBeanServer 구현에 MBeanServer 요구를 송신하기 위해서 사용되는 RMI 객체입니다. |
RMIServer | RMI 연결기와의 접속의 확립에 사용되는 RMI 객체입니다. |
클래스의 개요 | |
---|---|
RMIConnectionImpl | RMIConnection 인터페이스의 구현입니다. |
RMIConnectionImpl_Stub | |
RMIConnector | 원격 RMI 연결기에의 접속입니다. |
RMIConnectorServer | 원격 클라이언트로부터의 RMI 베이스의 접속을 작성하는 JMX API 연결기 서버입니다. |
RMIIIOPServerImpl | IIOP 로부터 export 되어 IIOP 로부터 export 된 RMI 객체로서 클라이언트 접속을 작성하는 RMIServerImpl 입니다. |
RMIJRMPServerImpl | JRMP 로부터 export 되어 JRMP 로부터 export 된 RMI 객체로서 클라이언트 접속을 작성하는 RMIServer 객체입니다. |
RMIServerImpl | 연결기 서버를 나타내는 RMI 객체입니다. |
RMIServerImpl_Stub |
RMI 연결기는, RMI 를 사용해 클라이언트 요구를 원격 MBean 서버에 전송 하는, JMX 원격 API용의 연결기입니다. 이 패키지에서는, RMI 연결기의 사용자가, 클라이언트측 및 서버측에서 직접 참조할 필요가 있는 클래스를 정의합니다. 사용자가 직접 참조하지 않는 클래스도 정의합니다만, 이러한 클래스는, RMI 연결기의 구현이 다른 경우도 상호 운용할 수 있도록(듯이) 정의할 필요가 있습니다.
RMI 연결기는, RMI 의 JRMP 및 IIOP 트랜스폴트를 지원합니다.
JMX 원격 API 의 대부분의 연결기와 같게, RMI 도 주소로서 JMXServiceURL
를 가지고 있는 것이 보통입니다. 이 주소의 프로토콜 부분은, 디폴트의 RMI 트랜스폴트 (JRMP)를 사용하는 연결기의 경우 rmi
, RMI/IIOP 를 사용하는 연결기의 경우 iiop
가 됩니다.
RMI 연결기 주소에는, 다음의 2 개의 형식이 있습니다.
javax.management.remote.rmi.RMIServerRMIServer
형 Java 객체이다. 이 주소 형식을 사용해, URL 내의 외부 디렉토리 엔트리로부터 RMI Stub가 취득된다. 외부 디렉토리는, @link javax.naming JNDI 에 의해 인식되는 디렉토리의 어떤 것인가로, 일반적으로은 RMI 레지스트리, LDAP, 또는 COS
주소의 자세한 것은 이하로 설명합니다.
일반적으로, RMI 연결기 서버를 작성하려면 ,javax.management.remote.JMXConnectorServerFactory#newJMXConnectorServerJMXConnectorServerFactory.newJMXConnectorServer
메소드에 RMI 연결기 주소를 지정합니다. 연결기 서버의 접속처 MBean 서버도, 이 메소드의 파라미터로서 지정할 수 있습니다. 다른 방법으로서 연결기 서버를 MBean 로서 MBean 서버에 등록하는 방법도 있습니다.
RMI 연결기 서버는,javax.management.remote.rmi.RMIConnectorServerRMIConnectorServer
의 인스턴스를 조회해도 작성할 수 있습니다. 이 조회는, 명시적으로 행해도 MBean 서버의 createMBean
메소드를 개입시켜 행해도 괜찮습니다.
RMI 트랜스폴트 (JRMP 또는 IIOP)를 선택하려면 , 연결기 서버의 작성시에,serviceURL
의 protocol
부분에 rmi
또는 iiop
를 지정합니다. RMIServerImpl
의 적절한 서브 클래스를 인스턴스화해,RMIConnectorServer
생성자 으로 지정하는 것에 의해, 특별한 연결기 서버를 작성할 수도 있습니다.
지정한 serviceURL
의 URL 패스가 빈 상태(empty)의 경우(옵션의 호스트와 포트에 계속되는 부분), 또는 serviceURL
를 지정하지 않았던 경우, 연결기 서버에 의해, 클라이언트가 접속을 위해서(때문에) 사용할 수 있는 새로운 JMXServiceURL
가 작성됩니다.
다음과 같은 serviceURL
의 경우:
service:jmx:rmi://host:port
연결기 서버는 javax.management.remote.rmi.RMIJRMPServerImplRMIJRMPServerImpl
를 생성한다. 다음과 같은 JMXServiceURL
가 반환된다:
service:jmx:rmi://host:port/stub/XXXX
여기서 XXXX
는, 개행 문자없이 BASE64 encode 처리된, 생성된 객체의 직렬화 형식의 Stub입니다.
다음과 같은 serviceURL
의 경우:
service:jmx:iiop://host:port
연결기 서버는 javax.management.remote.rmi.RMIIIOPServerImplRMIIIOPServerImpl
를 생성한다. 다음과 같은 JMXServiceURL
가 반환된다:
service:jmx:iiop://host:port/ior/IOR:XXXX
IOR:XXXX
는, 생성된 객체의 IOR(Interoperable Object Reference)의 표준 CORBA encode
serviceURL
가 존재하지 않는 경우, 사용자 지정의 RMIServerImpl
가 필요하게 된다. 이 객체상의 toStub
메소드가 Stub
의 인스턴스를 돌려주는 경우, 연결기 서버는 상기의 iiop
형식을 사용해 JMXServiceURL
를 생성한다. 그 외의 경우,rmi
형식을 사용해 JMXServiceURL
를 생성한다
사용자 지정의 serviceURL
내의 host
는 옵션입니다. 존재하는 경우, 생성된 JMXServiceURL
에 카피됩니다만, 존재하지 않는 경우는 무시됩니다. 존재하지 않는 경우, 생성된 JXMServiceURL
는 로컬 호스트명을 가집니다.
사용자 지정의 serviceURL
내의 port
도 옵션입니다. 존재하는 경우, 생성된 JMXServiceURL
에 카피됩니다. 존재하지 않는 경우, 생성된 JMXServiceURL
는 포트를 가지지 않습니다. rmi
프로토콜을 사용하는 serviceURL
에서는,port
가 존재하는 경우, 생성된 원격 객체가 export 되는 포트를 나타냅니다. 그 이외의 영향은 없습니다.
사용자가 JMXServiceURL
는 아니고 RMIServerImpl
을 지정했을 경우, 생성된 JMXServiceURL
의 host
부분에 로컬 호스트명이 들어갑니다. port
부분은 없습니다.
연결기 서버의 작성시로 지정되는 serviceURL
주소에는, 생성된 주소 (상기) 대신에, 지정 또는 생성된 RMIServer
Stub의 포함처가 되는 「디렉토리 주소」를 지정할 수도 있습니다. 이 경우, 클라이언트에서도 서버로도, 이 디렉토리 주소가 사용됩니다.
이 경우,serviceURL
는 다음의 몇개의 형식을 취합니다.
service:jmx:rmi://host:port/jndi/jndi-name
service:jmx:iiop://host:port/jndi/jndi-name
jndi-name
는,javax.naming.InitialContext.bind
로 지정 가능한 캐릭터 라인입니다.
여기에서도,host
와 :port
는 생략 가능합니다.
연결기 서버는, 프로토콜 (rmi
또는 iiop
)에 근거해 RMIServerImpl
를 생성합니다. rmi
의 경우,port
가 지정되고 있으면 사용됩니다. 연결기 서버는, 기동시에,toStub
메소드를 사용해 이 객체로부터 Stub를 파생해, 지정된 jndi-name
를 사용해 객체를 포함합니다. 예의 같게, JNDI API. 에 의해 정의된 프로퍼티이 조회됩니다.
예를 들어, 다음과 같은 JMXServiceURL
의 경우:
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
연결기 서버는 RMIJRMPServerImpl
를 생성해, 아래와 같이 JNDI명을 사용해 그 Stub를 포함합니다.
rmi://myhost/myname
이것은, 호스트 myhost
의 디폴트 포트로 실행되고 있는 RMI 레지스트리내의 엔트리 myname
입니다. RMI 레지스트리는, 로컬 호스트로부터의 접속을 허가할 뿐입니다. 따라서, 이 경우,myhost
는, 연결기 서버가 실행되고 있는 호스트의 이름이 됩니다.
이 JMXServiceURL
에서는, 최초의 rmi:
로 RMI 연결기, 2 번째의 rmi:
로 RMI 레지스트리가 지정되고 있습니다.
이제(벌써) 1 개(살)예를 듭니다. 다음과 같은 JMXServiceURL
의 경우:
service:jmx:iiop://ignoredhost/jndi/ldap://dirhost:9999/cn=this, ou=that
연결기 서버는 RMIIIOPServerImpl
를 생성해, 아래와 같이 JNDI명을 사용해 그 Stub를 포함합니다.
ldap://dirhost:9999/cn=this, ou=that
이것은, 호스트 dirhost
의 포트 9999 로 실행되고 있는 LDAP 디렉토리내의 엔트리 cn=this, ou=that
입니다.
다음과 같은 JMXServiceURL
의 경우:
service:jmx:iiop://ignoredhost/jndi/cn=this, ou=that
연결기 서버는 RMIIIOPServerImpl
를 생성해, 아래와 같이 JNDI명을 사용해 그 Stub를 포함합니다.
cn=this, ou=that
이 경우, JNDI API 를 적절히 구성해, 사용하는 디렉토리의 정보를 지정할 필요가 있습니다.
이러한 예에서는, 연결기 서버, 연결기 클라이언트 모두, 호스트명 ignoredhost
를 사용하지 않습니다. 이 호스트명은 생략 가능합니다. 다음의 예를 참조해 주세요.
service:jmx:iiop:///jndi/cn=this, ou=that
그런데도, 연결기 서버가 실행되고 있는 호스트의 이름을 사용하는 것을 추천합니다. 일반적으로, 이 호스트명은, 디렉토리 호스트명과는 다릅니다.
디폴트의 JRMP 트랜스폴트의 사용시는,RMIConnectorServer
생성자 의 environment
의 jmx.remote.rmi.client.socket.factory
및 jmx.remote.rmi.server.socket.factory
속성을 사용해, RMI 소켓 팩토리를 지정할 수 있습니다. 이러한 속성의 값은, 각각 RMIClientSocketFactory
형 또는 RMIServerSocketFactory
형이 아니면 안됩니다. 이러한 팩토리는, 연결기에 관련지을 수 있었던 RMI 객체를 작성할 때 사용됩니다.
일반적으로, RMI 연결기 클라이언트의 구축에는,JMXConnectorFactory
와 프로토콜 rmi
또는 iiop
를 가지는 JMXServiceURL
를 사용합니다.
JMXServiceURL
가 서버로 생성되었을 경우 (상기의「서버에 의해 생성된 연결기 주소」를 참조), 클라이언트는, 이 URL를 직접 또는 간접적으로 서버로부터 취득할 필요가 있습니다. 일반적으로, 서버는,JMXServiceURL
를 사용 가능하게 하기 위한(해), 이 URL 를 파일 또는 검색 서비스에 포함합니다.
JMXServiceURL
가 디렉토리 구문을 사용하는 경우 (상기의「디렉토리 엔트리에 근거하는 연결기 주소」를 참조), 이것은 클라이언트에 제공됩니다. 또는, 클라이언트와 서버의 양쪽 모두가 어느 디렉토리 엔트리를 사용해야할 것인가를 인식하고 있습니다. 예를 들어, Whatsit 에이전트의 연결기 서버는, 호스트 myhost
상의 RMI 레지스트리에 포함되고 있는 엔트리 whatsit-agent-connector
를 사용한다고 합니다. 이 경우, 클라이언트와 서버의 양쪽 모두가 아래와 같은 적절한 JMXServiceURL
를 인식할 수 있습니다.
service:jmx:rmi:///jndi/rmi://myhost/whatsit-agent-connector
RMI Stub의 형태가 RMIServer
인 경우는,RMIConnector
의 적절한 생성자 을 사용해 직접 RMI 접속을 구축할 수 있습니다.
IIOP 트랜스폴트를 사용하는 경우, 클라이언트와 서버는, 속성 java.naming.corba.orb
를 사용해, 사용하는 ORB 를 지정할 수 있습니다. ORB 와의 접속은, 연결기 서버의 경우는 start
실행시, 연결기 클라이언트의 경우는 javax.management.remote.rmi.RMIConnector#connect(java.util.Map) connect
실행시에 확립됩니다. java.naming.corba.orb
속성이 환경 Map에 포함되는 경우, IIOP Stub의 접속에는 이 속성치 (ORB
)가 사용됩니다. 그 이외의 경우,org.omg.CORBA.ORBorg.omg.CORBA.ORB.init((String[]) null, (Properties) null)
가 불려 가 새로운 org.omg.CORBA.ORB 가 작성됩니다. 이 ORB 는, 같은 JVM 내의 후속의 RMI 연결기 클라이언트 또는 서버로 재사용할 수 있습니다.
같은 순서로 새로운 ORB 를 작성할 수도 있습니다. 지정된 java.naming.corba.orb
속성이 ORB
를 포인트 하고 있지 않는 경우,
가 throw 됩니다. IllegalArgumentException
IIOP 원격 객체 (Stub 또는 서버)가 수동으로 작성되어 ORB 에 접속된 뒤 RMIConnector 및 RMIConnectorServer 에게 건네지는 경우, 여기서 설명한 기구는 적용되지 않습니다.
RMI 연결기 클라이언트 또는 서버가 그 피어로부터 미지의 클래스의 인스턴스를 수신했을 경우, RMI 접속으로 코드의 동적 다운로드가 유효하게 되어 있을 때는, 피어에 의해 지정된 코드 베이스로부터 클래스를 다운로드할 수 있습니다. 상세한 것에 대하여는,「Dynamic code downloading using Java RMI」를 참조해 주세요.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 패키지 다음의 패키지 | 프레임 있어 프레임 없음 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.