[WLS, Database, FMW] Data Source System Property Enhancement in WLS 12.2.1

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/data_source_system_property_enhancement

以前のエントリで、システムプロパティを使ってドライバ接続プロパティを設定する話を紹介しました。これは順に自動的にOracle Databaseのセッションに値を設定する、というものでした。
Setting V$SESSION for a WLS Datasource
https://blogs.oracle.com/WebLogicServer/entry/setting_v_session_for_a
[WLS] Setting V$SESSION for a WLS Datasource
http://orablogs-jp.blogspot.jp/2014/08/setting-vsession-for-wls-datasource.html 
このエントリに対し、この機能には制限があるというコメントをいただきました。
  • アプリケーションサーバが開始するまで利用できないので、コマンドラインで設定できない値がある(明らかにプロセスIDは設定できない)
  • コマンドラインで設定した値は、サーバーのすべての環境に対し有効であることを示唆している。こうした値は、プログラム名のような値であればよいが、データソース固有の値や新たなWebLogic Server Multitenancy機能で利用可能なパーティション名には適していない。
  • 最近関わっていたアプリケーションでは、正常なシャットダウンを実行するため、セッションに接続されたデータソースをホストするサーバへ接続することが望ましかった。この場合、URLを生成するために追加の情報が必要だった。
これらのすべてのケースは、今回強化されたシステムプロパティ機能で対応できるようになっています。

元々、システムプロパティの値を使ったドライバプロパティの設定をサポートしていましたが、12.2.1では、グラフィカル・ユーザ・インタフェースおよびWLSTスクリプトでドライバプロパティの別のセットを再度登録しなくてすむよう、古い機能の上に新機能をオーバーロードしています。下表に記載のサポート対象の変数(複数可)を文字列に指定することで実現します。これらの1個以上の変数がシステムプロパティに含まれる場合、対応する値で置換されます。変数に値がない場合には置換は行われません。これらの変数がシステムプロパティにない場合、値をシステムプロパティ名として使用します。
変数 説明
${pid} ManagementFactory.getRuntimeMXBean().getName() の前半部分(@まで)
${machine} Second half of ManagementFactory.getRuntimeMXBean().getName() の後半部分
${user.name} Javaシステムプロパティ user.name
${os.name} システムプロパティ os.name
${datasourcename} JDBCディスクリプタからのデータソース名。ただし、パーティション名は含まない。
${partition} パーティション名もしくはDOMAIN
${serverport} WebLogic Serverのサーバリスニングポート
${serversslport} WebLogic ServerのサーバSSLリスニングポート
${servername} WebLogic Serverのサーバ名
${domainname} WebLogic Serverのドメイン名

以下の例はサンプルプロパティを示しています。
<properties>
  <property>
    <name>v$session.program</name>
    <sys-prop-value>WebLogic ${servername} Partition ${partition}</sys-prop-value>
  </property>
</properties> 
この例では、myserverで動作する v$session.program が “WebLogic myserver Partition DOMAIN”に置換されます。

この機能の最大の制限は、v$sessionの関連するカラム(列)の文字制限です。上限を超えると、接続作成に失敗します。

Oracle Databaseのv$session値と組み合わせてこの拡張機能を利用すると、接続ソースに関する情報追跡のための強力な機能に仕立てることができます。

[FMW, WLS] Partition Import/Export

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/partition_import_export

このエントリではパーティションのインポート、エクスポートにおいて直面する質問の回答をしようと考えています。エクスポート、インポートに関しては、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
Exporting and Importing Partitions
http://docs.oracle.com/middleware/1221/wls/WLSMT/export_import.htm#WLSMT636

How to know the status of exportPartition, importPartition WLST commands(WLSTコマンド[exportPartition / importPartition]の実行状態を知るには?)

エクスポートのためのWLSTコマンドは以下のようです。
exportPartition(partitionName, expArchPath, [includeAppsNLibs], [keyFile])
このコマンドはexportPartitionタスクを実行し、exportPartitionの操作の状態をオブジェクトに入れて返します。値と状態の関連付けは以下の通りです。
  1. NOT_STARTED = -1
  2. STARTED = 1
  3. FINISHED = 2
  4. FAILED = 3
exportPartitionが成功したかどうか、状態を確認するには、 オブジェクトに含まれるコマンドの出力を取得する必要があります。
expPartStatus = exportPartition('partition1','/home/partitionadmin/exportedPartitions')
while (expPartStatus.getState() != 2 and expPartStatus.getState() != 3):
  os.time.sleep(10)

if(expPartStatus.getState() == 3):
  raise expPartStatus.getError()
返却されたオブジェクトには2個のメソッドgetState()とgetError()があることがわかります。名前で意味がわかりますね。
getError() は実際にJavaのExceptionオブジェクトを返すので、java.lang.Exceptionオブジェクトで利用可能なすべてのメソッドを呼び出すことができます。例えば以下のメソッドを呼び出すとスタックトレースを出力します。
expPartStatus.getError().printStackTrace() 
importPartitionでも同様です。

How to use user keys for encryption of secure attributes during exportPartition(exportPartition実行中に保護対象の属性の暗号化のためのユーザー鍵を使うには?)

exportPartition実行中に、ユーザーが保護すべき属性をユーザーが持つ鍵で暗号化する場合があります。同様に、importPartition実行中に保護すべき属性を復号したい、という場合があります。

exportPartitionでは、オプションとしてString(文字列)の引数に、平文で指定されているユーザー鍵のファイルの場所を指定することができます。
cat /home/partitionadmin/exportPartition/userkey
 thequickbrownfoxjumpsoverthelazydog$--|--$
exportPartition実行中に、このファイルを使って保護属性を暗号化することができます。
expPartStatus = exportPartition('partition1','/home/partitionadmin/exportPartition',true,'/home/partitionadmin/exportPartition/userkey')
importPartitionの場合も同様に属性を復号することができます。
impPartStatus = importPartition('/home/partitionadmin/exportPartition/partition1.zip',keyfile='/home/partitionadmin/exportPartition/userkey')

How to resolve ResourceGroupTemplate Name conflicts during importPartition(importPartition実行中にResourceGroupTemplateの名前が衝突した場合の解決方法)

パーティションをドメインにインポートしている際に、ドメインにすでにインポートしようとしているものと同じ名前のResourceGroupTempateが存在する可能性があります。この場合、状況にあわせて、どちらのResourceGroupTemplateをインポートされるパーティションが使うのか指示する必要があります。
  1. ドメイン中の既存のResourceGroupTemplateがimportedPartitionが必要とするすべてのリソースを有している場合、createNewオプションで明示的にfalseを設定することで、ResourceGroupTemplateのインポートをスキップすることができます。
    impPartStatus = importPartition('/home/partitionadmin/exportPartition/partition1.zip',createNew=false)
  2. 既存のResourceGroupTemplateがインポート対象のパーティションに合わない場合、createNewオプションにtrueを設定してimportPartitionを呼び出すことができます。これにより、新たなResourceGroupTemplateを作成しますが、その際、ResourceGroupTemplateの名前の末尾には幾何学的に増加する番号が追加されます。
    例えば既存のResourceGroupTemplate名が"cokeRGT"である場合、新しいResourceGroupTemplateは"cokeRGT1"という名前で作成されます。そしてインポートされたパーティションはこの新たに作成されたResourceGroupTemplateを参照します。
    impPartStatus = importPartition('home/partitionadmin/exportPartition/partition1.zip',createNew=true)

