JavaTM Platform
Standard Ed. 6

java.rmi.activation
클래스 ActivationGroup

java.lang.Object 
  상위를 확장 java.rmi.server.RemoteObject 
      상위를 확장 java.rmi.server.RemoteServer 
          상위를 확장 java.rmi.server.UnicastRemoteObject 
              상위를 확장 java.rmi.activation.ActivationGroup
모든 구현된 인터페이스:
Serializable , ActivationInstantiator , Remote


public abstract class ActivationGroup
extends UnicastRemoteObject
implements ActivationInstantiator

ActivationGroup 는, 그룹내의 「기동 가능한」객체의 새로운 인스턴스를 생성해, 그룹의 ActivationMonitor 에 대해서, 객체의 기동이나 정지, 혹은 그룹 전체의 정지를 통지합니다.

ActivationGroup 는 최초, 이하의 어떤 것이나 방법으로 작성합니다.

activator만이,ActivationGroup 를 다시 작성할 수가 있습니다. 필요에 따라서 activator는, 등록된 기동 그룹 마다 별개의 VM 를 child process등으로 해서 생성해, 기동 요구를 적절한 그룹에 리다이렉트(redirect) 합니다. VM 를 생성하는 방법은, 구현에 따라서 다릅니다. 기동 그룹은, static 메소드 ActivationGroup.createGroup 를 사용해 작성됩니다. createGroup 메소드로 그룹을 작성하는 경우, 다음의 2 개의 필요 조건이 있습니다. 1) 그룹은,ActivationGroup 의 구상 서브 클래스인 것, 2) 그룹에는, 이하의 2 개의 인수를 취하는 생성자 이 있는 것입니다.

그룹이 작성되면(자),ActivationGroup 의 디폴트의 구현에서는, 이 그룹의 ActivationGroupDesc 을 작성했을 때에 요구된 프로퍼티에 의해 시스템의 프로퍼티이 오버라이드(override) 되어java.rmi.RMISecurityManager 가 디폴트의 system security 매니저로서 설정됩니다. 그룹내에서 객체가 기동될 때, 특정의 프로퍼티의 설정을 필요로 하는 어플리케이션의 경우, 임의의 ActivationDesc 를 작성하기 전 (디폴트의 ActivationDesc 가 작성되기 전)에, 어플리케이션에 필요한 프로퍼티으로 구성되는 특별한 Properties 객체를 작성합니다. 그리고, 그 Properties 를 설정해 ActivationGroupDesc 를 작성하고 나서,ActivationGroup.createGroup 를 사용합니다. java.rmi.RMISecurityManager 이외의 시큐리티 매니저가 필요한 어플리케이션의 경우는, ActivativationGroupDescriptor 프로퍼티 리스트로,java.security.manager 프로퍼티을 인스톨 하는 시큐리티 매니저의 이름으로 설정할 수 있습니다.

도입된 버젼:
1.2
관련 항목:
ActivationInstantiator , ActivationGroupDesc , ActivationGroupID , 직렬화 된 형식

필드의 개요
 
클래스 java.rmi.server. RemoteObject 로부터 상속된 필드
ref
 
생성자 의 개요
protected ActivationGroup (ActivationGroupID  groupID)
          지정된 기동 그룹 식별자를 가지는 기동 그룹을 구축합니다.
 
메소드의 개요
protected  void activeObject (ActivationID  id, MarshalledObject <? extends Remote > mobj)
          이 protected 메소드는, 서브 클래스가 그룹의 모니터에 activeObject 콜백을 실시하기 위해서(때문에) 필요합니다.
abstract  void activeObject (ActivationID  id, Remote  obj)
          그룹의 activeObject 메소드는, 객체가 export 될 때 불려 갑니다.
static ActivationGroup createGroup (ActivationGroupID  id, ActivationGroupDesc  desc, long incarnation)
          현재의 VM 로 사용하는 기동 그룹을 작성 및 설정합니다.
static ActivationGroupID currentGroupID ()
          현재의 기동 그룹의 식별자를 돌려줍니다.
static ActivationSystem getSystem ()
          VM 가 사용하는 기동 시스템을 돌려줍니다.
