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 Server に登録する必要があります。このため、ユーザー関係 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, 2013, Oracle and/or its affiliates. All rights reserved.