[Java, FMW, WLS] Update your Java Version Easily with ZDT Patching

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/update_your_java_version_easily

ZDT Patching(Zero Downtime Patching)のもう一つのすばらしい機能として、WebLogic Server実行に使っているJavaのバージョンのアップデートが簡単にできる、というところです。Javaのセキュリティパッチを最新にするのは、非常に重要な継続的な作業です。ZDT Patchingが導入されるまでは、すべての管理対象サーバをJavaの新バージョンに移行するのは簡単ではありませんでした。しかし、ZDT Patchingを使うと、これがシンプルな2段階の手続きで実現できます。

まず最初に、アップデートされたバージョンのJavaをアップデート対象のすべてのノードにインストールします。この作業は手作業であったり、エンタープライズソフトウェアのインストール管理用ソフトウェアを使うことで可能です。この作業は実行中のサーバに影響を及ぼさないので、計画メンテナンス以外のタイミングで実行できます。ご注意頂きたいのは、以下の2点です。
  • 新しいバージョンのJavaをインストールする際に、既存のJavaのインストールディレクトリを上書きしてはいけません。
  • 新規ディレクトリはすべてのノードで同じでなければなりません
つづいて、WLSTコマンドを使ってJava rollOutを以下のように実行する、これだけです。
rolloutJavaHome(“Cluster1”, “/pathTo/jdk1.8.0_66”)
この例では、管理サーバが、Cluster1というクラスタ内の各ノードを順に再起動するよう調整するためにrollOutを起動しています。管理対象サーバや指定ノードのノードマネージャは停止し、Java実行ファイルへのパスのアップデートを実施します。その後、このrolloutが管理対象サーバとノードマネージャを新しいJavaのパスを使って起動します。

実に簡単ですね!

Zero Downtime Patchingを使ったJavaのアップグレードに関する詳細は、以下のドキュメントをご覧ください。
Oracle® Fusion Middleware Administering Zero Downtime Patching Workflows 12c (12.2.1)
Overview: Rolling Out a New Java Version
http://docs.oracle.com/middleware/1221/wls/WLZDT/intro.htm#WLZDT162

[FMW, Java, WLS] Resource Consumption Management in WebLogic Server MultiTenant 12.2.1 to Control Resource Usage of Domain Partitions

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/using_resource_consumption_management_in

このエントリは先頃発表されたOracle WebLogic Server 12.2.1の新機能をご紹介する一連のエントリで、その中のすばらしいパフォーママンスの分離機能をご紹介するものです。
Announcing Oracle WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/announcing_oracle_weblogic_server_12
[WLS, FMW] Announcing Oracle WebLogic Server 12.2.1 
http://orablogs-jp.blogspot.jp/2015/10/announcing-oracle-weblogic-server-1221.html 
エンタープライズでの「do more with less(より少ないリソースでよりたくさんのことを)」という強い圧力に伴い、システム管理者やデプロイヤは、エンタープライズデプロイメントのために密度を高め、ハードウェア利用率の向上を常に目指しています。WebLogic Server Multitenantでのmicro-containersやプラガブルなドメインパーティションのサポートにより、システム管理者が、既存のサイロ化されたビジネスに不可欠なJava EEデプロイメントを一つのマルチテナントドメインに配置することができます。
Domain Partitions for Multi-tenancy in WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy
[WLS, FMW] Domain Partitions for Multi-tenancy in WebLogic Server 12.2.1
http://orablogs-jp.blogspot.jp/2015/11/domain-partitions-for-multi-tenancy-in.html

Announcing Oracle WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/announcing_oracle_weblogic_server_12
[WLS, FMW] Announcing Oracle WebLogic Server 12.2.1 
http://orablogs-jp.blogspot.jp/2015/10/announcing-oracle-weblogic-server-1221.html
例えば、システム管理者が、RedとBlueという2つのパーティションを共有JVM(WebLogic Multitenant Serverインスタンス)に作成し、Java EEアプリケーションとリソースをそれらにデプロイするとしましょう。システム管理者は、あるパーティション(ここではBuleとしておきます)のアプリケーションが、サーバ・インスタンスのJVMヒープ、OS(CPU、ファイルディスクリプタ)といったすべての共有リソースを占有し、Redパーティションのアプリケーションがこうしたリソースにアクセスにあたって悪影響を与えることは避けたいと思っていることでしょう。

Runtime Isolation

したがって、既存のエンタープライズワークロードを一つのマルチテナントサーバーインスタンスに集約・統合しつつ、システム管理者はドメインパーティションに共存することにより共有されるリソースを、よりうまく管理(追跡、管理、監視、制御)する必要があります。そのために
  • あるパーティションがすべての利用可能なリソースを消費せず、他の共存するパーティションからリソースを使い尽くすことはしません。これにより、システム管理者はすべての共存するパーティションに対し、一貫したパフォーマンスの計画ならびにサポートが可能になります。
  • 共存するパーティションに対し、公平かつ効率的な利用可能なリソースを割り当てます。これにより、システム管理者は集積度を向上して大きなコスト削減を実現しながら、自信を持って、同じ環境に補完的なワークロードを配置することができます。

Control Resource Consumption Management

Resources

