プロパティ・マップでのワークフロー・クライアント構成
接続プロパティを動的に指定する場合は、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);