Web サービスへのパラメーターの追加

Web サービスが操作を行う、サポートされているデータベース内のオプション・プロパティーを設定するパラメーター、および Web サービスとデータベースとの接続のオプション・プロパティーを設定するパラメーターを、Web サービスに追加することができます。 デフォルトでは、これらのパラメーターを、データ開発プロジェクト内で作成する Web サービスに追加できます。あるいは、個々の Web サービスをデプロイする時に追加することもできます。

このタスクについて

追加の Web サービス・パラメーターを指定してから、これらのパラメーターの値を渡すことによって、追加の制御または監査情報を Web サービスに渡すことができます。 プロジェクトの「プロパティー」ウィンドウの「Web サービス」ページまたは「Web サービスのデプロイ」ウィザードに表示される、「パラメーター」表でパラメーターを指定します。

以下の 3 つの異なる方法で追加パラメーターに値を渡すことができます。
  • パラメーター」表で値を直接指定する
  • SOAP メッセージ・ヘッダーで値を指定する (クライアント・アプリケーションが SOAP/HTTP メッセージを Web サービスに送信する場合)
  • HTTP 制御パラメーターで値を指定する (クライアント・アプリケーションが REST に類似したメッセージを Web サービスに送信する場合)

渡される値は、メッセージが要求する操作に対してのみ適用されます。 これらは、複数のメッセージあるいは操作にまたがることはありません。

手順

Web サービスにパラメーターを追加するには、次のようにします。

  1. 追加する制御パラメーターおよびそのパラメーターに設定する値を決定します。
    DB2® データベース・クライアントの監査情報を渡すためのパラメーター
    • connection.jcc.clientAccountingInformation
    • connection.jcc.clientUser
    • connection.jcc.clientProgramName
    • connection.jcc.clientWorkstation

    これらのパラメーターに関する説明は、このトピックの末尾にある「関連情報」セクションのリンクを参照してください。リンクをたどる際は、パラメーターの名前の 3 番目の部分を検索してパラメーターを見つけます。 例えば、パラメーター名が connection.jcc.clientUser の場合は、clientUser を検索するとパラメーターが見つかります。

    接続情報を渡すためのパラメーター
    connection.stmt.maxRows
    結果セット用に返す行の最大数を指定します。
    connection.stmt.queryTimeout
    ステートメントがデータベース上で実行されるのを JDBC ドライバーが待機する秒数を指定します。 ステートメントがこの時間内に実行されない場合は、接続が閉じます。
    メッセージ出力フォーマットを指定するパラメーター
    outputFormat
    この制御パラメーターについては、『メッセージ出力フォーマット』に説明があります。
  2. Apache Tomcat Web サーバーを使用している場合、リソース定義によってパラメーター accessToUnderlyingConnectionAllowedtrue に設定されます。 例えば、DB2 for Linux, UNIX, and Windows に付属するサンプル・データベースを使用している場合、リソース定義は以下のようになります。 accessToUnderlyingConnectionAllowed パラメーターは太字で強調表示されます。
    <Resource driverClassName="com.ibm.db2.jcc.DB2Driver" 
    maxActive="4" 
    maxIdle="2" 
    maxWait="5000" 
    name="jdbc/sample" 
    password="password" 
    type="javax.sql.DataSource" 
    url="jdbc:db2://localhost:50000/sample" 
    username="userID" 
    validationQuery="select * from employee" 
    accessToUnderlyingConnectionAllowed="true"/>
  3. データ開発プロジェクトの「プロパティー」ウィンドウまたは「Web サービスのデプロイ」ウィザードを開きます。
    オプション 説明
    データ開発プロジェクト内のすべての Web サービスにパラメーターを追加する場合、次のようにします。
    1. プロジェクト・ノードを右クリックして「プロパティー」を選択します。
    2. プロパティー」ウィンドウで、「Web サービス」を選択します。
    デプロイする Web サービスにのみパラメーターを追加する場合、次のようにします。
    • データ開発プロジェクト内で、Web サービスを右クリックした後、「作成とデプロイ」を選択します。
  4. パラメーターごとに、以下のステップに従います。
    1. パラメーター」表の右にある「新規」をクリックします。 編集可能な行が表に表示されます。
    2. 編集可能な行の「名前」列にパラメーターの名前を入力します。
    3. Web サービスがデータベース上で操作を実行するたびにパラメーターの値を使用するようにするには、「」列にパラメーターの値を入力します。 パラメーター名が service という接頭部で始まる場合は、値を指定する必要があります。
    4. SOAP メッセージのヘッダーや REST メッセージの HTTP 制御パラメーターで値を指定する場合は、「」列はブランクにしておきます。