protected  void inactiveGroup ()
          이 protected 메소드는, 서브 클래스가 그룹의 모니터에 inactiveGroup 콜백을 실시하기 위해서(때문에) 필요합니다.
 boolean inactiveObject (ActivationID  id)
          그룹의 inactiveObject 메소드는,Activatable.inactive 메소드의 호출을 통해서 간접적으로 불려 갑니다.
static void setSystem (ActivationSystem  system)
          VM 가 사용하는 기동 시스템을 설정합니다.
 
클래스 java.rmi.server. UnicastRemoteObject 로부터 상속된 메소드
clone , exportObject , exportObject , exportObject , unexportObject
 
클래스 java.rmi.server. RemoteServer 로부터 상속된 메소드
getClientHost , getLog , setLog
 
클래스 java.rmi.server. RemoteObject 로부터 상속된 메소드
equals , getRef , hashCode , toString , toStub
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , wait , wait , wait
 
인터페이스 java.rmi.activation. ActivationInstantiator 로부터 상속된 메소드
newInstance
 

생성자 의 상세

ActivationGroup

protected ActivationGroup(ActivationGroupID  groupID)
                   throws RemoteException 
지정된 기동 그룹 식별자를 가지는 기동 그룹을 구축합니다. 이 그룹은 java.rmi.server.UnicastRemoteObject 로서 export 됩니다.

파라미터:
groupID - 그룹의 식별자
예외:
RemoteException - 이 그룹을 export 할 수 없는 경우
도입된 버젼:
1.2
메소드의 상세

inactiveObject

public boolean inactiveObject(ActivationID  id)
                       throws ActivationException ,
                              UnknownObjectException ,
                              RemoteException 
그룹의 inactiveObject 메소드는,Activatable.inactive 메소드의 호출을 통해서 간접적으로 불려 갑니다. 원격 객체의 구현에서는, 객체가 종료할 때, 즉, 객체가 동작중이 아니게 될 때,Activatableinactive 메소드를 호출할 필요가 있습니다. 객체가 종료시에 Activatable.inactive 를 호출하지 않으면 그룹은 자신이 작성한 객체에의 강참조를 보관 유지하므로, 객체는 결코 가베지 컬렉트되지 않습니다.

그룹의 inactiveObject 메소드는, 원격 객체를 RMI 런타임으로부터 안 export 해, RMI 착신 호출의 접수를 할 수 없게 합니다. 객체의 안 export는, 보류중 혹은 실행중의 호출을 객체가 가지고 있지 않은 경우에만 가능합니다. ActivationGroup 의 서브 클래스는, 이 메소드를 오버라이드(override) 해 객체를 안 export 할 필요가 있습니다.

RMI 런타임으로부터 객체를 삭제 후, 그룹은 그 ActivationMonitor 에, 모니터의 inactiveObject 메소드를 통해서, 원격 객체가 기동중이 아닌 것을 통지할 필요가 있습니다. 이것에 의해, 이후의 기동 요구 때에, activator에 의해 원격 객체가 다시 기동됩니다.

이 메소드는, 그룹의 모니터에 객체가 종료하고 있는 것을 통지할 뿐입니다. 객체의 안 export에 필요한 그 외의 조건을 만족할지 어떨지는, ActivationGroup 의 구상 서브 클래스에 의합니다.

파라미터:
id - 객체의 기동 식별자
반환값:
객체가 정상적으로 종료했을 경우는 true, 그렇지 않은 경우는 false
예외:
UnknownObjectException - 객체가 불명의 경우. 벌써 종료하고 있는 경우도 있다
RemoteException - 호출 통지 모니터가 실패했을 경우
ActivationException - 그룹이 정지하고 있는 경우
도입된 버젼:
1.2

activeObject

public abstract void activeObject(ActivationID  id,
                                  Remote  obj)
                           throws ActivationException ,
                                  UnknownObjectException ,
                                  RemoteException 
그룹의 activeObject 메소드는, 객체가 export 될 때 불려 갑니다. export는,Activatable 객체의 구축, 혹은 Activatable.exportObject 의 명시적인 호출에 의해 실행됩니다. 객체가 기동되고 있는 것을 그룹의 ActivationMonitor 에 대해서 아직 통지하고 있지 않는 경우, 그룹은, 모니터의 activeObject 메소드를 사용해 이것을 통지할 필요가 있습니다.

