public class RelationSupport extends Object implements RelationSupportMBean, MBeanRegistration
RelationSupportクラスは、標準MBeanの設計パターンに準拠しています。したがって、ユーザーは、RelationSupportオブジェクトをMBeanとしてインスタンス化し(MBeanの設計パターンに準拠しているため)、MBean Serverに登録して関係サービスに追加することができます。
また、独自のMBean関係クラスの作成時にRelationSupportを拡張して、必須インタフェース(下記参照)の実装を取得することもできます。
ユーザー関係MBeanクラス内にRelationSupportオブジェクトとなるメンバーを追加し、すべてをこのメンバーに委譲することによって必須インタフェースを実装する方法もあります。
RelationSupportは、関係サービスによって処理されるRelationインタフェースを実装します。
関係サービスにアクセスするため、MBean ServerにMBeanとして登録されている場合は、この登録先MBean Serverを取得するためのMBeanRegistrationインタフェースも実装します。
コンストラクタと説明 |
---|
RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list)
RelationSupport オブジェクトを作成します。 |
RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list)
RelationSupport オブジェクトを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
RoleResult |
getAllRoles()
関係に含まれるすべてのロールを返します。
|
Map<ObjectName,List<String>> |
getReferencedMBeans()
関係のさまざまなロールで参照されるMBeanを取得します。
|
String |
getRelationId()
関係サービス内の関係を一意に識別するために使用される関係識別子を返します。
|
ObjectName |
getRelationServiceName()
関係を処理する関係サービスのObjectNameを返します。
|
String |
getRelationTypeName()
関連付けられた関係タイプの名前を返します。
|
List<ObjectName> |
getRole(String roleName)
指定されたロール名のロール値を取得します。
|
Integer |
getRoleCardinality(String roleName)
指定されたロール内で現在参照されているMBeanの数を返します。
|
RoleResult |
getRoles(String[] roleNameArray)
指定された名前のロールの値を取得します。
|
void |
handleMBeanUnregistration(ObjectName objectName, String roleName)
ロールで参照されるMBeanの登録が解除された場合に関係サービスによって使用されるコールバックです。
|
Boolean |
isInRelationService()
オブジェクトを引き続き関係サービスで処理するかどうかを指定する内部フラグを返します。
|
void |
postDeregister()
MBeanサーバーから登録解除したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
postRegister(Boolean registrationDone)
MBeanサーバーへの登録が成功または失敗したあと、MBeanが必要なオペレーションを実行できるようにします。
|
void |
preDeregister()
MBeanサーバーから登録解除する前に、MBeanが必要なオペレーションを実行できるようにします。
|
ObjectName |
preRegister(MBeanServer server, ObjectName name)
MBeanサーバーに登録する前に必要なオペレーションをMBeanが実行することを許可します。
|
RoleList |
retrieveAllRoles()
読取りモードをチェックしないで、関係に含まれるすべてのロールを返します。
|
void |
setRelationServiceManagementFlag(Boolean flag)
この関係を関係サービスで処理するかどうかを指定します。
|
void |
setRole(Role role)
指定されたロールを設定します。
|
RoleResult |
setRoles(RoleList list)
指定されたロールを設定します。
|
public RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport
オブジェクトを作成します。
このコンストラクタは、RelationSupportオブジェクトがユーザーによってMBeanとして登録されたとき、またはRelationSupportを拡張するクラスを持つユーザー関係MBeanを作成するときに使用する必要があります。
関係サービス・レベルでは何も行われません。つまり、RelationSupport
オブジェクトはRelationService
に追加されず、適切な値が提供されたかどうかのチェックも行われません。オブジェクトは、次の場合を除いて必ず作成されます。
- 必須パラメータがすべてnull
の場合
- 同じ名前が2つのロールで使用されている場合
関係として処理するためには、RelationSupport
オブジェクトを関係サービス・メソッドaddRelation()を使って関係サービスに追加する必要があります。
relationId
- 関係サービス内の関係を一意に識別するために使用される関係識別子
関係サービス内で一意でなければいけません。
relationServiceName
- 関係の登録先となる関係サービスのObjectName
更新オペレーション(セット)をチェックする必要があるため、指定された関係の型定義を認識する関係サービスでなければならない
relationTypeName
- 関係タイプの名前。
指定された関係サービス内で作成されたものでなければならない
list
- 関係を初期化するためのロール(Roleオブジェクト)のリスト。null
も可
関連付けられた関係タイプの関係情報に準拠していなければいけません。
InvalidRoleValueException
- 同じ名前が2つのロールで使用されている場合IllegalArgumentException
- 必須パラメータ(関係ID、関係サービスObjectName、関係タイプ名)のいずれかがnull
の場合。public RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport
オブジェクトを作成します。
このコンストラクタは、RelationSupportオブジェクトへの委譲を行うことによって関係で利用できるようにする必要があるインタフェースを、ユーザー関係MBeanが実装したときに使用する必要があります。
このオブジェクトは、関係を処理する関係サービスを認識する必要があります。したがって、この関係サービスの登録先のMBean Serverも認識する必要があります。
制限により、関係MBeanは、それを処理する関係サービスと同じMBeanサーバーに登録する必要があります。このため、ユーザー関係MBeanを作成し、登録する必要があります。ユーザー関係MBeanの登録後、識別されたMBeanサーバー内部で、ラップされたRelationSupportオブジェクトを作成できます。
関係サービス・レベルでは何も行われません。つまり、RelationSupport
オブジェクトはRelationService
に追加されず、適切な値が提供されたかどうかのチェックも行われません。オブジェクトは、次の場合を除いて必ず作成されます。
- 必須パラメータがすべてnull
の場合
- 同じ名前が2つのロールで使用されている場合
関係として処理するためには、RelationSupport
オブジェクトを関係サービス・メソッドaddRelation()を使って関係サービスに追加する必要があります。
relationId
- 関係サービス内の関係を一意に識別するために使用される関係識別子
関係サービス内で一意でなければいけません。
relationServiceName
- 関係の登録先となる関係サービスのObjectName
更新オペレーション(セット)をチェックする必要があるため、指定された関係の型定義を認識する関係サービスでなければならない
relationServiceMBeanServer
- MBeanのラップが登録されている、またはこれから登録されるMBeanサーバー。
関連サービスが登録されている、またはこれから登録されるMBean Serverでなければならない
relationTypeName
- 関係タイプの名前。
指定された関係サービス内で作成されたものでなければならない
list
- 関係を初期化するためのロール(Roleオブジェクト)のリスト。null
も可
関連付けられた関係タイプの関係情報に準拠していなければいけません。
InvalidRoleValueException
- 同じ名前が2つのロールで使用されている場合IllegalArgumentException
- 必須パラメータ(関係ID、関係サービスObjectName、関係サービスMBeanServer、関係タイプ名)のいずれかがnull
である場合。public List<ObjectName> getRole(String roleName) throws IllegalArgumentException, RoleNotFoundException, RelationServiceNotRegisteredException
ロールが存在し、関係タイプに従って読取り可能かどうかをチェックします。
getRole
、インタフェース: Relation
roleName
- ロール名IllegalArgumentException
- ロール名がnullの場合RoleNotFoundException
- 次の場合:
- 指定された名前のロールが存在しない場合
- ロールが読取り不可な場合
RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合setRole(javax.management.relation.Role)
public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException
各ロールが存在し、関係タイプに従って読取り可能かどうかをチェックします。
getRoles
、インタフェース: Relation
roleNameArray
- 取得されるロールの名前から成る配列IllegalArgumentException
- ロール名がnullの場合RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合setRoles(javax.management.relation.RoleList)
public RoleResult getAllRoles() throws RelationServiceNotRegisteredException
getAllRoles
、インタフェース: Relation
RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合public RoleList retrieveAllRoles()
retrieveAllRoles
、インタフェース: Relation
public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException
getRoleCardinality
、インタフェース: Relation
roleName
- ロール名IllegalArgumentException
- ロール名がnullの場合RoleNotFoundException
- 指定された名前のロールが存在しない場合public void setRole(Role role) throws IllegalArgumentException, RoleNotFoundException, RelationTypeNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationNotFoundException
関係の関係タイプに含まれている対応するロール定義に従って、ロールをチェックします。
通知を送信します。関係がMBeanであるかどうかによって、RelationNotificationの型はRELATION_BASIC_UPDATEまたはRELATION_MBEAN_UPDATEになります。
setRole
、インタフェース: Relation
role
- 設定されるロール(名前と新しい値)IllegalArgumentException
- ロールがnullの場合RoleNotFoundException
- 指定された名前のロールが存在しない場合、またはロールが書込み可能でない場合(ロールの初期化時には、書込みアクセス・モードのチェックは行われない)InvalidRoleValueException
- ロールに対して提供された値が無効な場合:
- 指定された値に含まれる参照対象のMBeanの数が予想最小値より小さい場合
- 指定された値に含まれる参照対象のMBeanの数が予想最大値を超えている場合
- 値に含まれる参照対象のMBeanのうち1つが、そのロールのMBeanクラスのオブジェクトでない場合
- そのロールのMBeanが存在しない場合
RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合RelationTypeNotFoundException
- 関係サービスに関係タイプが宣言されていない場合RelationNotFoundException
- 関係サービスに関係が追加されていない場合getRole(java.lang.String)
public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
関係の関係タイプに含まれている対応するロール定義に従って、ロールをチェックします。
ロールが更新されるたびに通知を送信します。関係がMBeanであるかどうかによって、RelationNotificationの型はRELATION_BASIC_UPDATEまたはRELATION_MBEAN_UPDATEになります。
setRoles
、インタフェース: Relation
list
- 設定されるロールのリストIllegalArgumentException
- ロール・リストがnullの場合RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合RelationTypeNotFoundException
- 関係サービスに関係タイプが宣言されていない場合RelationNotFoundException
- 関係サービスに関係MBeanが追加されていない場合getRoles(java.lang.String[])
public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
関係サービスは、このメソッドを呼び出して、関係に、登録解除の影響を反映するためのアクションを取らせます。
このメソッドは、ユーザーからは呼び出されません。
現在の実装は、現在の値(参照対象のMBeanのObjectNameのリスト)を使ってロールを設定します。登録解除されているものは使用しません。
handleMBeanUnregistration
、インタフェース: Relation
objectName
- 登録解除されたMBeanのObjectNameroleName
- MBeanの参照に使用されるロール名IllegalArgumentException
- パラメータがnullの場合RoleNotFoundException
- 関係内にロールが存在しないか、書込み不可である場合InvalidRoleValueException
- ロール値が関連するロール情報に準拠していない場合(関係サービスから呼び出された場合は起こり得ない条件)RelationServiceNotRegisteredException
- 関係サービスがMBeanサーバーに登録されていない場合RelationTypeNotFoundException
- 関係サービスに関係タイプが宣言されていない場合RelationNotFoundException
- このメソッドが、関係サービスに追加されていない関係MBeanに対して呼び出された場合public Map<ObjectName,List<String>> getReferencedMBeans()
getReferencedMBeans
、インタフェース: Relation
ObjectName→String (ロール名)から成るArrayList
public String getRelationTypeName()
getRelationTypeName
、インタフェース: Relation
public ObjectName getRelationServiceName()
getRelationServiceName
、インタフェース: Relation
public String getRelationId()
getRelationId
、インタフェース: Relation
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
MBeanRegistration
preRegister
、インタフェース: MBeanRegistration
server
- MBeanサーバー。MBeanはここに登録される。name
- MBeanのオブジェクト名。MBeanServer
インタフェース内のcreateMBean
またはregisterMBean
メソッドのnameパラメータがnullの場合、この名前もnullになる。この場合、このメソッドは、新しいMBean用にnull以外のObjectNameを必ず返す。name
パラメータがnull以外の場合、通常は値が返されるが、これは必須ではない。Exception
- この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationException
として再スローされる。public void postRegister(Boolean registrationDone)
MBeanRegistration
このメソッドの実装がRuntimeException
またはError
をスローする場合、MBeanサーバーはRuntimeMBeanException
またはRuntimeErrorException
の内部でこれらをそれぞれ再スローします。ただし、postRegister
で例外をスローしてもMBeanの状態は変化しません。MBeanがすでに登録されている(registrationDone
がtrue
である)場合、MBeanの登録は解除されません。
createMBean()
またはregisterMBean()
を呼び出すコードでは、このような例外が発行されたときにMBeanの登録が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。したがって、回避できる場合はpostRegister
の実装で実行時例外またはエラーをスローしないことをお勧めします。
postRegister
、インタフェース: MBeanRegistration
registrationDone
- MBeanがMBeanサーバーに正常に登録されたかどうかを示す。登録に失敗した場合の値はfalse。public void preDeregister() throws Exception
MBeanRegistration
preDeregister
、インタフェース: MBeanRegistration
Exception
- この例外は、MBeanサーバーにキャッチされ、MBeanRegistrationException
として再スローされる。public void postDeregister()
MBeanRegistration
このメソッドの実装がRuntimeException
またはError
をスローする場合、MBeanサーバーはRuntimeMBeanException
またはRuntimeErrorException
の内部でこれらをそれぞれ再スローします。ただし、postDeregister
で例外をスローしてもMBeanの状態は変化しません。MBeanはすでに正常に登録解除されており、その状態のままになります。
unregisterMBean()
を呼び出すコードでは、MBeanの登録解除が失敗したとみなされることがあるため、これによって混乱が生じる可能性があります。したがって、回避できる場合はpostDeregister
の実装で実行時例外またはエラーをスローしないことをお勧めします。
postDeregister
、インタフェース: MBeanRegistration
public Boolean isInRelationService()
isInRelationService
、インタフェース: RelationSupportMBean
Boolean.TRUE
、それ以外の場合はBoolean.FALSE
public void setRelationServiceManagementFlag(Boolean flag) throws IllegalArgumentException
RelationSupportMBean
この関係を関係サービスで処理するかどうかを指定します。
関係サービスは管理インタフェースを使用して関係にアクセスするので、このメソッドは公開の必要があります。このメソッドの使用は推奨されていません。たとえ使用しても、関係サービス内の関係オブジェクトの登録に影響はありませんが、誤った情報が提供される恐れがあるからです。
setRelationServiceManagementFlag
、インタフェース: RelationSupportMBean
flag
- 関係を関係サービスで処理するかどうかIllegalArgumentException
- パラメータがnullの場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.