WebSphere CE 上での A2A クライアントと Java アプリケーションの統合
この例では、A2A クライアントを使用して、WebSphere Application Server Community Edition (WebSphere CE)内の Java コンテナ JDBC 接続プールによって使用される認証情報を管理します。
capam33
この例では、A2A クライアントを使用して、WebSphere Application Server Community Edition (WebSphere CE)内の Java コンテナ JDBC 接続プールによって使用される認証情報を管理します。
2
この例では、認証情報のビューアおよび HSQLDB データ ストアを使用して、以下の情報を表示します。
- 認証情報のビューアは、CSPMClientJava クラスを使用して、認証情報マネージャ サーバに保存されている認証情報を表示する方法を示しています。この例を使用して簡単な統合を行い、認証情報マネージャへの接続および認証情報を取得する機能をテストします。例では、画面に認証情報を表示します。
- HSQLDB データ ストアでは、認証情報マネージャJdbcDriverJava クラスを使用して、データ ストアを設定し、認証情報を取得し、HSQLDB データ ストアに接続する方法を示します。この例では、認証情報を取得し、データ ストアへのアクセスに使用します。
歴史的な理由から、コード サンプル、ファイル、および環境変数名で、A2A は CSPM と呼ばれます。
この例は、以下のディレクトリ内のすべての A2A クライアント インストールで使用可能です。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/WebSphere_Sample
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/WebSphere_Sample
ファイル | 説明 |
ClassFactory.java | サンプル Web アプリケーションで使用されるオブジェクトを作成するために使用するクラス ファクトリ。クラスを使用すると、 CSPMClient クラスを作成して、データベースへの接続の取得に使用されるデータ ソースを取得する初期コンテキスト内での検索を実行できます。 |
CredentialsViewer.java | 認証情報を取得する認証情報マネージャ サーバに接続するために使用するサーブレット クラス。 |
ConnectionTester.java | データベースへの 10 個の接続を構築し、ベーシック SQL ステートメントを実行するために使用するサーブレット クラス。このクラスは、 ClassFactory クラスを使用して、DataSource クラスを取得します。 |
WebSphere CE の統合プロセス
以下の手順を使用して、アプリケーションが認証情報の管理に認証情報マネージャ サーバを使用するように変更します。
- 開発環境を設定します。「WebSphere CE の開発環境を設定する」を参照してください。
- 必要に応じて、A2A クライアントを統合して認証情報を取得します。「WebSphere CE の認証情報のビューア」を参照してください。
- データ ソース ファイルを作成または変更します。「HSQLDB データ ストアとの WebSphere CE 接続プール」を参照してください。
- リクエスタを登録します。「WebSphere CE リクエスタの登録」を参照してください。
WebSphere CE の開発環境を設定する
WebSphere CE 開発と認証情報マネージャ統合の両方の開発環境を設定する必要があります。
この例には、WAR ファイルの作成と展開に使用できるビルド ディレクトリにある、 Apache ANT ビルド ファイルが含まれています。ビルド ファイルには ANT 1.6.5 以上との互換性があります。
WebSphere CE の開発環境の設定
WebSphere CE の開発環境を設定するには、以下の手順を使用します。
以下の手順に従います。
- WebSphere Application Server Community Edition 2.0 をインストールします。http://www.ibm.com/developerworks/downloads/ws/wasce/ を参照してください。
- 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など)に設定します。
WebSphere CE と A2A クライアントの統合用の環境の設定
WebSphere CE との A2A クライアント統合の環境を設定するには、以下の手順を使用します。
以下の手順に従います。
- JAVA_OPTS 環境変数を作成または追加します。
- 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
- $WEBSPHERE_HOME/var/config/config.xmlファイルを編集します。<gbean name="TomcatAJPConnector">XML エレメントを検索し、その下にあるポート属性を以下のように変更します。コピー元:<gbean name="TomcatAJPConnector"><attribute name="host">${ServerHostname}</attribute><attribute name="port">${AJPPortPrimary}</attribute>変更後:<gbean name="TomcatAJPConnector"><attribute name="host">${ServerHostname}</attribute><attribute name="port">8010</attribute>
- cspmclient.jarファイルを成果物として、WebSphere CE に登録します。これを行うには、管理コンソールにログインし、共通のライブラリを次のように選択します。
- [参照]を選択して、以下の場所で cspmclient.jar を検索します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/lib
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/lib
- グループに、「cspmclient」を入力します。
- 成果物に、「cspmclient」を入力します。
- バージョンに、「3.5」を入力します。
- タイプに、「jar」を入力します。
- [インストール]を選択して、JAR ファイルをリポジトリに追加します。
- cloakwareJdbc.jarファイルを成果物として、WebSphere CE に登録します。これを行うには、管理コンソールにログインし、共通のライブラリを次のように選択します。
- [参照]を選択して、以下の場所でcloakwareJdbc.jarを検索します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/tools
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/tools
- グループに、「cloakwareJdbc」を入力します。
- 成果物に、「cloakwareJdbc」を入力します。
- バージョンに、「3.5」を入力します。
- タイプに、「jar」を入力します。
- [インストール]を選択して、JAR ファイルをリポジトリに追加します。
HSQLDB の環境の設定
HSQLDB の環境を設定するには、以下のプロセスを使用します。
以下の手順に従います。
- hsqldb.jarファイルを成果物として、WebSphere CE に登録します。これを行うには、管理コンソールにログインし、共通のライブラリを次のように選択します。
- [参照]を選択して、以下の場所でhsqldb.jarを検索します。
- UNIX:$HSQL_HOME/lib
- Windows:%HSQL_HOME%/lib
- グループに、「hsqldb」を入力します。
- 成果物に、「hsqldb」を入力します。
- バージョンに、「1.8.0.2」を入力します。
- タイプに、「jar」を入力します。
- [インストール]を選択して、JAR ファイルをリポジトリに追加します。
WebSphere CE 管理コンソールを使用したデータベース プールの設定
WebSphere CE 管理コンソールを使用してデータベース プールを設定するには、以下の手順を使用します。
以下の手順に従います。
- HSQLDB が実行中であることを確認します。「HSQL データベースの使用方法」を参照してください。
- コンソールのメイン ウィンドウから、データベース プールの画面に移動します。
- 「Geronimo データベース プール ウィザードを使用する」を選択してデータベース プールを作成します。
- データベース プールの名前の値を入力します。Web アプリケーションの例には、CSPMSampleDSを入力する必要があります。
- データベース タイプは[Other]を選択します。
- [Next]を選択します。
- JDBC ドライバ クラスには、「com.cloakware.jdbc.JdbcDriver」を入力します。
- ドライバ JAR の場合、Ctrlキーを押してを以下のすべてのエントリを選択します。
- cspmclient/cspmclient/3.5/jar
- cloakwareJdbc/cloakwareJdbc/3.5/jar
- hsqldb/hsqldb/1.8.0.2/jar
- DB ユーザ名は空白のままにします。
- DB パスワードと確認用パスワードは空白のままにします。
- [Next]を選択します。
- JDBC 接続 URL には、次を入力します。cspm:jdbc:hsqldb:hsql://localhost:9001/cspm1;CSPMAlias=hsql;CSPMDriver=org.hsqldb.jdbcDriver
- 接続プールのパラメータは空白のままにします。
- [Test Connection]を選択します。WebSphere CE のパネルの上部に、「HSQL データベース エンジン 1.8.0 に接続しました」が表示されます。
- [Deploy]を選択します。
2 番目のデータベース プールの作成
サンプルの WebSphere CE アプリケーションを実行するには、以下のように、2 番目のデータベース プールを作成します。
以下の手順に従います。
- コンソールのメイン ウィンドウから、データベース プールの画面に移動します。
- 「Geronimo データベース プール ウィザードを使用する」を選択してデータベース プールを作成します。
- データベース プールの名前の値として、「SampleDS」を入力します。
- データベース タイプは[Other]を選択します。
- [Next]を選択します。
- JDBC ドライバ クラスに、「org.hsqldb.jdbcDriver」を入力します。
- ドライバ JAR に、hsqldb/hsqldb/1.8.0.2/jarを選択します。
- DB ユーザ名に、「TestUser」を入力します。
- DB パスワードと確認用パスワードに、「Test」を入力します。
- [Next]を選択します。
- JDBC 接続 URL に、「jdbc:hsqldb:hsql://localhost:9001/cspm1」を入力します。
- 接続プールのパラメータは空白のままにします。
- [Test Connection]を選択します。WebSphere CE のパネルの上部に、「HSQL データベース エンジン 1.8.0 に接続しました」が表示されます。
- [Deploy]を選択します。
サンプル WebSphere CE アプリケーションの展開および実行
以下の手順で、Apache ANT タスクを使用して、サンプル web アプリケーションをコンパイルおよび実行します。
以下の手順に従います。
- WebSphere CE を実行していて、以下の手順を完了していることを確認します。
- 「WebSphere CE の開発環境を設定する」で説明されている、WebSphere CE との A2A クライアントの統合用の環境を設定するための手順
- 「WebSphere CE の開発環境を設定する」で説明されている、HSQLDB の環境を設定するための手順
- 「HSQLDB データ ストアとの WebSphere CE 接続プール」で説明されている、WebSphere CE 管理コンソールを使用して、データベース プールを設定するための手順
- 「HSQLDB データ ストアとの WebSphere CE 接続プール」で説明されている、サンプル WebSphere CE アプリケーションを実行するための手順
- テキスト エディタ(メモ帳や Vim など)で、以下のディレクトリにあるbuild.propertiesファイルを編集します。
- UNIX:$CSPM_CLIENT_HOME/cspmclient/examples/java/WebSphere_Sample/build
- Windows:%CSPM_CLIENT_HOME%/cspmclient/examples/java/WebSphere_Sample/build
- dir.serverプロパティの値(例:C:/Program Files/IBM/WebSphere/AppServerCommunityEdition)を変更し、ファイルを保存します。
- コマンド ライン ウィンドウを開きます。
- ディレクトリを、それぞれ以下の場所に変更します。
- UNIX:$CSPM_CLIENT_HOME/cspmclient/examples/java/WebSphere_Sample/build
- Windows:%CSPM_CLIENT_HOME%/cspmclient/examples/java/WebSphere_Sample/build
- ant start.hsqldを入力して、HSQLDB サーバを起動します。
- antを入力して、サンプルをコンパイルおよび展開します。
- Web ブラウザを開きます。
- 次のページをロードします: https://localhost:8443/cspmWebsphereSample
WebSphere CE の認証情報のビューア
この例のサーブレットは、
CSPMClient
クラスを使用して、認証情報を取得する方法を示しています。クラス ファクトリを使用して、
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 データ ストアとの WebSphere CE 接続プール
この例では、認証情報の取得に認証情報マネージャ サーバを使用するための、データ ソースを作成または変更する方法を示します。WebSphere CE 管理コンソールでは、データ ソースの定義が作成されます。
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 に割り当てます。
この接続取得の低レベル ドライバ管理は、(認証情報マネージャ サーバによって)データベース パスワードが変更されたユーザが取得したすべての新しい接続が、新しいパスワードを使用して作成されたことを意味します。このアクションは、任意のナレッジまたは所有する任意のデータベース プールの介入なしに自動的に発生します。
新しいパスワードで新しい接続が取得されますが、古いパスワードで取得した既存の接続がデータベース プール内に残る可能性があります。また、認証情報マネージャ エイリアスを新しいユーザに変更する場合、接続プールには(少なくとも一時的に)異なる実際のデータベース ユーザ用の接続が混在します。
CA Technologies
ドライバによる、この接続管理で、データベース パスワードの変更が、データベース プールのアクティビティに透過的であることを確認します。WebSphere CE リクエスタの登録
認証情報マネージャでリクエスタを登録する手順については、「認証情報マネージャ A2A リクエスタの追加および実行」を参照してください。以下のデータを使用します。
パラメータ | 説明 |
スクリプト名 | com.cloakware.cspm.sample.web.CredentialsViewer |
実行パス | C:\Program Files (x86)\IBM\WebSphere\AppServerCommunityEdition\bin |
Type | Java |
パラメータ | 説明 |
スクリプト名 | com.cloakware.client.jdbc.JdbcDriver |
実行パス | C:\Program Files (x86)\IBM\WebSphere\AppServerCommunityEdition\bin |
Type | Java |
HSQLDB とは、Java で記述された SQL リレーショナル データベース エンジンです。HSQLDB は、例ではデータベース サーバとして使用されています。次も参照してください。