接続オーバーライドの指定

接続オーバーライドは、動的に設定することも、ユーザーが設定することもできます。接続オーバーライドを指定することで、ユーザーは汎用アプリケーションを作成して、アプリケーションを実行するユーザーに応じて一部の設定をカスタマイズできるようになります。しかし、例えば、3270E 接続で使用する LUName や 5250 接続の workstationID は、実行時に動的に設定することができます。

統合オブジェクトで接続オーバーライドを指定するには、その統合オブジェクトにアクセスするコードを変更して、doHPTransaction() メソッドまたは processRequest() メソッドを呼び出す前にその統合オブジェクト・インスタンスの setHPubConnectionOverrides(Properties overrides) メソッドまたは setHPubConnectionOverrides(String overrides) メソッドを呼び出すようにする必要があります。このメソッドは、統合オブジェクトの接続オーバーライドを設定します。統合オブジェクトの doHPTransaction() メソッドまたは processRequest() メソッドを呼び出す際に、その統合オブジェクトと関連付けられた接続オーバーライドがある場合は、その統合オブジェクト用の新規プールが、入力内のその統合オブジェクトの接続プールおよび接続オーバーライドを基にして作成されます。

以下は、IO.setHPubConnectionOverrides() メソッドを使用する JSP コードの例です。
<% / Set the connection overrides    
java.util.Properties overrides = new java.util.Properties();   
overrides.setProperty("LUName", "LU00001");   
// Apply overrides to the IO    
SignOn.setHPubConnectionOverrides(overrides);   
SignOn.doHPTransaction(request,response);       
// Get new IO pool name to be used in following logic   
String newPoolName = SignOn.getHPubStartPoolName();      

%>  

既存の統合オブジェクトに接続オーバーライドを指定する場合には、統合オブジェクトを再コンパイルすることなく、新規の com.ibm.HostPublisher.IntegrationObject.HPubPoolFactory クラスを使用することができます。doHPTransaction() メソッドまたは processRequest() メソッドを呼び出す前に、その静的なメソッドである create() を使用できます。このメソッドは、入力内のプール・オブジェクトのクローンを作成して、それに関連付けられた Host On-Demand プロパティーに接続オーバーライドを適用することによって、新規のプール・オブジェクトを生成します。新規プール名前が返されますので、setHPubStartPoolName() メソッドを使用して統合オブジェクトでその名前を設定する必要があります。入力内のプール名が無効である場合、create() メソッドはヌルを返します。

create メソッドの 3 番目のパラメーターがヌルである場合は、プール名を ZIETrans アプリケーション名で修飾する必要があります。例えば、プール名は my_ZIETrans_project/main のようになります。

使用可能な静的メソッドは、以下の 2 つです。
static String create(String poolName,
                     Properties overrides,
                     javax.servlet.http.HttpServletRequest httpServletRequest)
static String create(String poolName,
                     String overrides,
                     javax.servlet.http.HttpServletRequest httpServletRequest)

これらのメソッドは、指定のプール定義および指定の接続オーバーライドを基にして新規のプール定義を作成します。

新規プールの名前は、ホスト接続を確立する統合オブジェクトの doHPTransaction() メソッドまたは processRequest() メソッドを呼び出す前に、インスタンスの setHPubStartPoolName() メソッドを使用して、その統合オブジェクトで設定する必要があります。

指定のプール名に対する接続定義がプロジェクト内にない場合、create() メソッドはヌルを返します。

create メソッドの 3 番目のパラメーターがヌルである場合は、プール名を ZIETrans アプリケーション名で修飾する必要があります。たとえば、プール名は「my_ZIETrans_project/main」のようになります。

2 番目のメソッド・シグニチャーを使用する場合、接続オーバーライドは「key1=value1, key2=value2」という形式にする必要があります。最初のメソッドでは、オーバーライドの指定に標準の Java™ プロパティー・オブジェクトを使用します。

com.ibm.HostPublisher.IntegrationObject.HPubPoolFactory,create() メソッドを使用する JSP コードの例を以下に示します。

<% / Set the connection overrides    
java.util.Properties overrides = new java.util.Properties();   
overrides.setProperty("LUName", "LU00001");   
// Create a new Pool based on a the default pool and the connection overrides    
String poolName = SignOn.getHPubStartPoolName();   
String newPoolName = 
com.ibm.HostPublisher.IntegrationObject.HPubPoolFactory.create    
                               (poolName, overrides, request);   
// If a valid poolName is returned, make the IO use the new pool   
if (newPoolName != null) {      
  SignOn.setHPubStartPoolName(newPoolName);      
  SignOn.doHPTransaction(request,response);   
}  
else {     
  // Error condition  
}  

%>  
チェーニングされた統合オブジェクトが正常に動作するための要件は以下のとおりです。
  • setHPubConnectionOverrides() メソッドを使用する場合は、接続オーバーライドをチェーン内の最初の統合オブジェクトで設定する必要があります。
  • HPubPoolFactory.create() メソッドを使用する場合は、新しく作成されたプール名をチェーン内の最初の統合オブジェクトで設定する必要があります。

どちらの例でも、統合オブジェクトは、統合オブジェクトの元のプールのクローンを作成して接続オーバーライドを適用することによって作成した、新規のプール・オブジェクトを使用します。統合オブジェクトの元のプールに適用されるすべての設定 (プーリングを含む) は、新規のプールにも適用されます。接続オーバーライドは、統合オブジェクトにアクセスするユーザーごとに別々に指定することができます。ZIETrans ランタイムは、ユーザーごとにプール・オブジェクトを作成します。プーリングが無効になっている場合、接続オーバーライドの指定があるときに動的に作成されるこれらのプールは、最後のアクティブ接続が終了すると共に破棄されます。プロジェクト設定エディターの「その他」タブにある「接続パラメーターのオーバーライド」ページで指定された接続オーバーライド・パラメーターは、統合オブジェクトに適用されません。

プーリングが無効になっている場合、接続オーバーライドの指定があるときに動的に作成されるプールは、最後のアクティブ接続が終了すると共に自動的に破棄されます。