機械翻訳について

変数インジェクタ

変数インジェクタは、属性値のかわりに変数キーを置換し、変数値を含む個別のプロパティ・ファイルを作成することで、モデルをトークン化するために使用されます。 これにより、同じドメイン・モデルを使用して、異なる環境で新しいドメインを簡単に作成できます。 WebLogic Deploy Toolingには、そのまままたは変更で使用できる組込みインジェクタ・ディレクティブ・ファイルがいくつか含まれており、カスタム・インジェクタ・ファイルを作成できます。

変数インジェクタは、Discover Domain ToolPrepare Model ToolおよびスタンドアロンVariable Injector Toolによって、生成するモデルをトークン化するために使用されます。

属性に対する変数のインジェクションは1回のみ実行されます。 トークン化された後は、後続のインジェクタ・ディレクティブによって属性が再トークン化されません。

デフォルトの構成

デフォルトのインジェクタ構成は、スタンドアロンのVariable Injector Tool、および-targetオプションなしでDiscover Domain Toolが実行されるときに使用されます。 これらのツールの変数インジェクションを有効にするには、model_variable_injector.jsonという名前のJSONファイルを<WLSDEPLOY>/libディレクトリに配置して、変数インジェクタ構成を作成します。

もう1つのオプションは、「カスタム構成」ディレクトリで変数インジェクションを構成することです。 $WDT_CUSTOM_CONFIGディレクトリにmodel_variable_injector.jsonファイルを作成します。

変数インジェクタ構成ファイルには、モデルに適用するインジェクタ・ファイルの名前にマップするインジェクタ名のリストが含まれます。

topologyおよびcustomインジェクタをモデルに適用するmodel_variable_injector.jsonファイルの例を次に示します。

{
  "injectors": [
    "topology",
    "custom"
  ]
}

リスト内の各インジェクタ名は、「インジェクタ・ディレクティブ・ファイル」を参照し、指定された順序でモデル内の属性に適用されます。

model_variable_injector.jsonファイルのサンプルは、WLSDEPLOY/samplesディレクトリに含まれています。

ターゲット構成

ターゲット・インジェクタ構成は、Prepare Model Tool、およびDiscover Domain Toolが-targetオプションで実行されている場合に使用されます。 この場合、適用するインジェクタ名のリストは、$WLSDEPLOY_HOME/lib/targets/<target-name>/target.json構成ファイルのvariable_injectorsフィールドに指定されます。 たとえば、$WLSDEPLOY_HOME/lib/targets/wko/target.jsonファイルには、次の値が含まれます:

{
  ...
  "variable_injectors" : ["port", "host", "url"],
  ...
}

リスト内の各インジェクタ名は、「インジェクタ・ディレクティブ・ファイル」を参照し、指定された順序でモデル内の属性に適用されます。

ターゲット構成の作成および拡張の詳細は、「ターゲット環境」を参照してください。

インジェクタ・ディレクティブ・ファイル

インジェクタ・ディレクティブ・ファイルには、修飾された属性パスのリストおよび関連するディレクティブが含まれます。 モデル内で一致する属性が見つかった場合、関連付けられたディレクティブがその属性に適用され、一意の変数名を持つプロパティ・トークンがモデルにインジェクトされ、属性値が置換されます。 変数名とモデル属性値は、外部変数プロパティ・ファイルに配置されます。

インジェクタ・ディレクティブ・ファイルは、$WLSDEPLOY_HOME/lib/injectorsディレクトリに配置されます。 ユーザー定義ファイルは、その場所または「カスタム構成」ディレクトリに配置できます。 カスタム構成ディレクトリを使用するには、これらのファイルを$WDT_CUSTOM_CONFIG/lib/injectorsに配置します。