파라미터:
id - 객체의 식별자
obj - 구현된 원격 객체
예외:
UnknownObjectException - 객체가 미등록의 경우
RemoteException - 호출 통지 모니터가 실패했을 경우
ActivationException - 그룹이 정지하고 있는 경우
도입된 버젼:
1.2

createGroup

public static ActivationGroup  createGroup(ActivationGroupID  id,
                                          ActivationGroupDesc  desc,
                                          long incarnation)
                                   throws ActivationException 
현재의 VM 로 사용하는 기동 그룹을 작성 및 설정합니다. 기동 그룹을 설정할 수 있는 것은, 기존의 기동 그룹이 설정되어 있지 않은 경우 뿐입니다. 기동 그룹이 createGroup 메소드를 사용해 설정되는 것은, 착신하는 activate 요구를 실행하기 위해서,Activator 가 기동 그룹의 재작성을 개시했을 때입니다. 그룹은, 최초로 ActivationSystem 를 사용해 등록된 뒤에, 이 메소드를 사용해 작성할 수 있게 됩니다.

ActivationGroupDesc 로 지정된 그룹의 클래스는,ActivationGroup 의 구상 서브 클래스이며, 또, 2 개의 인수를 취하는 public 생성자 을 가지고 있을 필요가 있습니다. 그 인수는,ActivationGroupDesc 로부터 취득되는, 그룹의 ActivationGroupID 와 그룹의 초기화 데이터를 포함한 MarshalledObject 입니다.

ActivationGroupDesc 로 지정된 그룹의 클래스명이 null 의 경우, 이 메소드는, 디폴트의 기동 그룹의 구현 클래스명에 포함되는 그룹 기술자와 같이 동작합니다.

주: 독자적인 기동 그룹을 작성하는 어플리케이션의 경우는, 그 그룹의 시큐리티 매니저를 설정할 필요가 있습니다. 그렇게 하지 않으면 그룹내에서 객체를 기동할 수 없습니다. 디폴트에서는 java.rmi.RMISecurityManager 가 시큐리티 매니저로서 설정됩니다.

시큐리티 매니저가 그룹 VM 로 설정되어 있는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkSetFactory 메소드를 호출합니다. 이 결과,SecurityException 가 되는 일이 있습니다. 다른 시큐리티 매니저를 설정할 필요가 있는 어플리케이션의 경우, 그룹의 ActivationGroupDesc 로 지정된 정책 파일로, 새로운 시큐리티 매니저를 설정하기 위해서 필요한 허가를 그 그룹에게 줄 필요가 있습니다 (주: 이것은, 그룹이 시큐리티 매니저를 다운로드 및 설정하는 경우에 필요).

그룹이 작성되면(자),ActivationSystem 에 그룹이 기동한 것을 통지하기 위해서 activeGroup 메소드가 불려 가 이 메소드는 그룹의 ActivationMonitor 를 돌려줍니다. 어플리케이션으로부터 activeGroup 를 개별적으로 호출할 필요는 없습니다. 왜냐하면, 이 처리는 이 메소드에 의해 행해지기 때문입니다.

그룹이 작성되면(자), 이후의 currentGroupID 메소드에의 호출은, 그룹이 종료할 때까지는 이 그룹의 식별자를 돌려줍니다.

파라미터:
id - 기동 그룹의 식별자
desc - 기동 그룹의 기술자
incarnation - 그룹의 생성 번호. 그룹을 최초로 작성했을 때에는 0
반환값:
VM 가 사용하는 기동 그룹
예외:
ActivationException - 그룹이 벌써 존재하는 경우, 혹은 그룹의 작성중에 에러가 발생했을 경우
SecurityException - 그룹을 작성하는 허가가 주어지지 않았던 경우. 주:시큐리티 매니저의 checkSetFactory 메소드의 디폴트의 구현은, 「setFactory」의 RuntimePermission 를 필요로 하는
도입된 버젼:
1.2
관련 항목:
SecurityManager.checkSetFactory()

currentGroupID

public static ActivationGroupID  currentGroupID()
현재의 기동 그룹의 식별자를 돌려줍니다. 현재 기동중의 그룹이 VM 에 없는 경우는 null 를 돌려줍니다.

