WebLogic 上での A2A クライアントと Java アプリケーションの統合
この例では、A2A クライアントを使用して、サポートされている Oracle WebLogic Server 内の Java コンテナ JDBC 接続プールによって使用される認証情報を管理します。統合する各 WebLogic サーバに A2A クライアントをインストールする必要があります。
capam33
この例では、A2A クライアントを使用して、サポートされている Oracle WebLogic Server 内の Java コンテナ JDBC 接続プールによって使用される認証情報を管理します。統合する各 WebLogic サーバに A2A クライアントをインストールする必要があります。
2
この例では、認証情報のビューアおよび HSQLDB データ ストアを使用して、以下を表示します。
- 認証情報のビューアは、CSPMClient Java クラスを使用して、認証情報マネージャ サーバに保存されている認証情報を表示する方法を示しています。この例を使用して簡単な統合を行い、認証情報マネージャへの接続および認証情報を取得する機能をテストします。例では、画面に認証情報を表示します。
- HSQLDB データ ストアでは、認証情報マネージャ JdbcDriver Java クラスを使用して、データ ストアを設定し、認証情報を取得し、HSQLDB データ ストアに接続する方法を示します。この例では、認証情報を取得し、データ ストアへのアクセスに使用します。
歴史的な理由から、コード サンプル、ファイル、および環境変数名で、A2A は CSPM と呼ばれます。
この例は、以下のディレクトリ内のすべての A2A クライアント インストールで使用可能です。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/WebLogic_Sample
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/WebLogic_Sample
ファイル | 説明 |
ClassFactory.java | サンプル Web アプリケーションで使用されるオブジェクトを作成するために使用するクラス ファクトリ。クラスを使用すると、 CSPMClient クラスを作成して、データベースへの接続の取得に使用されるデータ ソースを取得する初期コンテキスト内での検索を実行できます。 |
CredentialsViewer.java | 認証情報を取得する認証情報マネージャ サーバに接続するために使用するサーブレット クラス。 |
ConnectionTester.java | データベースへの 10 個の接続を構築し、ベーシック SQL ステートメントを実行するために使用するサーブレット クラス。このクラスは、 ClassFactory クラスを使用して、DataSource クラスを取得します。 |
WebLogic 用の統合プロセス
以下の手順を使用して、アプリケーションが認証情報の管理に認証情報マネージャ サーバを使用するように変更します。
- 開発環境を設定します。「WebLogic の開発環境を設定する」を参照してください。
- 必要に応じて、A2A クライアントを統合して認証情報を取得します。「WebLogic の認証情報のビューア」を参照してください。
- データ ソース ファイルを作成または変更します。「HSQLDB データ ストアとの WebLogic 接続プール」を参照してください。
- リクエスタを登録します。「WebLogic リクエスタの登録」を参照してください。
WebLogic の開発環境を設定する
WebLogic 開発と認証情報マネージャ統合の両方の開発環境を設定する必要があります。
この例には、WAR ファイルを作成しそれを展開する場合に使用できる Apache ANT ビルド ファイル(
build
ディレクトリ内に存在)が含まれています。ビルド ファイルには ANT 1.6.5 以上との互換性があります。WebLogic の開発環境を設定するには、以下の手順を使用します。
以下の手順に従います。
- WebLogic サーバ 10.0 をインストールします。http://www.oracle.com/technetwork/middleware/ias/downloads/101310-085449.html を参照してください。
- WebLogic 設定ウィザード アプリケーションでは、デフォルト設定を使用してcspmSampleという名前のドメインを作成します。詳細については、WebLogic ドキュメントを参照してください。
- Apache ANT 1.6.5 以上をインストールします。http://ant.apache.org/bindownload.cgi を参照してください。
- ANT_HOME環境変数を設定します。http://ant.apache.org/manual/install.html を参照してください。
- Java データベース HSQLDB 1.8.0 をインストールします。http://sourceforge.net/project/showfiles.php?group_id=23316 を参照してください。
- HSQL_HOME環境変数を、HSQL をインストールしたパス(opt/tools/hsqldbなど)に設定します。
以下のプロセスで、WebLogic と A2A クライアント統合用の環境を設定します。
以下の手順に従います。
- JAVA_OPTIONS 環境変数を作成または追加します。
- UNIX の場合 :-Djava.library.path=$CSPM_CLIENT_HOME\lib-Dcspm_client_config_file=$CSPM_CLIENT_HOME\config\cspm_client_config.xml
- Windows の場合:-Djava.library.path=%CSPM_CLIENT_HOME%\lib-Dcspm_client_config_file=%CSPM_CLIENT_HOME%\config\cspm_client_config.xml
- A2A クライアントのlibディレクトリに配置されているcspmclient.jarファイルを WebLogic ドメインのlibディレクトリにコピーします。
- UNIX の場合 :コピー元:$CSPM_CLIENT_HOME/cloakware/cspmclient/libコピー先:$WEBLOGIC_HOME/user_projects/domains/$YOUR_DOMAIN/lib
- Windows の場合:コピー元:%CSPM_CLIENT_HOME%/cloakware/cspmclient/libコピー先:%WEBLOGIC_HOME%/user_projects/domains/%YOUR_DOMAIN%/lib
- A2A クライアントのtoolsディレクトリに配置されているcloakwareJdbc.jarファイルを WebLogic のホーム ディレクトリにコピーします。
- UNIX の場合 :コピー元:$CSPM_CLIENT_HOME/cspmclient/toolsコピー先:$WEBLOGIC_HOME/user_projects/domains/$YOUR_DOMAIN/lib
- Windows の場合:コピー元:%CSPM_CLIENT_HOME%/cspmclient/toolsコピー先:%WEBLOGIC_HOME%/user_projects/domains/%YOUR_DOMAIN%/lib
手順 1 と手順 2 は、以下のディレクトリにある ANT ビルド ファイルによって実行されます。
- UNIX:$CSPM_CLIENT_HOME/examples/java/WebLogic_Sample/build
- Windows:%CSPM_CLIENT_HOME%/examples/java/WebLogic_Sample/build
このディレクトリから、「
ant deploy.driver.lib
」を入力します。サンプル WebLogic アプリケーションの展開および実行
以下の手順で、Apache ANT タスクを使用して、サンプル Web アプリケーションをコンパイルおよび実行します。
以下の手順に従います。
- WebLogic が実行されており、「WebLogic の開発環境を設定する」で作成したドメインを使用していることを確認してください。
- テキスト エディタ(メモ帳や Vim など)で、それぞれ以下の場所にあるbuild.propertiesファイルを編集します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/WebLogic_Sample/build
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/WebLogic_Sample/build
- 以下のプロパティの値を変更し、ファイルを保存します。
- dir.bea。Bea WebLogic Server 10.0 がインストールされている場所を指します(例:C:/bea)
- weblogic.adminurl。管理コンソールの URL (例:t3://localhost:7001)
- weblogic.domain。展開に使用する WebLogic ドメイン。これは、「WebLogic の開発環境を設定する」で作成したcspmSampleドメイン名と一致する必要があります。
- weblogic.server。展開に使用するサーバ インスタンスの名前(例:AdminServer)
- weblogic.username。管理コンソールのユーザ名(例:weblogic)
- weblogic.password。管理コンソールのパスワード(例:weblogic)
- コマンド ライン ウィンドウを開きます。
- ディレクトリを、それぞれ以下に変更します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/WebLogic_Sample/build
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/WebLogic_Sample/build
- ant start.hsqldを入力して、HSQLDB サーバを起動します。
- antを入力して、サンプルをコンパイルおよび展開します。
- Web ブラウザを開きます。
- 次のページをロードします: http://localhost:7001/cspmWeblogicSample。
WebLogic の認証情報のビューア
この例のサーブレットは、CSPM クライアント クラスを使用して、認証情報を取得する方法を示しています。
クラス ファクトリを使用して、
CSPMClient
クラスが作成されます。クラス ファイル
package com.cloakware.cspm.sample.web; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.cloakware.jdbc.StatusCodeMapping; import com.cloakware.cspm.client.CSPMClient; import com.cloakware.cspm.sample.ClassFactory; /** * This servlet class is used to retrieve credentials using the * CSPMClient class.<br> * <br> * The user enters a CSPMAlias Name and the servlet displays the information * returned by the CSPMClient class. <br> * <br> * Since the CSPMClient class only returns a status code, the base class * provides a class to convert the status code to a more meaningful sentence. */ public class CredentialsViewer extends HttpServlet { /* Attribute names */ private final String ERROR_MSG = "errorMsg"; /* Parameter names and attributes when refreshing the page */ private final String ALIAS_NAME = "aliasName"; private final String BYPASS_CACHE = "byPassCache"; /* Attributes used when displaying credentials/response from * the CSPMClient class. */ private final String RETURN_CODE = "returnCode"; private final String RETURN_MSG = "returnMsg"; private final String USERNAME = "username"; private final String PASSWORD = "password"; /* Error message */ private final String MSG_ALIAS_EMPTY = "Alias cannot be empty"; /* Response page */ private final String TARGET_JSP = "/index.jsp"; /** * Constructor of the object. */ public CredentialsViewer() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { // Just puts "destroy" string in log super.destroy(); } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * The method retrieves the alias name and the value of the checkbox * indicating if the CSPMClient cache needs to be bypassed. It then calls * the retrieveCredentials method of the CSPMClient class and displays the * results. <br> * <br> * An error message is displayed if the alias name is missing. * * @param request * the request send by the client to the server * @param response * the response send by the server to the client * @throws ServletException * if an error occurred * @throws IOException * if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Retrieve the parameters String alias = (String)request.getParameter(ALIAS_NAME); Object byPassCache = request.getParameter(BYPASS_CACHE); // Make sure to redisplay the alias name. request.setAttribute(ALIAS_NAME, alias); request.setAttribute(BYPASS_CACHE, (byPassCache != null) ? "checked" : null); // if we have an alias if (alias != null && !"".equals(alias)) { // Class used to retrieve the credential. CSPMClient cspmClient = ClassFactory.getCSPMClient(); // Retrieve the credentials. if (byPassCache == null) { cspmClient.retrieveCredentials(alias); } else { cspmClient.retrieveCredentials(alias, "true"); } // Set the credentials in the request request.removeAttribute(ERROR_MSG); request.setAttribute(RETURN_CODE, cspmClient.getStatusCode()); String statusMsg = StatusCodeMapping .getStatusText(cspmClient); request.setAttribute(RETURN_MSG, statusMsg); request.setAttribute(USERNAME, cspmClient.getUserId()); request.setAttribute(PASSWORD, cspmClient.getPassword()); } else { // return an error message. request.setAttribute(ERROR_MSG, MSG_ALIAS_EMPTY); request.removeAttribute(RETURN_CODE); } // Get the request dispatcher RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher(TARGET_JSP); // Forward to the jsp file to display the credentials dispatcher.forward(request, response); } }
HSQLDB データ ストアとの WebLogic 接続プール
この例では、認証情報の取得に認証情報マネージャ サーバを使用するための、データ ソースを作成または変更する方法を示します。WebLogic サーバ管理コンソール、または Apache ANT スクリプトを使用してデータ ソース定義を作成できます。このスクリプトは、
wlconfig
カスタム ANT タスクを使用します。A2A クライアントをアプリケーションに統合するには、データ ソースによって使用される JDBC ドライバを変更します。認証情報マネージャの JDBC ドライバは、認証情報マネージャの JDBC URL として認識される任意の JDBC URL を提供するプロキシ JDBC ドライバとして機能します。データ ソースの構成では、特別な認証情報マネージャ スタイルの JDBC URL で使用する、対象となるドライバおよびエイリアスに関する情報を提供します。認証情報マネージャ スタイルの JDBC URL の形式は次のとおりです。
cspm:[url];CSPMDriver=target.driver;CSPMAlias=alias
認証情報マネージャ URL を次のように設定します。
- cspm:プレフィックスで始まることを確認します。
- プレフィックスに続いて標準の JDBC URL を入力します。ユーザ/パスワードの使用は避けてください。例:jdbc:hsqldb:hsql://localhost:9001/cspm1。
- 使用する明示的な JDBC ドライバを示すCSPMDriverを URL に含めます。
- 認証情報マネージャ サーバのデータベース ユーザのエイリアスであるCSPMAliasを URL に割り当てます。
この接続取得の低レベル ドライバ管理は、(認証情報マネージャ サーバによって)データベース パスワードが変更されたユーザが取得したすべての新しい接続が、新しいパスワードを使用して作成されたことを意味します。このアクションは、任意のナレッジまたは所有する任意のデータ ソースの介入なしに自動的に発生します。
新しいパスワードで新しい接続が取得されましたが、古いパスワードで取得した既存の接続がデータ ソースのプール内に残っている可能性があります。また、認証情報マネージャ エイリアスを新しいユーザに変更する場合、接続プールには(少なくとも一時的に)異なる実際のデータベース ユーザ用の接続が混在します。
このような ドライバによる接続管理で、データベース パスワードの変更がデータ ソースのアクティビティに対して透過的であることを確認します。
WebLogic コンソールのインターフェース、またはこの例で提供される ANT スクリプトを使用して、データ ソースを設定できます。
この例で提供される ANT スクリプトは、必要なデータ ソースを自動的に設定するため、この手順はオプションです。
認証情報マネージャの JDBC ドライバを使用するデータ ソースを作成するには、WebLogic コンソールで以下の手順を実行します。始める前に、HSQLDB が実行されていることを確認します。「HSQL データベースの使用方法」を参照してください。
WebLogic コンソールを使用してデータ ソースを設定するには、以下の手順を使用します。
以下の手順に従います。
- コンソールのメイン ウィンドウから、[Services]、[JDBC]、[Data Sources]に移動します。
- [Lock & Edit]を選択します。
- [New]を選択します。
- 名前を入力します。例:ExamplesDS。
- JNDI 名の値を入力します。例:ExamplesDS
- データベース タイプには、[Other]を選択します。
- [Next]を選択します。
- 適切なトランザクション オプションを選択します。
- [Next]を選択します。
- データベース名には、「cspm1」を入力します。
- ホスト名には、「localhost」を入力します。
- ポートには、「9001」を入力します。
- [Database User Name]は空白のままにします。
- パスワードと確認用パスワードは空白のままにします。
- [Next]を選択します。
- ドライバ クラス名には、「com.cloakware.jdbc.JdbcDriver」を入力します。
- [URL]には、以下を入力します。cspm:jdbc:hsqldb:hsql://localhost:9001/cspm1;CSPMAlias=hsql;CSPMDriver=org.hsqldb.jdbcDriver
- [Database User Name]は空白のままにします。
- パスワードと確認用パスワードは空白のままにします。
- [Properties]は空白のままにします。
- [Test Table Name]は空白のままにします。
- [Test Connection]を選択します。WebLogic のパネル上部に、「Connection test succeeded」というメッセージが表示されるはずです。
- [Next]を選択します。
- ターゲット サーバを選択します。
- [Finish]を選択します。
- [Activate Changes]を選択します。
以下の Apache ANT ターゲットでは、認証情報マネージャの JDBC ドライバおよびデータ ソースを使用して接続プールを作成する方法を示します。
WebLogic WLConfig Apache Ant タスクを使用してデータ ソースを設定するには:
<!—- Define the wlconfig task --> <taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig"> <classpath path="${dir.bea.server.lib}/weblogic.jar"/> </taskdef> <!—- Define used to create a DataSource using Cloakware JdbcDriver --> <target name="datasource.create" depends=""> <wlconfig url="${weblogic.adminurl}" username="${weblogic.username}" password="${weblogic.password}"> <query domain="${weblogic.domain}" type="Server" name="${weblogic.server}" property="adminserver"/> <create type="JDBCConnectionPool" name="${datasource.pool.name}" property="datasource.pool.cspm" > <set attribute="CapacityIncrement" value="1"/> <set attribute="DriverName" value="com.cloakware.jdbc.JdbcDriver"/> <set attribute="InitialCapacity" value="5"/> <set attribute="MaxCapacity" value="10"/> <set attribute="RefreshMinutes" value="0"/> <set attribute="ShrinkPeriodMinutes" value="1"/> <set attribute="ShrinkFrequencySeconds" value="30"/> <set attribute="ShrinkingEnabled" value="true"/> <set attribute="TestConnectionsOnRelease" value="false"/> <set attribute="TestConnectionsOnReserve" value="true"/> <set attribute="URL" value="cspm:jdbc:hsqldb:hsql://localhost:9001/cspm1; CSPMAlias=hsql; CSPMDriver=org.hsqldb.jdbcDriver"/> <set attribute="Targets" value="${adminserver}"/> <set attribute="TestTableName" value="PUBLIC.TESTTBL"/> </create> <create type="JDBCDataSource" name="${datasource.ds.name}" property="datasource.cspm"> <set attribute="JNDIName" value="CSPM${datasource.jndi.name}"/> <set attribute="PoolName" value="CSPM${datasource.pool.name}"/> <set attribute="Targets" value="${adminserver}"/> </create> </wlconfig> </target>
WebLogic リクエスタを登録します
認証情報マネージャでリクエスタを登録する手順については、「認証情報マネージャ A2A リクエスタの追加および実行」を参照してください。以下のデータを使用します。
パラメータ | 説明 |
スクリプト名 | com.cloakware.cspm.sample.web.CredentialsViewer |
実行パス | C:\bea\user_projects\domains\cloakware |
Type | Java |
パラメータ | 説明 |
スクリプト名 | com.cloakware.client.jdbc.JdbcDriver |
実行パス | C:\bea\user_projects\domains\cloakware |
Type | Java |
HSQLDB とは、Java で記述された SQL リレーショナル データベース エンジンです。これは、例では、データベース サーバとして使用されています。次も参照してください。