次の条件の 1 つ以上が該当する場合は、グローバルオブジェクトストアを使用する必要があります。
-
コンポーネント間で状態を共有する必要がある: オブジェクトストアは名前で参照できるため、複数のコンポーネントが使用できます。設定がわずかに異なる Salesforce Connector の 2 つのインスタンスがあるとします。同じトークンを使用で両方のインスタンスを使用し、再度認証しなくてもすむようにできます。
-
クラスターノード間で状態を共有する必要がある: Mule をクラスターモードで使用している場合、情報をクラスターのすべてのノードで使用できるようにすることがあります。それには、グローバルオブジェクトストアが最適です。
-
アプリケーションのロジックで情報を使用する必要がある: Object Store Connector は、ストアの定義だけでなく、ストアの操作もできます。
グローバルオブジェクトストアは、最上位要素として定義され、他のコンポーネントから名前で参照できます。たとえば、次のようにアクセストークンのストアを作成するとします。
<os:object-store name="tokensStore"
entryTtl="1"
entryTtlUnit="HOURS"
maxEntries="100"
persistent="true"
expirationInterval="30"
expirationIntervalUnit="MINUTES" />
|
|
上の値はメモリ内のオブジェクトストアにのみ適用され、Mule 4 クラウドの Object Store v2 には適用されません。Object Store v2 では無制限のキーを使用できます。
|
この例では、次の機能を持つ tokensStore という名前のオブジェクトストアを定義します。
-
永続性 (persistent="true"): 値はディスクに保存され、システムが再起動しても存続できます。persistent を false に設定すると、情報がメモリにのみ保存される一時的なストアになります。
-
有効期限: 有効期限スレッドは 30 分おきに実行され、存続期間 (TTL) または maxEntries 制限を超えた要素を破棄します。
-
TTL が 1 時間: アクセストークンは非常に機密性が高いので、1 時間以上保持しない方がよいでしょう。それより古いエントリはすべて自動的に削除されます。
-
サイズの制限: ストアが 100 エントリよりも大きくなった場合、有効期限スレッドが実行されると、超過分のスレッドは破棄されます。
上記の例は、説明のみを目的としたもので、アクセストークンを保存するオブジェクトストアの推奨設定を示しているわけではありません。
次の例では、OAuth による Salesforce Connector 認証を設定し、その後で前の例で作成したオブジェクトストア (tokensStore) にトークンを保存しています。
<sfdc:config-with-oauth name="salesforce-oauth"
consumerKey="${salesforce.consumerKey}"
consumerSecret="${salesforce.consumerSecret}">
<sfdc:oauth-callback-config domain="localhost" localPort="8082"
remotePort="8082" path="callback" connector-ref="HTTP_HTTPS" />
<sfdc:oauth-store-config objectStore="tokensStore" />
</sfdc:config-with-oauth>