WebLogic Deploy Toolには、次の事前構成済インジェクタ・ディレクティブ・ファイルが含まれます:

  • host.json - モデル内のすべてのMBeanホスト属性値が変数でインジェクトされます。
  • port.json - モデル内のすべてのMBeanポート属性値が変数でインジェクトされます。
  • target.json - モデル内のすべてのMBeanターゲット属性値が変数でインジェクトされます。
  • topology.json - モデルのトポロジ・セクションにある一般的な環境MBean属性は、変数でインジェクトされます。 これには、サーバー、マシンおよびノード・マネージャ・ポート、リスニング・アドレス、クラスタ・メッセージング・モード、アドレスおよびポートが含まれます。
  • url.json - モデル内のすべてのMBean URL属性値は、変数でインジェクトされます。

portインジェクタ・ディレクティブ・ファイルの適用後にインジェクトされた変数を示すモデル・スニペットを次に示します。


topology:
    Name: soa_domain
    AdminServerName: AdminServer
    Cluster:
        soa_cluster:
        osb_cluster:
    Server:
        AdminServer:
            ListenAddress: myadmin.example.com
            ListenPort: @@PROP:Server.AdminServer.ListenPort@@
            Machine: machine1
            SSL:
                Enabled: true
                ListenPort: @@PROP:Server.SSL.AdminServer.ListenPort@@
        soa_server1:
            ListenAddress: managed1.example.com
            ListenPort: @@PROP:Server.soa_server1.ListenPort@@
            Cluster: soa_cluster
            Machine: machine2
            SSL:
                Enabled: true
                ListenPort: @@PROP:Server.SSL.soa_server1.ListenPort@@
        soa_server2:
            ListenAddress: managed2.example.com
            ListenPort: @@PROP:Server.soa_server2.ListenPort@@
            Cluster: soa_cluster
            Machine: machine3
            SSL:
                Enabled: true
                ListenPort: @@PROP:Server.SSL.soa_server2.ListenPort@@

結果の変数プロパティ・ファイル:

Server.AdminServer.ListenPort=7001
Server.AdminServer.SSL.ListenPort=7002
Server.soa_server1.ListenPort=8001
Server.soa_server1.SSL.ListenPort=8002
Server.soa_server2.ListenPort=8001
Server.soa_server2.SSL.ListenPort=8002

カスタム変数インジェクタ

カスタム・インジェクタ・ディレクティブを使用するには、わかりやすい名前のインジェクタ・ディレクティブ・ファイルを作成し、それを$WLSDEPLOY_HOME/lib/injectorsディレクトリに配置するか、カスタム構成ディレクトリを使用している場合は$WDT_CUSTOM_CONFIG/lib/injectorsに配置します。 ファイル・プレフィクスをmodel_variable_injector.jsonファイルのリストに追加するか、ターゲット構成が使用されている場合はtarget.jsonファイルに追加します。 たとえば、ファイルcustom.jsonを作成し、リストにcustomエントリを追加します。

インジェクタ・ディレクティブには、トークン化する属性を識別するキーと、ディレクティブ・プロパティのオプション・セットが含まれます。 キーは、モデルで定義されている期間区切りのMBean階層および属性名です。 モデル・セクションの名前は必ずインジェクタ・キーから除外します。

たとえば、サーバーSSLリスニング・ポートのインジェクタ・ディレクティブは、次のとおりです。 このディレクティブには追加のプロパティが含まれていません。

{
  "Server.SSL.ListenPort": {}
}

ノートListenPort属性のモデル内のMBeansの階層。 AdminServerのMBean名はディレクティブに含まれていないことに注意してください:

topology:
    Server:
        AdminServer:
            ListenAddress: myadmin.example.com
            ListenPort: 7001
            Machine: machine1
            SSL:
                Enabled: true
                ListenPort: 7002

カスタム・インジェクタ・ディレクティブ・ファイルのサンプルは、$WLSDEPLOY_HOME/samples/injectorsディレクトリに含まれています。

インジェクタ・ディレクティブのプロパティ

