Flex Gateway新着情報
Governance新着情報
Monitoring API Manager設定は、モジュールの全体的な動作に影響する設定可能なパラメーターのセットです。 すべてのモジュールには少なくとも 1 つの設定が必要ですが、必要に応じていくつでも定義できます。
異なる設定では異なるパラメーターのセットが提供されるだけでなく、その設定の 使用時にのみ使用可能な独自の操作、ソース、および接続プロバイダーのセットも指定される場合があります。
次の例には、主に Mule Extensions API のクラスが含まれています。次の例は、MessageSources.class などの一部のクラスで構成されています。
|
最も単純なケースは、設定が 1 つのみのモジュールです。
便宜上、次のように以前に @Extension
のアノテーションを付加したいくつかのクラスを
使用できます。
@Extension(name="singleConfig")
@Operations(Operations.class)
@Sources(MessageSources.class)
@ConnectionProviders({BasicAuthConnection.class, OAuthConnection.class})
public class SingleConfigModule {
@Parameter
private String someParameter;
@Parameter
private Integer numericParameter;
public String getSomeParameter() {
return someParameter;
}
public String getNumericParameter() {
return numericParameter;
}
}
上記の例は、設定が 1 つのモジュールの完全なスケルトンを示しています。
拡張をそのすべての操作、ソース、接続などで宣言した同じクラスは、
設定のパラメーターに変換する @Parameter
アノテーションが付加された項目でも
強化されていることがわかります。
操作やソースなどの別のコンポーネントが設定にアクセスする必要がある場合、
SingleConfigModule
クラスのインスタンスを介してアクセスします。
コードの編成方法によっては、@Extension
アノテーションが付加されたクラスを再利用
することなく、1 つの設定オブジェクトを使用すると役立つ場合があります。これを行う
理由は、メンテナンス性 (将来、設定の追加が必要になる可能性を考慮)、懸念事項の
分離、または単に個人的な好みなどがあります。
@Configurations
アノテーションを使用して、それを実行できます。改良された同じ例は
次のようになります。
@Extension(name="singleConfig")
@Configurations(Config.class) (1)
public class SingleConfigModule {
}
@Configuration(name="config") (2)
@Operations(Operations.class)
@Sources(MessageSources.class)
@ConnectionProviders({BasicAuthConnection.class, OAuthConnection.class})
public class Config {
@Parameter
private String someParameter;
@Parameter
private Integer numericParameter;
public String getSomeParameter() {
return someParameter;
}
public String getNumericParameter() {
return numericParameter;
}
}
1 | @Configurations アノテーションを使用して、Config クラスを参照します。 |
2 | 設定として機能し、パラメーターおよびその他すべてのコンポーネント (操作、接続など) を定義するクラスを定義します。 |
@Configuration アノテーションでは、設定に名前を付ける必要があります。設定が 1 つのみのモジュールの場合、config という名前をお勧めします。
|
HTTP Connector を使用した例を説明します。
HTTP プロトコルの実装には、要求のリスンと要求の送信の 2 つの 側面があります。これらの側面はそれぞれ、非常に異なるパラメーターのセットが必要なだけでなく、 次のことも必要になります。
要求をリスンするには、メッセージソースとして機能する <http:listener />
要素を定義する必要がある。
要求を送信するには、操作として機能する <http:request />
要素が必要。
アプリケーションには多数のリスナー要素が含まれる可能性があるため、接続を確立する
方法やその他の動作パラメーターに関する一般的な設定が含まれる <http:listener-config />
と
ペアになっている場合にのみ、要素は機能します。<http:requester-config />
要素とペアになっているリクエスター操作でも
同様です。
コードは次のようになります。
@Extension(name="http")
@Configurations({HttpListenerConfig.class, HttpRequesterConfig.class}) (1)
public class HttpConnector {
}
@Configuration(name="listener") (2)
@ConnectionProviders(HttpListenerConnection.class)
@Sources(HttpListener.class)
public class HttpListenerConfig {
/**
* Base path to use for all requests that reference this config.
*/
@Parameter
@Optional
@Expression(NOT_SUPPORTED)
private String basePath;
public String getBasePath() {
return basePath;
}
}
@Configuration(name="requester") (3)
@Operations(HttpRequester.class)
@ConnectionProviders(HttpRequesterConnection.class)
public class HttpRequesterConfig {
// the requester parameters
}
1 | @Extension アノテーションが付加されたクラスは、2 つの設定を定義します。 |
2 | HttpListener クラスは、インバウンド接続、およびリスナー機能専用のメッセージソースを定義します。 |
3 | HttpConfig クラスは、要求操作とアウトバウンド接続種別を定義します。 |
今回は、Configuration アノテーションで使用される名前が特定のデフォルトに
従わず、代わりにわかりやすい名前が使用されています。
|
ログやデバッグのために、この設定インスタンスのアプリケーション上での名前を
知っていれば役立ちます。この場合、@RefName
アノテーションを使用できます。このアノテーションは、
String
型の項目で使用する必要があり、同じクラスの 2 つの項目がこのアノテーションを
持つことはできません。その使用方法の例を次に示します。
この例では、コンポーネントの初期化時にその名前をログに記録する方法を確認できます。 これにより、異なる設定インスタンスを追跡できます。
@Configuration(name="config")
@Operations(Operations.class)
public class Config implements Initialisable {
private static final Logger LOGGER = LoggerFactory.getLogger(Config.class);
@RefName (1)
private String configName;
@Parameter
private String someParameter;
public String getSomeParameter() {
return someParameter;
}
@Override
public void initialise(){
LOGGER.debug("Initializing config with name: " + configName);
}
}
1 | @RefName アノテーションは、アプリケーションで使用される設定の名前が
項目 configName に挿入される必要があることを示します。 |
DSL の具体的な例で、何が起こるかを確認できます。
<my-extension:config name="exampleConfig" someParameter="aParameter">
この場合、変数 configName
は値「exampleConfig」を取得します。この設定が
初期化されると、メッセージ Initializing config with name: exampleConfig
を含む
ログでこれが示されます。