E スクリプトおよびMBeanを使用した管理
次の項が含まれます:
スクリプトを使用したサービスの構成
アプリケーションでユーザーおよびロールAPIを使用しており、デフォルトのcn
属性とは異なるプロバイダのユーザー属性にアクセスする必要がある場合は、必要なユーザー属性を使用するように認証プロバイダを構成し、プロバイダを適切に初期化する必要があります。
次の手順に従って、プロバイダの初期化を変更するスクリプトを作成し、ユーザーおよびロールAPIで指定のユーザー属性を使用して、構成されたプロバイダのデータにアクセスできるようにします。
例E-1 使用例
ドメインでidstore.ldap
認証プロバイダを使用していることを前提とします。次のコマンドを実行します:
wlst.sh /tmp/updateServiceInstanceProperty.py -si idstore.ldap -key "myPropName" -value "myValue"
このインスタンス・プロバイダの指定のプロパティが追加(または更新)されます。
<serviceInstance provider="idstore.ldap.provider" name="idstore.ldap"> ... <property name="myPropName" value="myValue"/> ... </serviceInstance>
MBeanを使用したサービスの構成
OPSSには、Fusion Middleware Controlおよびスクリプトによってサービスの管理、構成および監視に使用される、一連のJMXに準拠したJava EE Beanが用意されています。MBeanは、Java EEアプリケーションでのみ使用することをお薦めします。
次の各項では、OPSS MBeanの使用方法について説明します。
関連項目:
サポートされるOPSS MBean
表E-1に、OPSSでサポートされるMBeanとその基本機能、およびタスクを実行するために(カスタム・スクリプトまたはJava SEプログラムで)使用するオブジェクト名を示します。
表E-1 OPSS MBeansのリスト
MBean | 機能 | MBeanServerオブジェクト名 |
---|---|---|
更新または書込み操作では、サーバーを再起動して変更を有効にする必要があります。 |
|
|
資格証明データを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。アクセスは、セキュリティ管理者のみに制限されます。 |
|
|
デフォルトのコンテキストで構成されたセキュリティ・ストアで、グローバル・ポリシーを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。 |
|
|
デフォルトのコンテキストで構成されたセキュリティ・ストアで、アプリケーション・ポリシーを管理します。 更新または書込み操作の場合は、変更を有効にするためにサーバーを再起動する必要はありません。変更はすべて即座に反映されます。 |
|
|
|
現在のJMXコンテキストにログインしたユーザーが特定のロールに属しているかどうかを検証します。これによって構成の変更が容易になることはありません。 |
|
OPSS MBeanの使用
OPSS MBeanをコールするには、スクリプトを作成してWLSTを使用して実行するか、Javaプログラムを作成するか、Fusion Middleware ControlのMBeanブラウザを使用します。
Fusion Middleware Controlを使用してOPSS MBeanをコールするには、次の手順を実行します。
OPSS MBeansを使用したプログラミング
次の例は、JpsConfiguration
MBeanのコール方法を示しています。次の点に注意してください:
-
次のJARファイルがクラスパスに入っていることを前提とします。
-
$ORACLE_HOME/oracle_common/modules/oracle.jps/jps-api.jar
-
$ORACLE_HOME/oracle_common/modules/oracle.jps/jps-mbeans.jar
-
$ORACLE_HOME/oracle_common/modules/oracle.jmx/jmxframework.jar
-
$ORACLE_HOME/oracle_common/modules/oracle.idm/identitystore.jar
-
$WEBLOGIC_HOME/server/lib/wljmxclient.jar
-
-
接続は、
init
メソッドを使用して確立されています。 -
更新操作の後では必ず、維持のためのコールを行います。
import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import javax.management.InstanceNotFoundException; import javax.management.MBeanException; import javax.management.MBeanServerConnection; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; import javax.management.ReflectionException; import javax.management.openmbean.CompositeData; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import javax.naming.Context; import oracle.security.jps.mas.mgmt.jmx.credstore.PortableCredential; import oracle.security.jps.mas.mgmt.jmx.credstore.PortablePasswordCredential; import oracle.security.jps.mas.mgmt.jmx.policy.PortableApplicationRole; import oracle.security.jps.mas.mgmt.jmx.policy.PortableCodeSource; import oracle.security.jps.mas.mgmt.jmx.policy.PortableGrant; import oracle.security.jps.mas.mgmt.jmx.policy.PortableGrantee; import oracle.security.jps.mas.mgmt.jmx.policy.PortablePermission; import oracle.security.jps.mas.mgmt.jmx.policy.PortablePrincipal; import oracle.security.jps.mas.mgmt.jmx.policy.PortableRoleMember; import oracle.security.jps.mas.mgmt.jmx.util.JpsJmxConstants; public class InvokeJpsMbeans { private static JMXConnector connector; private static MBeanServerConnection wlsMBeanConn; private static ObjectName configName; private static ObjectName credName; private static ObjectName appPolName; private static ObjectName gloPolName; private static ObjectName adminPolName; private final static String STR_NAME =String.class.getName(); public static void main(String args[]) { // Intialize connection and retrieve connection object init(); //Check registration if (isRegistered(configName)) System.out.println("Jps Config MBean is registered"); if (isRegistered(credName)) System.out.println("Jps Credential Mbean is registered"); if (isRegistered(appPolName)) System.out.println("Jps Application policy Mbean is registered"); if (isRegistered(gloPolName)) System.out.println("Jps Global policy Mbean is registered"); if (isRegistered(adminPolName)) System.out.println("Jps Admin Policy Mbean is registered"); //invoke MBeans invokeConfigMBeanMethods(); invokeCredentialMBeanMethods(); invokeApplicationPolicyMBeanMethods(); invokeGlobalPolicyMBeanMethods(); invokeAdminPolicyMBeanMethhods(); } private static void invokeConfigMBeanMethods() { String KEY = "myKey"; String VALUE = "myValue"; String strVal; try { strVal = (String) wlsMBeanConn.invoke(configName, "updateProperty", new Object[] { KEY, VALUE }, new String[] { STR_NAME, STR_NAME }); wlsMBeanConn.invoke(configName,"persist",null,null); strVal = (String) wlsMBeanConn.invoke(configName, "getProperty", new Object[] { KEY }, new String[] { STR_NAME }); System.out.println("Updated the property: " + strVal.equals(strVal)); strVal = (String) wlsMBeanConn.invoke(configName, "removeProperty", new Object[] { KEY }, new String[] { STR_NAME }); wlsMBeanConn.invoke(configName,"persist",null,null); } catch (InstanceNotFoundException e) { // auto-generated catch block e.printStackTrace(); } catch (MBeanException e) { // auto-generated catch block e.printStackTrace(); } catch (ReflectionException e) { // auto-generated catch block e.printStackTrace(); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } } private static void invokeCredentialMBeanMethods() { String USER = "jdoe"; String PASSWORD = "password"; String ALIAS = "mapName"; String KEY = "keyValue"; PortableCredential cred = new PortablePasswordCredential(USER, PASSWORD.toCharArray()); try { //seed a password credential wlsMBeanConn.invoke(credName, "setPortableCredential", new Object[] { ALIAS, KEY, cred.toCompositeData(null) }, new String[] { STR_NAME, STR_NAME, CompositeData.class.getName() }); boolean bContainsMap = (Boolean) wlsMBeanConn.invoke(credName, "containsMap", new Object[] { ALIAS }, new String[] { STR_NAME }); System.out.println("Credstore contains map: " + ALIAS + " - " +bContainsMap); boolean bContainsCred = (Boolean) wlsMBeanConn.invoke(credName, "containsCredential", new Object[] { ALIAS, KEY }, new String[] { STR_NAME, STR_NAME }); System.out.println("Contains Credential; " + bContainsCred); CompositeData cd = (CompositeData) wlsMBeanConn.invoke(credName, "getPortableCredential", new Object[] { ALIAS, KEY }, new String[] { STR_NAME, STR_NAME }); cred = PortableCredential.from(cd); PortablePasswordCredential pc = (PortablePasswordCredential) cred; System.out.println("User name should be " + USER + " Retrieved - " + pc.getName()); System.out.println("Password should be " + PASSWORD + "retrieved - " + new String(pc.getPassword())); //delete entire map wlsMBeanConn.invoke(credName, "deleteCredentialMap", new Object[] {ALIAS}, new String[] {STR_NAME} ); } catch (InstanceNotFoundException e) { // auto-generated catch block e.printStackTrace(); } catch (MBeanException e) { // auto-generated catch block e.printStackTrace(); } catch (ReflectionException e) { // auto-generated catch block e.printStackTrace(); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } } private static void invokeApplicationPolicyMBeanMethods() { //add grants to approles //first create application policy String TESTGET_APP_ROLES_MEMBERS = "testgetAppRolesMembers"; try { wlsMBeanConn.invoke(appPolName, "deleteApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME }); } catch (Exception e ) { System.out.println("IGNORE: App " + TESTGET_APP_ROLES_MEMBERS + " might not exist"); } try { wlsMBeanConn.invoke(appPolName, "createApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME }); // add remove members to applicaiton roles // Create App Role here String APP_ROLE_NAME = "ravenclaw_house"; wlsMBeanConn.invoke(appPolName, "createApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME, null, null, null }, new String[] { STR_NAME, STR_NAME, STR_NAME, STR_NAME, STR_NAME }); CompositeData cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "getApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME }, new String[] { STR_NAME, STR_NAME }); PortableApplicationRole appRole = PortableApplicationRole.from(cd); //Add custom principal here PortableRoleMember prm_custom = new PortableRoleMember("My.Custom.Principal","CustomPrincipal",null,null,null); CompositeData[] arrCompData = { prm_custom.toCompositeData(null) }; cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "addMembersToApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null), arrCompData }, new String[] { STR_NAME, CompositeData.class.getName(), CompositeData[].class.getName() }); // Chk if member got added CompositeData[] arrCD = (CompositeData[]) wlsMBeanConn.invoke(appPolName, "getMembersForApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null) }, new String[] { STR_NAME, CompositeData.class.getName() }); PortableRoleMember[] actRM = getRMArrayFromCDArray(arrCD); PortableRoleMember[] expRM = { prm_custom}; chkRoleMemberArrays(actRM, expRM); cd = (CompositeData) wlsMBeanConn.invoke(appPolName, "removeMembersFromApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null), arrCompData }, new String[] { STR_NAME, CompositeData.class.getName(), CompositeData[].class.getName() }); // Chk if member got removed arrCD = (CompositeData[]) wlsMBeanConn.invoke(appPolName, "getMembersForApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, appRole.toCompositeData(null) }, new String[] { STR_NAME, CompositeData.class.getName() }); System.out.println("length should be zero :" + arrCD.length); // Remove the App Role wlsMBeanConn.invoke(appPolName, "removeApplicationRole", new Object[] { TESTGET_APP_ROLES_MEMBERS, APP_ROLE_NAME }, new String[] { STR_NAME, STR_NAME }); wlsMBeanConn.invoke(appPolName, "deleteApplicationPolicy", new Object[] { TESTGET_APP_ROLES_MEMBERS }, new String[] { STR_NAME }); } catch (InstanceNotFoundException e) { // auto-generated catch block e.printStackTrace(); } catch (MBeanException e) { // auto-generated catch block e.printStackTrace(); } catch (ReflectionException e) { // auto-generated catch block e.printStackTrace(); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } } private static PortableRoleMember[] getRMArrayFromCDArray(CompositeData[] arrCD) { PortableRoleMember[] actRM = new PortableRoleMember[arrCD.length]; int idx = 0; for (CompositeData cdRM : arrCD) { actRM[idx++] = PortableRoleMember.from(cdRM); } return actRM; } private static void chkRoleMemberArrays(PortableRoleMember[] arrExpectedRM, PortableRoleMember[] arrActRM) { List < PortableRoleMember > lstExpRM = new ArrayList < PortableRoleMember >(Arrays.asList(arrExpectedRM)); List < PortableRoleMember > lstActRM = new ArrayList < PortableRoleMember >(Arrays.asList(arrActRM)); for (PortableRoleMember actRM : lstActRM) { for (int idx = 0; idx < lstExpRM.size(); idx++) { PortableRoleMember expRM = (PortableRoleMember) lstExpRM.get(idx); if (expRM.equals(actRM)) { lstExpRM.remove(idx); break; } } } System.out.println("List should be empty - " + lstExpRM.size()); } private static void invokeAdminPolicyMBeanMethhods() { //Connection is established as weblogic user, who by OOTB gets all permissions Boolean bool; try { bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole",new Object[]{"Admin"}, new String[]{STR_NAME}); System.out.println("Werblogic has Admin role: " + bool); bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole",new Object[] {"Configurator"}, new String[]{STR_NAME}); System.out.println("Werblogic has Configurator role: " + bool); bool = (Boolean) wlsMBeanConn.invoke(adminPolName,"checkRole", new Object[]{new String[] {"Operator", "Admin", "Configurator"}}, new String[]{String[].class.getName()}); System.out.println("Werblogic has Admin,Operator,Configurator role: " + bool); } catch (InstanceNotFoundException e) { // auto-generated catch block e.printStackTrace(); } catch (MBeanException e) { // auto-generated catch block e.printStackTrace(); } catch (ReflectionException e) { // auto-generated catch block e.printStackTrace(); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } } private static void invokeGlobalPolicyMBeanMethods() { // lets create a grant in system policy PortablePrincipal CUSTOM_JDOE = new PortablePrincipal("oracle.security.jps.internal.core.principals.CustomXmlUserImpl", "jdoe", PortablePrincipal.PrincipalType.CUSTOM); PortablePrincipal CUSTOM_APP_ADMINS = new PortablePrincipal("oracle.security.jps.internal.core.principals.CustomXmlEnterpriseRoleImpl", "oc4j-app-administrators", PortablePrincipal.PrincipalType.CUSTOM); PortablePrincipal[] arrPrincs = {CUSTOM_JDOE, CUSTOM_APP_ADMINS}; //codesource URL String URL = "http://www.oracle.com/as/jps-api.jar"; PortableCodeSource pcs = new PortableCodeSource(URL); PortableGrantee pge = new PortableGrantee(arrPrincs, pcs); PortablePermission CSF_PERM = new PortablePermission("oracle.security.jps.service.credstore.CredentialAccessPermission", "context=SYSTEM,mapName=MY_MAP,keyName=MY_KEY", "read"); PortablePermission[] arrPerms = {CSF_PERM}; PortableGrant grnt = new PortableGrant(pge, arrPerms); CompositeData[] arrCompData = { grnt.toCompositeData(null) }; try { System.out.println("Creating System Policy grant"); wlsMBeanConn.invoke(gloPolName, "grantToSystemPolicy", new Object[] { arrCompData }, new String[] { CompositeData[].class.getName() }); System.out.println("Deleting the created grant"); wlsMBeanConn.invoke(gloPolName, "revokeFromSystemPolicy", new Object[] { arrCompData }, new String[] { CompositeData[].class.getName() }); } catch (InstanceNotFoundException e) { // auto-generated catch block e.printStackTrace(); } catch (MBeanException e) { // auto-generated catch block e.printStackTrace(); } catch (ReflectionException e) { // auto-generated catch block e.printStackTrace(); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } } private static boolean isRegistered(ObjectName name) { try { return wlsMBeanConn.isRegistered(name); } catch (IOException e) { // auto-generated catch block e.printStackTrace(); } return false; } private static void init() { String protocol = "t3"; String jndi_root = "/jndi/"; String wlserver = "myWLServer"; String host = "myHost.com"; int port = 7001; String adminUsername = "myAdminName"; String adminPassword = "myAdminPassw"; JMXServiceURL url; try { url = new JMXServiceURL(protocol,host,port,jndi_root+wlserver); HashMap<String, Object> env = new HashMap<String, Object>(); env.put(Context.SECURITY_PRINCIPAL, adminUsername); env.put(Context.SECURITY_CREDENTIALS, adminPassword); env.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote"); connector = JMXConnectorFactory.connect(url, env); wlsMBeanConn = connector.getMBeanServerConnection(); //create object names // the next string is set to com.oracle.jps:type=JpsConfig configName = new ObjectName(JpsJmxConstants.MBEAN_JPS_CONFIG_FUNCTIONAL); // the next string is set to com.oracle.jps:type=JpsApplicationPolicyStore appPolName = new ObjectName(JpsJmxConstants.MBEAN_JPS_APPLICATION_POLICY_STORE); // the next string is set to com.oracle.jps:type=JpsGlobalPolicyStore gloPolName = new ObjectName(JpsJmxConstants.MBEAN_JPS_GLOBAL_POLICY_STORE); // the next string is set to com.oracle.jps:type=JpsAdminPolicyStore adminPolName = new ObjectName(JpsJmxConstants.MBEAN_JPS_ADMIN_POLICY_STORE); // the next string is set to com.oracle.jps:type=JpsCredentialStore credName = new ObjectName(JpsJmxConstants.MBEAN_JPS_CREDENTIAL_STORE); } catch (MalformedURLException e) { // take proper action e.printStackTrace(); } catch (IOException e) { // take proper action e.printStackTrace(); } catch (MalformedObjectNameException e) { // auto-generated catch block e.printStackTrace(); } } }
MBeanへのアクセスの制限
ここでの説明はOPPS MBeansにのみ限定されるものではなく、Oracle Fusion Middleware MBeans全般に当てはまります。
論理ロールとは、Java EEアプリケーションで宣言またはプログラムによって指定するロールです。アプリケーション・デプロイメント・ディスクリプタで定義し、アプリケーション・コード内で使用します。論理ロールは、エンタープライズ・グループまたはユーザーにマップできますが、アプリケーション・ロールにはマップできません。
MBeansへのセキュリティ・アクセスは、セキュリティ許可ではなく、論理ロールに基づいています。MBeanには、JMX Frameworkによって実行時に施行されるロールベースの制約を受けた注釈が付けられます。
次の各項では、注釈の使用方法と特定のアクセス制限を示し、エンタープライズ・グループへの論理ロールのマッピングについて説明します。
注釈の例
次の例は、MBeanインタフェースでのエンタープライズ・グループの注釈(太字テキストの部分)の使用方法を示しています。
@Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.description", resourceBundleBaseName = "demo.runtime.Messages") @ImmutableInfo("true") @Since("1.1") public interface ScreenCustomizerRuntimeMXBean { @Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.Active", resourceBundleBaseName = "demo.runtime.Messages") @AttrributeGetterRequiredGlobalSecurityRole(GlobalSecurityRole.Operator) public boolean isActive(); @AttrributeSetterRequiredGlobalSecurityRole(GlobalSecurityRole.Admin) public void setActive(boolean val); @Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.ActiveVirtualScreenId", resourceBundleBaseName = "demo.runtime.Messages") @DefaultValue("0") @LegalValues( {"0", "2", "4", "6", "8" }) @RequireRestart(ConfigUptakePolicy.ApplicationRestart) @OperationRequiredGlobalSecurityRole(GlobalSecurityRole.Admin) public void setActiveVirtualScreenId(int id) throws IllegalArgumentException; … }
説明:
-
@AtrributeGetterRequiredGlobalSecurityRole
は、ユーザーがgetメソッドのisActive
にアクセスするには、Operator
ロールに属している必要があることを指定します。 -
@AtrributeSetterRequiredGlobalSecurityRole
は、ユーザーがsetActive
メソッドにアクセスするには、Admin
ロールに属している必要があることを指定します。 -
@OperationRequiredGlobalSecurityRole
は、ユーザーがsetActiveVirtualScreenId
メソッドMBeanにアクセスするには、Admin
ロールに属している必要があることを指定します。
この3つの注釈はすべて、インタフェース内の特定のアイテムにのみ適用されることに注意してください。
次の例は、範囲の異なる注釈(太字テキスト)の使用方法を示しています。
@Description(resourceKey = "demo.ScreenCustomizerRuntimeMBean.description",
resourceBundleBaseName = "demo.runtime.Messages")
@ImmutableInfo("true")
@Since("1.1")
@MBeanRequiredGlobalSecurityRole(GlobalSecurityRole.Admin)
public interface ScreenCustomizerRuntimeMXBean { … }
@MbeanRequiredGlobalSecurityRole
は、ユーザーがMBeanの操作または属性にアクセスするには、Admin
ロールに属している必要があることを指定しているため、MBean全体が対象範囲になります。メソッドまたは属性の範囲を指定している注釈は、MBean全体に適用される注釈よりも優先されます。
GlobalSecurityRole
は、セキュリティ・チェックの実行前に、環境内で実際のロールにマップされるグローバルの論理ロール・セットを定義します。この列挙には、注釈付き操作または属性に対してすべてのユーザーが読取り/書込み権限を持っていることを示す値NONE
が含まれています。
エンタープライズ・グループへの論理ロールのマッピング
表E-2は、エンタープライズ・グループへの論理ロールのマッピングを示しています。
表E-2 WebLogic Serverグループへの論理ロールのマッピング
論理ロール | デフォルトのパーミッション | WebLogicグループ |
---|---|---|
|
すべてのMBeansへの読取り/書込み権限 |
|
|
構成MBeansへの読取り/書込み権限 |
|
|
構成MBeanへの読取り権限。実行時MBeanへの読取り/書込み権限 |
|
|
すべてのMBeansへの読取り権限 |
|
|
すべてのアプリケーションMBeansへの読取り/書込み権限 |
|
|
すべてのアプリケーションMBeansへの読取り/書込み権限 |
|
|
アプリケーション構成MBeanへの読取り権限。アプリケーション実行時MBeanへの読取り/書込み権限 |
|
|
すべてのアプリケーション実行時MBeansおよび構成MBeansへの読取り権限 |
|
関連項目:
『Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』のユーザー、グループ、セキュリティ・ロール
特定のアクセス制限
デフォルトでは、すべてのMBeanの書込み操作および更新操作には、ユーザーがAdmin
ロールまたはConfigurator
ロールのメンバーである必要があります。また、@Impact(value=1)
タグで注釈を付けられた操作には、ユーザーがAdmin
ロールのメンバーである必要があり、@Impact(value=0)
タグで注釈を付けられた操作には、ユーザーがAdmin
ロールまたはOperator
ロールのメンバーである必要があります。
表E-3は、MBeanの属性および操作へのアクセスに必要なロールの説明をまとめたものです。
表E-3 操作別に必要なロール
影響値を持つ操作 | MBeanタイプ | 必要なロール |
---|---|---|
INFOまたは属性ゲッター |
システム構成MBean |
Monitor、Operator、Configurator、Admin |
INFOまたは属性ゲッター |
アプリケーション構成MBean |
Monitor、Operator、Configurator、Admin、ApplicationMonitor、ApplicationOperator、ApplicationConfigurator、ApplicationAdmin |
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
システム構成MBean |
Admin、Configurator |
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
アプリケーション構成MBean |
Admin、Configurator、ApplicationAdmin、ApplicationConfigurator |
INFOまたは属性ゲッター |
システム実行時MBean |
Monitor、Operator、Configurator、Admin |
INFOまたは属性ゲッター |
アプリケーション実行時MBean |
Monitor、Operator、Configurator、Admin、ApplicationMonitor、ApplicationOperator、ApplicationAdmin |
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
システム実行時MBean |
Admin、Operator |
ACTION、ACTION_INFO、UNKNOWNまたは属性セッター |
アプリケーション実行時MBean |
Admin、Operator、ApplicationAdmin、ApplicationOperator |