プロパティ・マップでのワークフロー・クライアント構成
接続プロパティを動的に指定する場合は、java.util.Mapを使用してプロパティを指定できます。これらのプロパティは、構成ファイル内の定義よりも優先されます。したがって、wf_client_config.xmlに定義した値は、これらのプロパティの値によって上書きされます。サーバーへの接続詳細を動的に指定しない場合は、マップでのプロパティ設定を省略し、ファクトリ・メソッドにNULL値を渡すことができます。この場合、構成ファイルwf_client_config.xmlはクライアント・アプリケーションのクラスパス内で検索されます。
構成ファイルがクラスパス内にある必要があるのは、構成ファイルから構成を取得する場合のみです。特定のクライアント・タイプの全設定をプロパティ・マップを使用して行う場合、このファイルの設定はオプションです。また、JAXBオブジェクトにも構成ファイルは必要ありません。これは、すべての設定がJAXBオブジェクトから取得されるためです。次のコード・サンプルに詳細を示します。
IWorkflowServiceClient wfSvcClient = WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory .REMOTE_CLIENT, (Map<IWorkflowServiceClientConstants.CONNECTION_PROPERTY, String> ) null, null);
この場合、クライアントは、クラスパス内で検出されたwf_client_config.xmlの値を使用してサービスにアクセスします。構成ファイルがクラスパス内に見つからない場合に、サービス・タイプに応じた設定を指定しないと、ワークフロー例外がスローされます。プロパティ・マップがNULLで、構成ファイルが見つからない場合も、例外がスローされます。構成ファイルが見つからない場合に、クライアントでマップ内の一部のプロパティが省略されていると、実行時にサービス・コールが失敗します(プロパティは構成ファイルの補足です)。
クライアント・プロパティは、WorkflowServiceClientFactoryメソッドを使用して定義できます。次のコード・サンプルに詳細を示します。
public static IWorkflowServiceClient getWorkflowServiceClient(String clientType,Map<CONNECTION_PROPERTY, String> properties,
Logger logger) hrows WorkflowException
マップでプロパティのCONNECTION_PROPERTYタイプを使用してクライアント・タイプを定義すると、次のコード・サンプル示すファクトリ・メソッドを使用できます。
public static IWorkflowServiceClient getWorkflowServiceClient(Map<CONNECTION_ PROPERTY, String> properties, Logger logger) throws WorkflowException
次に、クライアント・プロパティを設定するためにプロパティ・マップで使用できるIWorkflowServiceClientConstants.CONNECTION_PROPERTYを示します。
public enum CONNECTION_PROPERTY {
MODE, // not supported , deprecated
EJB_INITIAL_CONTEXT_FACTORY,
EJB_PROVIDER_URL,
EJB_SECURITY_PRINCIPAL,
EJB_SECURITY_CREDENTIALS,
// SOAP configuration
SOAP_END_POINT_ROOT,
SOAP_IDENTITY_PROPAGATION, // if value is 'saml' then SAML-token
identity propagation is used
SOAP_IDENTITY_PROPAGATION_MODE, // "dynamic'
MANAGEMENT_POLICY_URI, // dafault value is "oracle/log_policy"
SECURITY_POLICY_URI, // default value is "oracle/wss10_
saml_token_client_policy"
// REMOTE EJB
TASK_SERVICE_PARTICIPATE_IN_CLIENT_TRANSACTION // default value is
false
//(task service EJB starts a new transaction)
CLIENT_TYPE, DISCOVERY_OF_END_POINT,
WSS_RECIPIENT_KEY_ALIAS,
EJB_JNDI_SUFFIX // append to jndi name to used foreign jndi name
};ノート:
プロパティ・マップを使用する場合、IWorkflowServiceClientConstants.CONNECTION_PROPERTY.MODEを指定する必要はありません。このプロパティは、11g リリース1では非推奨です。
次のコード・サンプルに、リモートEnterprise JavaBeansクライアントの例を示します。
Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_
PROPERTY,String>();
properties.put(CONNECTION_PROPERTY.EJB_INITIAL_CONTEXT_
FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.put(CONNECTION_PROPERTY.EJB_PROVIDER_URL,
"t3://myhost.us.example.com:7001");
properties.put(CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");
properties.put(CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "weblogic");
IWorkflowServiceClient client =
WorkflowServiceClientFactory.getWorkflowServiceClient(
WorkflowServiceClientFactory.REMOTE_CLIENT,
properties, null);
次のコード・サンプルは、SOAPクライアントの例です。
Map<CONNECTION_PROPERTY,String> properties = new HashMap<CONNECTION_
PROPERTY,String>();
properties.put(CONNECTION_PROPERTY.SOAP_END_POINT_ROOT, "http://myhost:7001");
IWorkflowServiceClient client =
WorkflowServiceClientFactory.getWorkflowServiceClient(
WorkflowServiceClientFactory.SOAP_CLIENT,
properties, null);