モジュール java.management

インタフェースCompositeDataView

  • 既知のすべての実装クラス:
    GarbageCollectionNotificationInfo, GcInfo

    public interface CompositeDataView

    Javaクラスは、このインタフェースを実装することにより、MXBeanフレームワークを使ってCompositeDataに変換する方法を示すことができます。

    このクラスの一般的な使用方法は、MXBeanフレームワークの提供するCompositeTypeで宣言される項目に加えて、補足項目をCompositeDataに追加することです。 このためには、同一の項目を持ち、かつ補足項目も持つ別のCompositeTypeを作成する必要があります。

    たとえば、unitsという名前のStringと、longdoubleのいずれかであるvalueとで構成されるMeasureクラスを考えましょう。 これは、次のようになります。

     public class Measure implements CompositeDataView {
         private String units;
         private Number value; // a Long or a Double
    
         public Measure(String units, Number value) {
             this.units = units;
             this.value = value;
         }
    
         public static Measure from(CompositeData cd) {
             return new Measure((String) cd.get("units"),
                                (Number) cd.get("value"));
         }
    
         public String getUnits() {
             return units;
         }
    
         // Can't be called getValue(), because Number is not a valid type
         // in an MXBean, so the implied "value" property would be rejected.
         public Number _getValue() {
             return value;
         }
    
         public CompositeData toCompositeData(CompositeType ct) {
             try {
                 List<String> itemNames = new ArrayList<String>(ct.keySet());
                 List<String> itemDescriptions = new ArrayList<String>();
                 List<OpenType<?>> itemTypes = new ArrayList<OpenType<?>>();
                 for (String item : itemNames) {
                     itemDescriptions.add(ct.getDescription(item));
                     itemTypes.add(ct.getType(item));
                 }
                 itemNames.add("value");
                 itemDescriptions.add("long or double value of the measure");
                 itemTypes.add((value instanceof Long) ? SimpleType.LONG :
                               SimpleType.DOUBLE);
                 CompositeType xct =
                     new CompositeType(ct.getTypeName(),
                                       ct.getDescription(),
                                       itemNames.toArray(new String[0]),
                                       itemDescriptions.toArray(new String[0]),
                                       itemTypes.toArray(new OpenType<?>[0]));
                 CompositeData cd =
                     new CompositeDataSupport(xct,
                                              new String[] {"units", "value"},
                                              new Object[] {units, value});
                 assert ct.isValue(cd);  // check we've done it right
                 return cd;
             } catch (Exception e) {
                 throw new RuntimeException(e);
             }
         }
     }
     

    この属性型またはオペレーション型のDescriptoropenTypeフィールドに表示されるCompositeTypeには、units項目だけが示されます。ただし、生成される実際のCompositeDataには、unitsvalueの両方が含まれます。

    導入されたバージョン:
    1.6
    関連項目:
    MXBean
    • メソッドの詳細

      • toCompositeData

        CompositeData toCompositeData​(CompositeType ct)

        このオブジェクト内の値に対応するCompositeDataを返します。 通常、戻り値はCompositeDataSupportのインスタンス、またはwriteReplaceメソッドを介してCompositeDataSupportとして直列化を行うクラスになります。 それ以外の場合、オブジェクトを受信するリモート・クライアントは、再構築を実行できない可能性があります。

        パラメータ:
        ct - 戻り値の予想されるCompositeType 戻り値がcdである場合、cd.getCompositeType().equals(ct)はtrueになる。 通常、これは、cdctCompositeTypeとして構築されたCompositeDataSupportであるため。
        戻り値:
        CompositeData