次のプロパティを含めて、指定されたとおりにディレクティブを絞り込みます。

  • force:<attribute> MBean階層がモデルに存在し、属性がモデルに存在しない場合、属性は追加され、結果のモデルに永続化されます。 モデルに格納される値は、WebLogicデフォルト値です。

  • variable_value: モデル値を変数プロパティの指定値に置き換えます。 これは、デフォルト値を指定された値に置き換えて、forceディレクティブとともに使用できます。

  • regexp: モデルの属性の文字列値またはマップ値のいずれかに適用されるregexpパターンのリスト。 パターンが一致すると、文字列またはディクショナリの一致部分がプロパティ・トークンおよび一意の変数名でインジェクトされます。

    • pattern: 属性の文字列値またはマップ値に適用する正規表現パターン。

    • suffix: 一意の変数名を作成するために結果の各変数名に追加するサフィクス名。

regexpリストは、文字列値またはマップのセグメントのみをトークン化する必要がある場合(変数プロパティ・ファイルにプロパティ値のクリーン・リストを提供する場合)に役立ちます。 複数のトークンを文字列にインジェクトしたり、複数のパターンでマップしたりできます。 ただし、複数のパターンがある場合は、それぞれにサフィクスを指定する必要があります。 これにより、ツールは文字列またはマップの各トークンに対して一意の変数名を生成できます。

次の例は、regexpディレクティブ・リストを使用して文字列値のセグメントを検索する方法を示しています。 この例では、特別なOracle URL表記を使用する各Oracle JDBC URLでホストおよびポートを検索し、変数プロパティ・ファイルでホストおよびポートのエントリを作成します。

モデルでは、次のようなURLを見つけます:

    JDBCSystemResource:
        Database1:
            JdbcResource:
                JDBCDriverParams:
                    URL: 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=slc05til.us.oracle.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl.us.oracle.com)))'

カスタム・インジェクタJSONファイルにディレクティブを作成します:

  "JDBCSystemResource.JdbcResource.JDBCDriverParams.URL":
  {
    "regexp": [
      {
        "pattern": "(?<=PORT=)[\\w.-]+(?=\\))",
        "suffix": "Port"
      },
      {
        "pattern": "(?<=HOST=)[\\w.-]+(?=\\))",
        "suffix": "Host"
      }
    ]
  },

ツールを実行すると、パターンがURL文字列に適用され、トークンが文字列にインジェクトされます:

URL: 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=@@PROP:JDBCSystemResource.Database1.JdbcResource.JDBCDriverParams.URL--Host@@:)(PORT=@@PROP:JDBCSystemResource.Database1.JdbcResource.JDBCDriverParams.URL--Port@@)))(CONNECT_DATA=(SERVICE_NAME=orcl.us.oracle.com)))'

変数はプロパティ・ファイルに格納されます:

JDBCSystemResource.Database1.JdbcResource.JDBCDriverParams.URL--Host=slc05til.us.oracle.com
JDBCSystemResource.Database1.JdbcResource.JDBCDriverParams.URL--Port=1521

変数インジェクションの特定のMBean名の選択

この最終カスタム・ディレクティブでは、プロパティをインジェクトするモデル内のMBeanの名前付きエントリを明示的に定義できます。 たとえば、特定のサーバーに対してのみ属性をトークン化できます。 インジェクタ・ディレクティブ階層で特定のMBeanの1つ以上の名前のリストを定義するには、次のようにリストを書式設定します:

MBean[comma separated list of names]

サーバー・ディレクティブにAdminServerという管理サーバーのみを選択するには、Server[AdminServer]という形式を使用します。 サーバーsoa_server1およびsoa_server2を選択するには、キーをServer[soa_server1,soa_server2]として書式設定します。

インジェクタ・ツールは、ユーザー・リストMANAGED_SERVERS(モデル内のすべての管理対象サーバー)とADMIN_SERVER(モデル内の管理サーバー)の2つのKEYWORDSを認識します。

管理サーバーSSLリスニング・ポートのカスタム・インジェクタは次のとおりです:

{
  "Server[ADMIN_SERVER].SSL.ListenPort": {}
}