データ開発プロジェクト内のすべての Web サービスについて、データベース接続プロパティー clientUser を設定するとします。プロジェクト・ノードを右クリックし、「プロパティー」を選択します。 「プロパティー」ウィンドウで、「Web サービス」を選択します。「パラメーター」表の隣にある「Web サービス (Web Services)」ページで、「新規」をクリックして行を表に追加します。新規の行の「名前」列で、connection.jcc.clientUser と入力します。

プロジェクトの「Web サービスのプロパティー (Web Services properties)」ページと「Web サービスのデプロイ」ウィザードの「パラメーター」表
このパラメーターに値を提供するには、以下の 3 つの方法があります。
  • 新規の行の「」列に値を指定します。 Web サービスは、パラメーターとその値をすべてのデータベース接続に例外なく適用します。クライアント・アプリケーション内でこのパラメーターに指定される値はすべて無視されます。
    「パラメーター」表の「値」列にパラメーターの値を指定する。
  • クライアント・アプリケーションが Web サービスに送信する SOAP/HTTP メッセージのヘッダーに値を指定します。

    SOAP ヘッダーを使用した Apache Axis2 生成コードの例

    package myClientTest;
    
    import example.WebService2Stub;
     
    public class getEmployee {
    
       public static void main(String args[]) {
          try {
             // create the stub
             WebService2Stub stub = new WebService2Stub("http://localhost:8000/WebService2/services/WebService2");
             // create the request elment for SOAP body
             WebService2Stub.GetEmployee empRequest = new  WebService2Stub.GetEmployee();
             // fill request with employee number
             empRequest.setEmpno("000130");
    
             // create the Header for the request element
             WebService2Stub.ConnectionProperties properties = new WebService2Stub.ConnectionProperties();
             WebService2Stub.ConnectionPropertiesType propertiesType = new WebService2Stub.ConnectionPropertiesType();
             properties.setConnectionProperties(propertiesType);
    
             // fill the header with properties
             WebService2Stub.Property_type0 property1 = new WebService2Stub.Property_type0();
             property1.setName("connection.jcc.clientUser");
             property1.setValue("heathr");
             propertiesType.addProperty(property1);
    
    
             WebService2Stub.GetEmployeeResponse response =  stub.getEmployee(empRequest, properties);
    
             //...
    
          } catch (Exception e) {
             System.err.println(e.toString());
          }
       }
    }

    以下は、コードによって生成される SOAP 要求です。

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header>
          <ns1:connectionProperties xmlns:ns1="urn:example">
             <property name="connection.jcc.clientUser" value="heathr"/>
          </ns1:connectionProperties>
       </soapenv:Header>
       <soapenv:Body>
          <ns1:getEmployee xmlns:ns1="urn:example">
             <empno>000130</empno>
          </ns1:getEmployee>
       </soapenv:Body>
    </soapenv:Envelope>
  • クライアント・アプリケーションが Web サービスに送信する、REST に類似したメッセージの HTTP 制御パラメーターに値を指定します。REST メッセージの URL の中で、先頭に下線が付いている部分が HTTP 制御パラメーターです。

    以下は、REST に類似した HTTP GET (URL エンコード) を使用する入力メッセージの例です。

    GET /Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr HTTP/1.1
    User-Agent: Java/1.5.0
    Host: localhost:8070 
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
    Connection: keep-alive
    Content-type: application/x-www-form-urlencoded

    要求の結果の URL は次のようになります。 この URL は、すべての HTTP バインディングで使用できます。

    http://localhost:8080/Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr


フィードバック