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のドメイン名 |
以下の例はサンプルプロパティを示しています。
この例では、myserverで動作する v$session.program が “WebLogic myserver Partition DOMAIN”に置換されます。<properties> <property> <name>v$session.program</name> <sys-prop-value>WebLogic ${servername} Partition ${partition}</sys-prop-value> </property> </properties>
この機能の最大の制限は、v$sessionの関連するカラム(列)の文字制限です。上限を超えると、接続作成に失敗します。
Oracle Databaseのv$session値と組み合わせてこの拡張機能を利用すると、接続ソースに関する情報追跡のための強力な機能に仕立てることができます。
0 件のコメント:
コメントを投稿