![]() ![]() ![]() ![]() |
OSB コントロールを使用すると、Web サービスやビジネス プロセスから Oracle Service Bus プロキシ サービスを呼び出したり、セキュリティ コンテキストやトランザクション コンテキストの伝播をサポートしたりできます。
OSB コントロールを使用すると、RMI による Service Bus 転送がコンフィグレーションされた Oracle Service Bus プロキシ サービスを、ビジネス プロセスから呼び出すことができます。また、Web サービス、リモート Web サービス、またはビジネス プロセスにリクエストを送信したり、それらからのコールバックを受信したりできます。
OSB コントロールはサービス ブローカ コントロールを拡張したもので、サービス コントロールでサポートされる機能は OSB コントロールでもサポートされます。サービス ブローカ コントロールの詳細については、「サービス ブローカ コントロール」を参照してください。
最初のステップは、OSB コントロール ファイルの作成です。コントロール ファイルは Oracle Workshop for WebLogic を使用して対象のサービス (WSDL ファイル) から自動的に生成できます。また、Oracle Workshop for WebLogic の [データ パレット] の [コントロール] セクションの [追加] 機能を使用して作成することもできます。コントロールのメソッドとコールバックは、対象のサービスのオペレーションとコールバックに対応しています。このコントロール ファイルのインスタンスは対象のサービスを呼び出すために親サービスで使用されます。また、対象のサービスからコールバックを取得するためにも使用されます。OSB コントロール ファイルでは、対象のサービスがステートフルな場合は、開始メソッドに対してのみセレクタのアノテーションを設定できます。一方、対象のサービスがステートレスな場合は、どのメソッドに対してもセレクタのアノテーションを設定できます。
注意 : | 親プロセスと対象プロセスの両方を、同じプロトコルを使用するようにコンフィグレーションする必要があります。プロトコルの照合と有効化は自動的には処理されません。 |
新しい OSB コントロールを作成して Web サービスまたはビジネス プロセスに追加するには、[コントロールの挿入 : OSB コントロール] ダイアログを使用します。
注意 : | デザイン ビューが表示されていない場合は、[デザイン] タブをクリックします。 |
[データ パレット] ビューが Oracle Workshop for WebLogic に表示されない場合は、メニュー バーから [ウィンドウ|ビューの表示|データ パレット] をクリックします。
[コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-1 を参照)。
[コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-2 を参照)。
動的なセレクタ クエリ ビルダを起動した場合は、以下の手順を実行して、クエリを構築してテストします。
TPM
] を選択します。ドメイン全体の DynamicProperties.xml
ファイルで指定した動的プロパティにルックアップ値をバインドするには、[LookupControl] を選択します。ドメインがアクティブでない場合にだけ、DynamicProperties.xml
ファイルを編集してルックアップ値を動的プロパティにバインドしてください。ドメインがアクティブな場合は、Oracle WebLogic Integration Administration Console を使用してルックアップ値をバインドすることをお勧めします。
Oracle WebLogic Integration Administration Console を使用して動的なプロパティにルックアップ値をバインドする方法の詳細については、「プロセス コンフィグレーション」にある「動的コントロール セレクタの追加および変更」を参照してください。
WSDL ファイルに Oracle Service Bus バインディングがコンフィグレーションされていない場合は、[コントロールの挿入 : OSB コントロール] ダイアログ ボックスが表示されます (図 13-5 を参照)。このダイアログ ボックスで以下を行います。
[既存のタイプが見つかりません] ダイアログ ボックスが表示されます (図 13-6 を参照)。
OSB コントロールが作成され、[パッケージ・エクスプローラー] ペインに表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。
プロキシ サービスを使用して OSB コントロールを作成するには、既存の Oracle Service Bus プロジェクトが必要になります。
[コントロールの挿入 : OSB コントロール] ダイアログが表示されます。
[既存のタイプが見つかりません] ダイアログ ボックスが表示されます。
プロキシ サービスを使用して OSB コントロールが作成され、ビジネス プロセス内 ([パッケージ・エクスプローラー] ペイン) に表示されます。コントロールのインスタンスも作成され、データ パレットに追加されます。
OSB コントロールは、サービス ブローカ コントロールの拡張です。サービス ブローカ コントロールのアノテーションに加え、要件に応じて以下のアノテーションが追加で提供されています。
サービス ブローカ コントロールのアノテーションの詳細については、「サービス ブローカ コントロールのアノテーションに関する注意」を参照してください。
このアノテーションはマーカ アノテーションで、SOAP 1.1 over RMI をサポートする OSB コントロールを指定します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiSoapProtocol
{
}
注意 : | このアノテーションは、WSDL に基づいて自動生成されます。このアノテーションは変更しないようにしてください。このアノテーションを指定した場合、サービス コントロールでサポートされるアノテーション (HttpSoapProtocol 、HttpSoap12Protocol 、JmsSoapProtocol 、JmsSoapProtocol など) は指定できません。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。 |
このアノテーションはマーカ アノテーションで、SOAP 1.2 over RMI をサポートする OSB コントロールを指定します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiSoap12Protocol
{
}
注意 : | このアノテーションは、WSDL に基づいて自動生成されます。このアノテーションは変更しないようにしてください。このアノテーションを指定した場合、サービス コントロールでサポートされるアノテーション (HttpSoapProtocol 、HttpSoap12Protocol 、JmsSoapProtocol 、JmsSoapProtocol など) は指定できません。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。 |
このアノテーションは、SB シン クライアント API で必要になる RMI 関連パラメータを指定するために使用します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、SOAP over RMI、抽象 SOAP over RMI、抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD})
public @interface SBTransport
{
String serviceURI();
boolean execute() default true;
String jndiURL() default “”;
表 13-1 は、SBTransport アノテーションのフィールドを示しています。
注意 : | このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。サービス コントロール アノテーション Location は省略可能です。サービス コントロール アノテーション WSDL は必須です。 |
このアノテーションは、SB 転送にカスタム ヘッダを指定するために使用します。このアノテーションは、クラス レベルで指定できます。このアノテーションは、SOAP over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface CustomHeader
{
String name;
String value;
}
表 13-2 は、CustomHeader アノテーションのフィールドを示しています。
注意 : | このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。 |
このアノテーションは、SB 転送に複数のカスタム ヘッダを指定するために使用します。このアノテーションは、クラス レベルで指定できます。このアノテーションは、SOAP over RMI、抽象 SOAP over RMI、抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface CustomHeaders
{
CustomHeader[] headers;
}
このアノテーションのフィールドは headers で、名前/値ペアの配列を表します。
注意 : | このアノテーションは、必ず RmiSoapProtocol または RmiSoap12Protocol と一緒に指定します。 |
このアノテーションはマーカ アノテーションで、RMI による抽象 XML メッセージの転送をサポートする OSB コントロールを指定するために使用します。このアノテーションは、クラス レベルでのみ指定できます。このアノテーションは、抽象 SOAP over RMI および抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface RmiXmlProtocol
{
}
注意 : | このアノテーションを指定した場合は、RmiSoapProtocol 、RmiSoap12Protocol 、およびサービス コントロールでサポートされるどのアノテーションも指定できません。SBTransport アノテーションを指定する必要があります。この場合、OSB コントロール内にいかなるコールバック インタフェース (@EventSet アノテーション) も含めることはできません。 |
このアノテーションはマーカ アノテーションで、一方向のオペレーションを指定するために使用します。このアノテーションは、メソッド レベルでのみ指定できます。このアノテーションは、抽象 SOAP over RMI および抽象 XML over RMI をサポートするために使用します。次に、このアノテーションの使用例を示します。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface OneWay
{
}
注意 : | このアノテーションは、RmiXmlProtocol が指定されている場合にのみ指定できます。 |
このアノテーションを指定した場合、それぞれのメソッド シグネチャは以下のようになります。
OSB コントロールでは、ビジネス プロセス内のメソッド レベルで、トランザクション コンテキストの伝播がサポートされています。特定のメソッドのトランザクション コンテキストを伝播するか、あるいは Transactional
アノテーションを使用しないかを指定できます。このアノテーションでは、トランザクション コンテキストが伝播されない場合に備え、RMI 呼び出しのタイムアウトも指定します。
transaction
アノテーションは、コントロール レベルで指定した場合はコントロール内のすべてのメソッドに適用され、メソッド レベルで指定した場合はメソッド レベルで適用されます。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Transactional
{
boolean value() default true;
int timeout() default 60;
}
表 13-3 に、Transactional アノテーションのフィールドを示します。
注意 : | このアノテーションは、必ず OSB コントロールに定義されているアノテーションと一緒に指定します。このアノテーションを指定しない場合のデフォルトでは、トランザクション コンテキストが Oracle Service Bus に伝播されます。 |
SBTransport
アノテーションの一部としてプリンシパルおよび資格を指定した場合は、それらの資格がリモート JNDI プロバイダでの認証に使用されます。セキュリティ コンテキストの伝播は、SBTransport
アノテーションの execute
属性に応じ、Oracle Service Bus へのメッセージの転送中に以下の説明に従って発生します。
import com.bea.control.SbTransportControl;
import org.apache.beehive.controls.api.events.EventSet;
import org.apache.beehive.controls.api.bean.ControlExtension;
@SbTransportControl.SBTransport(serviceURI = "/MyAddProxy", jndiURL = "t3://localhost:7001")
@SbTransportControl.RmiSoapProtocol
@SbTransportControl.SOAPBinding(style = SbTransportControl.SOAPBinding.Style.DOCUMENT, use = SbTransportControl.SOAPBinding.Use.LITERAL, parameterStyle = SbTransportControl.SOAPBinding.ParameterStyle.WRAPPED)
@SbTransportControl.WSDL(path = "../requestquote/AddPro_proxy.wsdl", service = "AddPro")
public interface ALSBControl extends SbTransportControl
static final long serialVersionUID = 1L;
public int addNumbers(int num1_arg,int num2_arg);
/** このイベントは、onAsyncFailure イベントのサポートを提供するインタフェースを設定する。
public interface Callback extends SbTransportControl.Callback {};
public ALSBControl create(); }
![]() ![]() ![]() |