Fusion Middleware 12.2.1では、Oracle WebLogic Server Multitenantは、以下のリソースで確立したリソース管理ポリシーをサポートします。
  • Heap Retained(保持しているヒープ):パーティションが保持するヒープのサイズを追跡、制御します。
  • CPU Utilization(CPU利用率):パーティションが利用するCPUの利用率を追跡、制御します。
  • Open File Descriptors(オープン状態のファイルディスクリプタ):パーティションが利用する(File I/O、ソケットなどで利用しているために)開いているファイルディスクリプタを追跡、制御します。

    Recourse Actions

    トリガーが破られると、それに対応してリコースアクションを自動的に実施することでシステム管理者は反応したいと思うかもしれません。WebLogic Serverでは以下のアクションが標準で利用可能です。
    • Notify(通知):閾値を上回ったことを管理者に通知
    • Slow(減速):主にワークマネージャの設定を操作することで、パーティションがリソースを利用できづらくする。特定の状況でシステムに自己修正させる必要があります。
    • Fail(失敗):リソースへのリクエストを却下する。つまり例外を発生させる。現時点ではファイルディスクリプタのみサポート。
    • Stop(停止): 究極のステップとして、現在のサーバーインスタンスのパーティションを保護するため、シャットダウンシーケンスを呼び出す。

      Policies

      Oracle WebLogic Server Multitenantのリソース消費管理機能はシステム管理者がリソースに対しリソース消費管理ポリシーを指定し、ポリシーに反した場合にはWebLogic Serverに対して自動的に特定のリコースアクション(償還要求、返還要求)を実行するよう指示できます。ポリシーは以下の2種類のうち1個として作成されます。
      • Trigger: これは、パーティションのリソース利用状況が予測可能で、「パーティションのリソース利用状況が閾値を超える場合、リコースアクションを実行する」という形の場合に有用です。
      例えば、すべてのヒープを使い切らないようにするというサンプルのリソース消費ポリシーをシステム管理者がBlueパーティションで確立する場合、以下のようになります。

      When the "Retained Heap" (Resource) usage for the "Blue" (Partition) crosses "2 GB" (Trigger), "stop" (Action) the partition.
      Blue(パーティション)の「保持されたヒープ」(リソース)利用状況が2GB(トリガー)を超えた場合、パーティションを「停止」(アクション)する。
      • Fair share: WebLogic Serverのワークマネージャ・フェアシェアポリシーと類似していますが、このポリシーを使うと、システム管理者は有限サイズの共有リソースのシェア(占有率)をパーティションに対して指定することができます。WebLogic Serverは、システム管理者が割り当てた「シェア」を尊重しつつ、競合するコンシューマによって、このリソースが効率的(かつ公平)に共有されることを保証します。
      例えば、リソース消費ポリシーのサンプルとして、BlueパーティションよりもRedパーティションを好むシステム管理者が、CPU利用率のリソースに対するフェアシェアを60:40でRedパーティションが有利になるように設定することができます。
      補完的なワークロードが共存するパーティションにデプロイされている場合、フェアシェアポリシーを使うと、リソースを最大限に活用できます。Blueパーティションにはリクエストがない、もしくは限られたリクエストのみある場合、Redパーティションは利用可能なCPU時間を盗んですべて使い切ることができます。トラフィックがBlueパーティションで再開し、CPUの競合があると、WebLogic Serverは、システム管理者によって設定されたフェアシェア比に従い、CPU時間を割り当てます。このおかげで、これらのリソースのパーティションへの割り当て方針を保持しながら、システム管理者は単一の共有インフラストラクチャを再利用することができ、その結果インフラストラクチャのコストを節約することができます。
      ポリシー設定は、ドメインレベルで定義します。複数のプラガブルなパーティションで再利用することも、パーティションに対して固有に定義することもできます。ポリシー設定は、複数のリソースに対し、独自のビジネス要件を満たすために、トリガベースのポリシーやフェアシェアポリシーの様々な組合せを柔軟にサポートします。ポリシーは、動的に再構成することができるので、ポリシーを必要とするパーティションの再起動は不要です。
      下図は、システム管理者が2個のリソース消費管理ポリシー(より厳しい「トライアル」ポリシーと緩い「承認された」ポリシー)をどのように構成し、個々のドメインパーティションにどのように割り当てるのかを示しています。ヒープとCPUリソースが2個のドメインパーティション割り当てられていて、各々に関連づけられたポリシーによって管理されています。
      WLS 12.2.1 RCM resource manager sample schematic

      Enabling Resource Management

      WebLogic Server 12.2.1のリソース消費管理機能はJDK 8u40のリソース管理機能を使っています。WebLogic Server 12.2.1のリソース消費管理機能を使うには、Oracle JDK 8u40とG1GCが必要です。WebLogic Server Multitenantでは、リソース管理を有効化するために、以下のJVMパラメータを追加する必要があります。
      -XX:+UnlockCommercialFeatures -XX:+ResourceManagement -XX:+UseG1GC

      Track Resource Consumption

      リソース消費のメトリックもパーティション毎に利用でき、監視MBean(PartitionResourceMetricsRuntimeMBean)を使って取得できます。パーティション毎の細かい利用状況のメトリックがこの監視Mbeanから取得できるので、システム管理者はこれらのメトリックを追跡、サイジング、分析、監視、ビジネス固有のウォッチ、ハーベスタWLDFルール構成の目的で利用できます。

      Conclusion

      WebLogic Server Multitenantのリソース消費マネージャはランタイムを分離し、アプリケーションが共有・統合環境で動作する上で必要な保護を提供します。

      For More Information

      このエントリはリソース消費管理機能の表面をちょっと触った程度の内容にすぎません。この機能ならびに、WebLogic Scripting Tool(WLST)やFusion MIddleare Controlを使って、統合されたMultitenantドメインで、リソース消費管理のポリシーを構成する方法、ベストプラクティスを知りたい方は、以下の技術文書に詳細が記載されていますのでご覧ください。
      Resource Consumption Management (RCM) in Oracle WebLogic Server Multitenant (MT) - Flexibility and Control Over Resource Usage in Consolidated Environments
      https://blogs.oracle.com/WebLogicServer/resource/20151027-rcm-overview-entry-siva/wls-1221-rcm-technical-overview-v1.0.pdf 

      以下のWeblogic Server MultiTenantのドキュメントにもこの機能の利用方法の詳細が記載されています。
      Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
      Configuring Resource Consumption Management
      https://docs.oracle.com/middleware/1221/wls/WLSMT/config_rcm.htm

      この機能は、Oracle JDKとWebLogic Serverの緊密な統合の結果です。もしサンフランシスコで開催されるOracle OpenWorld 2015に参加するのであれば、Multitenancy in Java: Innovation in the JDK and Oracle WebLogic Server 12.2.1" [CON8633] (2015年10月28日(水)13時45分 / Moscone South 302)と題したセッションでこの機能の詳細をお伝えします。

      (訳注)
      このセッションのスライドが公開されています。OpenWorldのセッションカタログのページからダウンロードできます。
      Multitenancy in Java: Innovation in the JDK and Oracle WebLogic Server 12.2.1 [CON8633]
      https://events.rainfocus.com/oow15/catalog/oracle.jsp?search=CON8633&search.event=openworldEvent

      [WLS, FMW] Partition Targeting and Virtual Targets in WebLogic Server 12.2.1

      原文はこちら。
      https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets

      WebLogic Serverのmulti-tenancyサポートについてご存知ない場合、まずはTim Quinnのエントリを一読することをおすすめします。この中でWebLogic Server 12.2.1のパーティション機能の概要とこの記事で使っているコンセプトを紹介しています。
      Domain Partitions for Multi-tenancy in WebLogic Server
      https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy
      http://orablogs-jp.blogspot.jp/2015/11/domain-partitions-for-multi-tenancy-in.html

      Partition Targeting

      Timのブログでわかるように、ドメインパーティション(以後パーティションと略します)はアプリケーションやリソースの集合を含むWebLogicドメインの管理権限とランタイムのスライスです。これらのアプリケーションやリソースはドメイン中(クラスタ、特定の管理対象サーバ、もしくは管理サーバ自身)で実行する上で必要なものです。
      12.1.3以前では、アプリケーションやリソースのターゲットを個別に指定しています。通常は管理対象サーバやクラスタに対して直接指定します。パーティションの場合、少々異なります。
      • パーティションでは、リソースとアプリケーションはリソースグループとしてまとめられ、リソースグループに対してターゲットを指定します。ターゲットがリソースグループに設定されると、ターゲットはリソースグループ内のすべてのリソースやアプリケーションに対して適用します(リソースグループ内で個別にターゲット指定できません)。
      • パーティション内のリソースグループを仮想ターゲットに対してターゲット指定します。つまり管理対象サーバやクラスタに直接ターゲットを指定しません。

      Virtual Targets

      では、仮想ターゲットとは何でしょうか。WebLogic Serverの仮想ホストやWebサーバの仮想ホストという一般的なコンセプトをご存知であれば、仮想ターゲットが仮想ホストに類似するものと考えることができることでしょう。仮想ターゲットで以下の3点を達成します。
      1. 物理ターゲット(クラスタやサーバ)を提供。仮想ターゲットを物理ターゲットにデプロイし、仮想ターゲットにデプロイされた任意のリソースを、仮想ターゲットをラップする物理ターゲットにデプロイする。
      2. 個別のHTTPサーバを提供。そのため、仮想ターゲットにデプロイされた任意のWebアプリケーションはそれのHTTPサーバで動作する(デフォルトのHTTPサーバではない)。
      3. 特定仮想ターゲットへのインバウンドリクエストのマッピングを(URLの形式で)提供する。結果として特定パーティションへのリクエストのマッピングを提供する。
      それぞれを詳しくみていきましょう。

      Physical Targets

      管理対象サーバまたはクラスタを仮想ターゲットの物理ターゲットとして(VirtualTargetMBeanのsetメソッドもしくはaddTargetメソッドを使用して)指定することができます。VirtualTargetMBeanメソッドは、複数の物理ターゲットをサポートしていても、VirtualTargetに複数の物理ターゲットを設定できないようにするため、現在バリデーションがかかりますのでご注意ください。
      物理ターゲットは以下の2項目を実現します。
      1. 仮想ターゲットのデプロイ先(つまり仮想HTTPサーバが動作する場所)
      2. リソースやアプリケーションを仮想ターゲットにデプロイした場合に使われる場所

      HTTP Server

      各仮想ターゲットには個別にHTTPサーバがあり、仮想ターゲットが動作している(ターゲットとして指定されている)管理対象サーバ(もしくは管理対象サーバのクラスタ)上で遅延初期化されます。仮想ターゲットにデプロイされた任意のWebアプリケーションやリソースはこのHTTPサーバで動作します。これにより、アプリケーションが別の仮想ターゲット(もしくはデフォルトのHTTPサーバ)で動作してもコンテキストパスの衝突は起こりません。

      URL mapping

      リクエストがWebLogic Serverインスタンスに入ると、2個の重要なことが起こる必要があります。
      1. URLが所属するパーティションを識別する必要があります。
      2. HTTPリクエストの場合、適切なHTTPサーバを使うようVirtualTargetを配置する必要があります。
      これはつまり、仮想ターゲットは着信URLが仮想ターゲットに一致するかどうかを確認するため、照合のための情報を必要としている、という意味です。 
      仮想ターゲットには3個の属性があり、以下のマッチングを実現するために設定できます。
      1. Virtual hostnames: 1つまたは複数の仮想ホスト名
      2. uriPrefix: 1個のURI接頭辞パス
      3. port: ポート番号

      Virtual Hostnames

      仮想ターゲットはゼロ個以上の仮想ホスト名を持つことができます。これらのホスト名をクライアントが使うホスト名に対してマッチングします(HTTP 1.1で導入されたフィールド。HTTPを使うとホストによって提供されます)。マッチングは、リテラル文字列の比較ですが、複数のホスト名を指定することができます。これは、リクエストで使われる可能性のあるすべてのホスト名(myserver、myserver.us.com、など)をエイリアシングするのに便利です。また、仮想ホスト名はなくてもかまいません。uriPrefixのみ(もしくはポート番号のみ)を使いたいのであれば、それで大丈夫です。

      URI Prefix

      ホスト名の一致に加えて、例えば"/partition1"といった具合で、特定のURIパスで始まるすべてのリクエストが当該仮想ターゲットに一致するよう、着信リクエストのURIに一致させることができます。

      Port Number

      ポート番号に基づくルーティングは、URLの変更ができない古いクライアントの後方互換性を主たる目的として提供されています。仮想ターゲットで明示的なポート番号もしくはポート番号のオフセットを指定することができます。ポート・オフセットを使う場合、オフセットをサーバのデフォルトチャネルに適用します。仮想ターゲットにベースチャネル名を指定する場合は、特定のベースチャネル名に対して適用します。
      仮想ターゲットにポート番号を指定する場合、WebLogic Serverは自動的に仮想ターゲットのチャネルを実行時に作成するので、こうしたチャネルをご自身で作成する必要はありません。当該チャネル(ポート番号)に入ってくる任意のリクエストは仮想ターゲットに流れます。この点で、ポート番号は、URI接頭辞と仮想ホスト名の両方を上回ります。

      Examples

      下表はどのようにマッチングが機能するかを説明したものです。ここではサーバのデフォルトのポート番号を7001と仮定しています。
      ホスト名 uriPrefix ポート番号 一致するURL 一致しないURL Notes
      red
      red.com
      - - http://red:7001/myapp
      http://red.com:7001/myapp
      http://red.us.com:7001/myapp ホスト名は文字列と厳密に一致しなければならない。
      colors
      colors.com
      /red - http://colors:7001/red/myapp
      http://colors.com:7001/red/myapp
      http://red.com/red/myapp ホスト名とuriPrefixの両方一致しなければならない。
      - - 7277 http://anyhost.com:7277/myapp http://anyhost.com:7001/myapp ポート番号7277から到達する任意のリクエストに一致する。その他は一致しない。
      - /red - http://anyhost.com:7001/red/myapp http://colors.com:7001/blue/myapp ホスト名を指定しない。この場合、ホスト名は基本的にワイルドカード。

      Tips

      スキームをPick a scheme and stay with it and don't get fancy probing strange combinations. 通常は以下のパターンのうちの一つを使いたいと思うでしょう。
      1. 仮想ホストのみで識別する(red.com, blue.com, green.com)
      2. uriPrefixのみで識別する(colors.com:7001/red, colors.com:7001/blue, colors.com:7001/gree)
      3. ポート番号のみで識別する(colors.com:7277, colors.com:7278, colors.com:7279)
        1. 既存クライアントの後方互換性を保つ必要性から、ポート番号によってのみ識別する
      また、VirtualTargetsはリクエストが特定のサーバやポートへ到達する仕組みとは関係ないことを覚えておいてください。そのため、仮想ホスト名を使う場合、通常適切なホスト名エントリをDNSに作成するか、ロードバランサーを使って特定のサーバやポートへ到達するようにする必要があります。
      一般的なHTTP仮想サーバ(仮想ホストとしても知られています)のコンセプトに詳しくない場合は、このトピックに関する文書を読んでおくべきでしょう。

      Partition Targeting

      最初に述べたように、パーティションのリソース/アプリケーションはリソースグループにまとめられ、リソースグループがターゲットに対して指定されます。いくつか重要なコンセプトがあります。
      1. パーティションの利用可能なターゲット(PartitionMBean availableTargets): これはパーティション内でリソースグループを対象とするために使われる仮想ターゲットのリストです。通常、WebLogic Serverの管理者は数多くの仮想ターゲットをドメイン内に作成し、その後仮想ターゲットのサブセットを特定のパーティションに割り当てます。パーティション内のリソースグループはこれら利用可能なターゲットの一つに対してターゲット指定します。
      2. パーティションのデフォルトターゲット(PartitionMBean defaultTargets):パーティションは、0個以上のデフォルトターゲットを持つことができます。パーティション内のリソースグループを明示的にターゲットとすることができます(ResourceGroupMBeanのメソッドを使ってターゲットの設定や追加ができます)。しかし明示的なターゲットをリソースグループに対して設定していない場合、デフォルトではパーティションのデフォルトターゲットを選択します。
        1. ResourceGroupMBean:useDefaultTargetsというboolean属性があります。この値がTrue(デフォルト値)の場合、明示的なターゲットが設定されていない場合、リソースグループはパーティションのデフォルトターゲットをターゲットとして利用します。この値がfalseの場合、リソースグループはパーティションのデフォルトを使わないので、ターゲットをリソースグループに対して明示的に設定する必要があります。また、明示的にターゲットをリソースグループに設定した場合、パーティションのデフォルトを選択しないことを見越してこのフラグはfalse"へと反転します。
      3. パーティションのeffective targets(事実上のターゲット):パーティションのリソースグループが任意のタイミングで利用する、利用可能なターゲットの(サブ)セット
      そのため、パーティションのターゲッティングのセットアップの共通する流れは以下の通りです。
      1. WebLogic Serverの管理者は、パーティションが利用する仮想ターゲットをドメインレベルで作成
      2. WebLogic Serverの管理者は、パーティションを作成し、パーティションで利用可能なターゲットを各パーティションに使わせたいターゲットのセットに設定
      3. WebLogic Server(もしくはパーティションの)の管理者は、パーティションにリソースグループを作成し、パーティションに対し利用可能なターゲットに基づいて、リソースグループターゲットを設定する(もしくはパーティションのデフォルトを利用する)
      注意いただきたいのは、この最もシンプルな場合では、1個の仮想ターゲットをパーティションに(利用可能なターゲットとして)割り当てるだけで、それをパーティションのデフォルトターゲットにします。そうすることで、パーティションのすべてのリソースグループがこの1個のターゲットを使用します。

      Gotchas

      その他注意すべきことをいくつか。
      1. 仮想ターゲットの占有: ホスト名を持たない、"/"というuriPrefixを持つ仮想ターゲットを定義すると、仮想ターゲットは、ドメインに入ってくるすべてのリクエストを占有します。全く望んではいないでしょうが、これは破綻します。WebLogic Serverの構成検証機能により、そのような仮想ターゲットの作成ができないようになってはいますが、すべてのパターンに対応できているわけではありません。そのため、仮想ターゲットを具体的に意図したリクエストにマッチングさせるように留意する必要があります。
      2. 制限事項: 12.2.1では、ターゲティングに制限があります。その例をご紹介します。
        1. 仮想ターゲットを複数のパーティションで共有できません
        2. 仮想ターゲットはターゲットとして1個の(サーバもしくはクラスタの)セットのみ持つことができます
        3. リソースグループを複数の仮想ターゲットに対してターゲット指定することができます。
          1. ただし、リソースグループに以下のコンポーネントが1個以上含まれていないことが条件です。
            • JMSServer
            • MessagingBridge
            • PathService
            • JMSBridgeDestination
            • FileStore
            • JDBCStore
            • JMSSystemResource

      End-to-End Example

      以下は、WLSTを使って、一つのリソースグループと仮想ターゲットを持つ”Acme”という名前のパーティションを作成する簡単なサンプルです。アプリケーションを当該リソースグループにデプロイします。仮想ターゲットには物理ターゲットとして"myserver"(管理サーバ)があり、"/acme"というuriPrefixを使います。そのため、アプリケーションへアクセスする場合には"/acme"をURLの前に付ける必要があります。最終的に、パーティションがデフォルトでは動作していないので、パーティションが起動します。
      import os,sys,urllib,time
      # Change this to the location of a simple web application. 
      APP_PATH='/scratch/tmp/counter.war'
      # Change these to your admin login credentials and connection URL
      USER='admin'
      PASSWORD='admin123'
      T3_URL='t3://localhost:7001'
      # Change this to be the name of the server you want to deploy the app to
      SERVER='myserver'
      
      print "Connecting to " + T3_URL
      connect(USER,PASSWORD,T3_URL)
      
      edit()
      
      domain=getMBean('/')
      tgt=getMBean('/Servers/' + SERVER)
      
      # Create "Acme" virtual target
      # We set a uriPrefix only (no virtual host names)
      startEdit()
      acmevt=domain.createVirtualTarget('AcmeVT')
      acmevt.addTarget(tgt)
      acmevt.setUriPrefix('/acme')
      # The VT contains a virtual HTTP server. We can configure it
      acmevt.getWebServer().getWebServerLog().setBufferSizeKB(0)
      activate()
      
      # Create Acme partition and ResourceGroup
      startEdit()
      acmepart=domain.createPartition('Acme')
      acmepart.addAvailableTarget(acmevt)
      acmerg=acmepart.createResourceGroup('SimpleRG')
      acmerg.addTarget(acmevt)
      activate()
      
      # Deploy the application to SimpleRG in partition Acme
      startEdit()
      progress=deploy(appName='sampleapp', 
        path=APP_PATH, 
        partition=acmepart.getName(), 
        resourceGroup=acmerg.getName(), 
        deploymentOrder=10,securityModel='DDOnly')
      activate()
      while not (progress.isCompleted() or progress.isFailed()) :
          os.time.sleep(2)
      progress.printStatus()
      
      # You must start the partition to get the stuff in it running
      # This is a convenience command to start the partition and
      # wait for it to come up
      startPartitionWait(acmepart)  
       
      # Now hit the webapp at (for example) http://localhost:7001/acme/webapp/webapp.jsp
      

      [WLS, FMW] Domain Partitions for Multi-tenancy in WebLogic Server 12.2.1

      原文はこちら。
      https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy

      WebLogic Server 12.2.1での顕著な機能改善の一つとして、Multi-tenancyのサポートがあります。 マルチテナント対応のために、ドメインパーティション、リソースグループ、リソースグループテンプレートなどがWebLogic Serverの構成とランタイムに対し追加されました。このエントリではドメインパーティション、リソースグループ、リソースグループテンプレートなどがどういうもので、どういったところに適しているのかをご紹介します。

      Domain Partition

      ドメインパーティション(以下パーティションと略します)は管理上およびランタイム上のWebLogicドメインをスライスしたものです。多くの場合、WebLogic Serverのmicro-containerとしてパーティションを考えることができます。12.1.3以前では、ドメイン内の管理対象サーバーやセキュリティレルムを定義し、ドメインへアプリケーションやリソースを配置しますが、実行場所を管理するため、管理対象サーバおよびクラスタへのアプリケーションやリソースのターゲットとして指定します。

      12.2.1でももちろん同じように管理対象サーバやクラスタをアプリケーションやリソースのターゲットとして指定できますが、ドメイン中の1個以上のパーティションを作成でき、各パーティションには、アプリケーションやリソースを含みます。

      各パーティションのターゲットとして、パーティションのアプリケーションやリソースを実行させたい管理対象サーバーのクラスタを指定できます (ターゲットの詳細については後述します)。同一クラスタに複数のパーティションをターゲットにしている場合でも、独立して各パーティションを起動したりシャットダウンしたりすることができます。異なるパーティションに異なるセキュリティレルムを使わせることができます。

      加えて、各パーティションに対し、パーティションを制御できるパーティション管理者を指定できます。パーティションがmicro-container、つまりパーティションを含むドメインのスライスを認知しはじめることでしょう。

      Resource Group and PaaS


      ここで、HRソリューションのJava EEアプリケーションとそのリソースがあると仮定します。そして、財務アプリケーションパッケージとそのリソースのセットが別にあるものとします。12.1.3では、すべてのアプリケーションおよびすべてのリソースをドメインにデプロイします。異なるクラスタをデプロイ対象にするかもしれません。2個のアプリケーションで別々に起動、停止を実施したい場合、実際のところそうする必要があるでしょう。または、12.1.3では別のWebLogicドメインを使う可能性があります。一方のドメインにHRアプリケーション、もう一方に財務アプリケーションといった具合です。確かにこの方法ではターゲット、起動、停止の自由度が増しますが、より多くのドメインを実行するコストも増していきます。

      12.2.1では、リソースグループという、関連するJava EEアプリケーションやリソースのコレクションを導入しています。HRアプリケーションとリソースを一つのリソースグループにまとめ、財務アプリケーションとそのリソースを別のリソースグループにまとめることができます。各パーティションには複数のリソースグループを含めることができるので、もっとおもしろいことになります。

      先述のように、2個の別のドメインを使おう(一つはHRアプリケーション、もう一つは財務アプリケーション)と考えている場合、2個のパーティションを含む1個のドメインを使うことができます。一つのパーティションにHRアプリケーション、もう一つに財務アプリケーションという具合です。簡単な例として、HRパーティションにはHRアプリケーションとリソースを含むリソースグループがあり、financeパーティションには財務アプリケーションとリソースを含むリソースグループがあるとしましょう。12.2.1では、実のところ各リソースグループをターゲットにします。理に適っていれば、HRパーティションとfinanceパーティションの両方のリソースグループを同一クラスタへ向けることもできます。そして、パーティションはそれぞれ独立して管理できるので、別のパーティションを邪魔せずに起動、停止することができます。クラスタの管理対象サーバはずっと起動したままです。パーティションの立ち上げ、立ち下げ時に、パーティションのリソースグループ中のアプリケーションやリソースが立ち上がったり立ち下がったりするのであって、サーバ全体の立ち上げ・立ち下げではありません。

      これはConsolidation(統合)ユースケースで呼ばれることがあります。つまり、複数のドメインを統合し、個別のドメインを一つずつ個別のパーティションにマッピングし、一つの統合ドメインにまとめる、というものです。これはPaaS(platform-as-a-service)ユースケースとも呼ばれます。各パーティションをWebLogic"プラットフォーム”(micro-container)として使い、様々なアプリケーションやリソースをそれぞれの"プラットフォーム"にデプロイする、というものです。

      Resource Group Template and SaaS

      パーティションとリソースグループを使用して異なる種類の課題を解決する全く別の方法がありますが、そのためにはもう一つのコンセプトが必要です。貴社のデータセンターで運用するHRと財務のアプリケーションを他の企業体にサービスとして提供したい場合を考えましょう。
      12.1.3では、クライアントごとに別々のドメインを作成し、人事や財務アプリケーション、リソースを各ドメインで同じように展開することになるでしょう。ドメインテンプレートを使って仕事を簡単にするために、ドメインテンプレートを使用するかもしれませんが、とはいえまだ複数のドメインのオーバーヘッドが存在します。ある顧客は貴社の人事サービスを利用するけれども、別の顧客は人事サービスと財務サービスに加入している場合、1個のドメインテンプレートではうまく行かない場合があります。
      12.2.1の用語では、これは2個のリソースグループ、HRリソースグループとFinanceリソースグループのように思えますが、顧客毎にそれぞれ1回動作しています。クライアントごとに1つのパーティションを使用するのが最適なように思えますが、各顧客のパーティションで同一の2つのリソース・グループを繰り返し定義したいとは思わないでしょう。
      WebLogic 12.2.1では、そういった状況にまさにぴったりの、リソースグループテンプレートを導入しました。
      WebLogicドメイン内のリソースグループテンプレートに人事アプリケーションとリソースを定義します。別のリソースグループテンプレートに、財務アプリケーションとリソースについて同じ操作を行います。顧客ごとのパーティションを作成し、以前のように、各パーティションにリソース・グループを作成します。

      しかしこの場合、リソース・グループは、それ自体でアプリケーションやリソースを定義しておらず、代わりにHRリソースグループテンプレートを参照しています。そして、ある顧客が両アプリケーションを使いたい場合には、当該顧客のパーティションに2個目のリソースグループを作成し、もう一方のリソースグループテンプレートに作成したリソースグループを紐付けます。顧客の1社に対応するパーティションを起動すると、WebLogic Serverは基本的にリソースグループテンプレートに定義されているように、当該顧客用のアプリケーションやリソースのコピーを起動します。そして、もう一方の顧客のパーティションを起動すると、WebLogic Serverはそのアプリケーションやリソースの顧客用のコピーを始動します。
      これはクラシカルなSaaS(software-as-a-service)ユースケースです。この説明中の“customer(顧客)” という言葉を"tenant(テナント)"に置き換えると、WebLogic Server 12.2.1がパーティション、リソースグループ、リソースグループテンプレートを使って、いかにシンプルにmulti-tenancyをサポートしているかがすぐにおわかりになることでしょう。
      パッケージアプリケーションをサービスとして他社へ販売する提供する以外にリソースグループテンプレートを使う方法がありますが、この例はこれらのWebLogic Serverの新機能を一緒に使い全く新しい方法で課題を解決するための基本を説明するための助けになります。

      Some Details

      WebLogic Server 12.2.1のmulti-tenancyのサポートは非常に豊富な機能を有しており、ここでは一部をご紹介したに過ぎず、ご想像の通り、実際に役立つその他の関連機能があります。このエントリではすべての機能詳細をご紹介できませんが、いくつか簡単にご紹介しましょう。

      Resource Overriding

      SaaSのユースケースについて、次のように考えるかもしれません。
       「でも各テナントのパーティションをリソースグループテンプレートの設定と全く同じように設定したくない。例えば、別のテナントが異なるデータベースを使用する必要があるため、JDBC接続情報がパーティションごとに異なる必要があるのだ。」
      WebLogic 12.2.1を使用すると、リソース・グループ・テンプレートで定義されているアプリやリソースの設定のオーバーライドを作成することができるので、パーティションごとに異なる設定を施すことができます。 (例えば、JDBC接続情報などの)一般的なケースでは、これらのオーバーライドによって、調整が必要な主要属性が公開されます。各パーティション、パーティション内の各リソースに対して、個別にオーバーライドを設定できます。
      これらのオーバーライドでほとんどの場合をカバーできると考えていますが、もしさらなる多くの制御が必要な場合は、(再度言いますが、各パーティションに対して個別に)リソースデプロイメントプランを作成することができます。WebLogic Serverのアプリケーションデプロイメントプランに精通している場合、リソース・グループ・テンプレートで定義されたアプリケーション以外のリソースに適用されることを除き、考え方は、ほとんど同じです。

      説明のために、リソースグループテンプレートに紐付くリソースグループを含むパーティションを起動する際に、WebLogic Serverが(少なくとも概念的に)何をするのか列挙しておきます。
      • システムはすべてのリソース設定をリソースグループテンプレートから読み込む。
      • パーティションのリソースデプロイメントプランが存在する場合、システムはプランに含まれている調整内容をリソース設定に対して適用する。
      • 最後に、パーティションに対するオーバーライドを作成していた場合、システムがそれらのオーバーライドを適用する。
      • WebLogic Serverは最終的なリソース設定を使って、テンプレートで定義したリソースのパーティションのコピーを作成する。

        Targeting

        このエントリでは、ターゲティングをことを言ってきましたが、WebLogic Server 12.2.1はパーティションやリソースグループのターゲティングを(必要であれば)シンプルなものから非常に洗練されたものまで設定することができます。同僚のJoe DiPolがターゲティングに関するエントリを公開しています。
        Partition Targeting and Virtual Targets in WebLogic Server 12.2.1 
        https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets

        What Next?

        すべての新機能を紹介しているドキュメントはこちら。
        Oracle Fusion Middleware 12c (12.2.1) Oracle WebLogic Server - Tasks
        http://docs.oracle.com/middleware/1221/wls/index.html
        以下のリンクは、その中でも特にMultitenancyについて取り上げています。
        Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
        http://docs.oracle.com/middleware/1221/wls/WLSMT/ 
        ターゲットに関するJoe DiPolのエントリもお忘れなく。
        Partition Targeting and Virtual Targets in WebLogic Server 12.2.1
        https://blogs.oracle.com/dipol/entry/partition_targeting_and_virtual_targets
        http://orablogs-jp.blogspot.jp/2015/11/partition-targeting-and-virtual-targets.html

        [WLS, Java, FMW] WLS Data Source Multitenancy

        原文はこちら。
        https://blogs.oracle.com/WebLogicServer/entry/wls_data_source_mt

        Multitenancyや他の新機能については、以下のエントリをご覧ください。
        Announcing Oracle WebLogic Server 12.2.1
        https://blogs.oracle.com/WebLogicServer/entry/announcing_oracle_weblogic_server_12
        [WLS, FMW] Announcing Oracle WebLogic Server 12.2.1
        http://orablogs-jp.blogspot.jp/2015/10/announcing-oracle-weblogic-server-1221.html
        WebLogic Server 12.2.1で最大かつ最もイノベーティブな機能がMultitenancyです。アプリケーションサーバのすべてのコンポーネントが統合され、Muititenancy機能の一部として主要なコンセプトとして導入されたのが、ドメインをスライスするという考えです。これはPartitionもしくはDomain Partitionと呼んでいます。Partitionはアプリケーションやリソースを特定のTenantのために定義します。ここでPartitionの構成やランタイムはDomain中の他のPartitionとは分離しています。
        Multi-tenancyは、複数ドメインやアプリケーション・デプロイメントを管理する上での管理業務のオーバーヘッドを削減し、こうしたデプロイメントの集積度をあげることで、運用上のコストとプラットフォームへのコスト削減をめざしています。

        WLS MT機能のコンセプトは、以下のドキュメントに記載されています。
        Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
        End-to-End Lifecycle Management
        http://docs.oracle.com/middleware/1221/wls/WLSMT/concepts.htm#WLSMT725.
        MTデータソースの詳細は以下のドキュメントに説明があります。
        Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
        Configuring JDBC
        http://docs.oracle.com/middleware/1221/wls/WLSMT/config_jdbc.htm#WLSMT614
        この記事では、MT環境でのデータソースの利用について概説し、管理コンソールやFusion Middleware Controlでの操作にしぼってご紹介します。

        WLS Multi Tenant機能を使わない場合、データソースはシステムリソースともしくはドメインレベルでデプロイすることになりますが、Multi Tenant機能を使う場合、データソースは以下のスコープで定義することができます。
        • ドメイン
          • データソース(グローバルスコープ)
          • データソース(グローバルスコープ)を有するドメインレベル・リソースグループ
          • データソースを有するドメインレベル・リソースグループ・テンプレート
          • パーティション
            • データソースを有するパーティションレベルリソースグループ
            • リソースグループテンプレートに基づくパーティションレベルリソースグループ
            • パーティションレベルのJDBCシステムリソースのオーバーライド
            • パーティションレベルのリソースデプロイメントプラン
            • パーティションレベルにデプロイされたオブジェクト

        下表に様々なデプロイメントタイプとデータソース定義の更新やオーバーライドのための機構をまとめました。
        データソースのデプロイメントタイプパラメータのオーバーライドのサポート有無
        ドメインレベル・システムリソース(リソースグループで範囲指定している場合あり)オーバーライドは非サポート。
        データソースの直接変更が必要。
        リソースグループテンプレート・システムリソースデータソースを直接変更するか、もしくはリソースグループテンプレートから派生したリソースグループでオーバーライド。
        パーティションレベル・リソースグループ内のシステムリソースオーバーライドは非サポート。
        データソースの直接変更が必要。
        リソースグループ・テンプレートを基にしたリソースグループの、パーティションレベル・システムリソースJDBCシステムリソースのオーバーライドもしくはリソースデプロイメントプランを使ったオーバーライド
        ドメインやパーティションにデプロイされた、アプリケーションスコープ・データソースもしくはアプリケーションパッケージ・データソースアプリケーション・デプロイメントプランによるオーバーライド
        ドメインやパーティションにデプロイされた、スタンドアロンデータソースモジュールアプリケーション・デプロイメントプランによるオーバーライド
        ドメインやパーティションにデプロイされたデータソース定義(Java EE 6)オーバーライドは非サポート。

        ドメインレベルのリソースグループに範囲を限定したデータソースやパーティションでデータソースを作成するのは、ドメインレベルのシステムリソースを作成するのと類似していますが、スコープの指定という手順がもう一つ必要です。
        管理コンソールやFusion Middleware Controlで、データソース作成するにあたり、最初の手順で、利用可能なスコープをドロップダウンリストから選択します。
        WLSTでは、所有者のMBean(ドメイン、リソースグループ、リソースグループテンプレートのMBean)でcreateJDBCSystemResourceを使ってデータソースを作成する必要があります。
        以下のドキュメントにあげられているWLSTのサンプルはパーティション化されたドメインをセットアップする上で非常に役立ちます。
        Oracle® Fusion Middleware Using WebLogic Server Multitenant 12c (12.2.1)
        Configuring JDBC Data Sources: WLST Example
        http://docs.oracle.com/middleware/1221/wls/WLSMT/config_jdbc.htm#WLSMT519
        ここでは、仮想ターゲット、パーティション、リソースグループテンプレート、リソースグループの作成、全レベルでのデータソースの作成を説明しています。

        この記事の残りでは、GUIにフォーカスすることにします。

        管理コンソールでは、データソースのサマリをホームページから選択するところから始まります。この最初の図では、4個のデータソースがあって、WLSTを実行して作成したことがわかります。
        1個はグローバルスコープ、残りの3個はパーティション中で様々なスコープを有しています。

        “ds-using-template” データソースをクリックし、接続プールプロパティを見てみましょう。テンプレートに基づいたデータソースのオリジナルの値が確認できます。オーバーライドはこのレベルでは見えません。

        データソースのサマリで[新規]を選択し、汎用データソースを作成すると、最初のページにスコープのドロップダウンリストが現れることが確認できます。このリストは、現在利用可能なスコープに基づいて変化します。

        ホームページに戻り、ドメイン・パーティションを選択しましょう。すると2個のリソースグループを有する1個の”partition1”パーティションがあります。

        "partition1"をクリックし、オーバーライドのページへ異動すると、"ds-in-template"のJDBCオーバーライドが確認できます。ここで、URLは”otrade”から”otrade2”へオーバーライドされていることに注意してください。

        "ds-in-template"のリンクをクリックすると、変更やオーバーライドが可能です。このページではユーザーが"scott"にオーバーライドされていることを確認できます。

        [新規]を選択して、新たなJDBCシステムリソースのオーバーライドを作成できます。データソースのドロップダウンボックスにはオーバーライドを作成可能なリソースが並びます。
        管理コンソールは現在、パーティション中のすべてのリソースグループを表示しますが、趣旨はリソースグループテンプレートから派生したリソースグループのみでオーバーライドが許可されるべきで、派生していないリソースグループは直接アップデートすべきです。そのため、これらのグループはオーバーライドするべきではありません(将来取り除かれる可能性があります)。

        ホームページに戻り、データソースのページで、データソース>セキュリティ>資格証明マッピングと辿り、[新規]をクリックすると、新規のユーザー、リモートユーザー、リモートパスワードを入力できます。

        様々なレベルでデータソースのリストを見ることができます。ドメインレベルから、データソースのページの[監視]タブでは、全スコープで実行中のすべてのデータソースを表示します。

        パーティションページで"partition1">リソースグループで"partition1-rg">[サービス]>[JDBC]と辿ると、このスコープの1個のデータソースを確認できます。

        パーティションスコープのデプロイメントを非パーティションスコープデプロイメントとして取り扱うには、ホームページで[デプロイメント]を選択し、デプロイしたいearファイルもしくはwarファイルを選択します。[アプリケーションインストールアシスタント]で下図のようにスコープを選択することができます。

        earファイルやwarファイルのデプロイが完了すると、関連するスコープがある場合、関連づけられたリンクをクリックすると関連モジュールをコンソールで確認できます。最初はデプロイメントプランはありません。

        アプリケーションデプロイメントプランの作成は少々複雑ゆえ、管理コンソールを使って自動的に作成することをお勧めします。デプロイ済みデータソースへ遷移し、設定を変更して変更を保存すると、コンソールが関連するデプロイメントプランを作成するので、デプロイメントプランの名前を指定します。

        リソースグループテンプレートを派生したパーティション・データソースの属性のうち、ユーザーやパスワード、URL以外のものをオーバーライドしたい場合、リソースデプロイメントプランを作成する必要があるでしょう。
        これを管理コンソールで自動的に作成することはできませんが、アプリケーションデプロイメントプランをいじって、リソースデプロイメントプランのようにするか、XMLエディタを使って最初から作成することができます。
        これはリソースデプロイメントプランと同等のものです。リソースデプロイメントプランを利用するには、ホームページ>ドメインパーティションでパーティションのリンクをクリックし、リソースデプロイメントプランのパスにパス名を指定します。

        Fusion Middlewarwe Controlは管理コンソールと似ていますが、異なるLook&Feelを有しています。
        Fusion Middlewarwe Controlは現在セキュリティページを持っておらず、データソースのセキュリティ設定は管理コンソールで実施する必要があります。
        JDBCデータソースをWebLogicドメインのドロップダウンから選択すると、下図のようになります。

        [作成]をクリックすると、スコープのドロップダウンを含むページが現れます。
        リソースグループ名を選択すると、リソースグループ編集のためのページが現れます。
        既存のデータソースを選択すると、データソース編集のためのページが現れます。
        パーティション名を選択すると、パーティション属性編集のためのページが現れます。

        パーティションシステムリソースのオーバーライドは、パーティション名を選択して、[管理]をクリックして、[リソースのオーバーライド]を選択します。

        このページは下図のような感じです。

        このページでは、リソースグループテンプレートから派生したすべてのリソースグループを表示しています。[オーバーライドあり]にチェックがない場合、[オーバーライドの編集]をクリックして新たなオーバーライドを作成します。
        [オーバーライドあり]にチェックがある場合、下図のように[オーバーライドの編集]をクリックして既存のオーバーライドを更新します。

        この記事ではMulti Tenant環境でのデータソースの構成を主に取り上げてきました。これはMulti Tenant環境でのアプリケーションの利用は、アプリケーションソフトウェアに対し透過性が非常に高いことをご紹介したかったからです。
        重要なことは、アプリケーションサーバーのオブジェクトやコンテナを構成して、必要とされるパーティションやリソースグループにデプロイできる、ということです。