반환값:
기동 그룹의 식별자
도입된 버젼:
1.2

setSystem

public static void setSystem(ActivationSystem  system)
                      throws ActivationException 
VM 가 사용하는 기동 시스템을 설정합니다. 기동 시스템은, 현재 기동중의 그룹이 없는 경우에만 설정할 수 있습니다. 기동 시스템을 이 호출로 설정할 수 없는 경우는,ActivationSystem 에의 참조를 취득하기 위해서,getSystem 메소드가, activator의 레지스트리로 이름 「java.rmi.activation.ActivationSystem」를 검색합니다. 디폴트에서는, 기동 시스템의 검색에 사용되는 포트 번호는,ActivationSystem.SYSTEM_PORT 로 정의되고 있습니다. 이 포트 정의는, 프로퍼티 java.rmi.activation.port 를 설정하는 것으로써 오버라이드(override) 할 수 있습니다.

시큐리티 매니저가 존재하는 경우, 이 메소드는 최초로 시큐리티 매니저의 checkSetFactory 메소드를 호출합니다. 이 결과, SecurityException 가 throw 되는 일이 있습니다.

파라미터:
system - ActivationSystem 에의 원격 참조
예외:
ActivationException - 기동 시스템이 벌써 설정되어 있는 경우
SecurityException - 기동 시스템을 설정하는 허가가 주어지지 않았던 경우. 주:시큐리티 매니저의 checkSetFactory 메소드의 디폴트의 구현은, 「setFactory」의 RuntimePermission 를 필요로 하는
도입된 버젼:
1.2
관련 항목:
getSystem() , SecurityManager.checkSetFactory()

getSystem

public static ActivationSystem  getSystem()
                                  throws ActivationException 
VM 가 사용하는 기동 시스템을 돌려줍니다. 기동 시스템은,setSystem 메소드로 설정할 수 있습니다. setSystem 메소드로 기동 시스템을 설정할 수 없는 경우는,ActivationSystem 에의 참조를 취득하기 위해서,getSystem 메소드가 activator의 레지스트리로 이름 「java.rmi.activation.ActivationSystem」를 검색합니다. 디폴트에서는, 기동 시스템의 검색에 사용되는 포트 번호는,ActivationSystem.SYSTEM_PORT 로 정의되고 있습니다. 이 포트 정의는, 프로퍼티 java.rmi.activation.port 를 설정하는 것으로써 오버라이드(override) 할 수 있습니다.

반환값:
VM 또는 그룹이 사용하는 기동 시스템
예외:
ActivationException - 기동 시스템을 취득할 수 없는지, 바인드되어 있지 않은 경우. 기동 시스템은 정지중인
도입된 버젼:
1.2
관련 항목:
setSystem(java.rmi.activation.ActivationSystem)

activeObject

protected void activeObject(ActivationID  id,
                            MarshalledObject <?  extends Remote > mobj)
                     throws ActivationException ,
                            UnknownObjectException ,
                            RemoteException 
이 protected 메소드는, 서브 클래스가 그룹의 모니터에 activeObject 콜백을 실시하기 위해서(때문에) 필요합니다. 이 호출은, 그룹의 ActivationMonitor 에 곧바로 전송 됩니다.

파라미터:
id - 객체의 식별자
mobj - 원격 객체의 Stub를 포함한, 정렬화 된 객체
예외:
UnknownObjectException - 객체가 미등록의 경우
RemoteException - 호출 통지 모니터가 실패했을 경우
ActivationException - 기동 에러가 발생했을 경우
도입된 버젼:
1.2

inactiveGroup

protected void inactiveGroup()
                      throws UnknownGroupException ,
                             RemoteException 
이 protected 메소드는, 서브 클래스가 그룹의 모니터에 inactiveGroup 콜백을 실시하기 위해서(때문에) 필요합니다. 이 호출은, 그룹의 ActivationMonitor 에 곧바로 전송 됩니다. 또, VM 가 사용하는 현재의 그룹이 null 로 설정됩니다.

예외:
UnknownGroupException - 그룹이 미등록의 경우
RemoteException - 호출 통지 모니터가 실패했을 경우
도입된 버젼:
1.2

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.