EJB プロバイダーを使用すると、WSIF クライアントは、 RMI-IIOP (Remote Method Invocation over Internet Inter-ORB Protocol) を介してエンタープライズ Bean を 呼び出すことができます。この情報とそれに関連したコード・フラグメントを使用すると、WSDL 拡張を作成して、WSIF サービスをエンタープライズ Bean として実装されたサービスに関連付けることができます。
EJB クライアント JAR ファイルは、現行プロバイダーを使用してクライアント・ランタイム環境で使用可能でなければなりません。 エンタープライズ Bean は、通常の EJB 呼び出しメソッドを使用し、 RMI-IIOP を使用して、現行のセキュリティーおよびトランザクション・コンテキストで 呼び出されます。 EJB プロバイダーがトランザクション内で呼び出される場合、 そのトランザクションが今度はそれ以後のサービスに渡されて、 標準の EJB トランザクション属性が適用されます。
サービスの複数のインプリメンテーションがある場合は、すべてのインプリメンテーションが必ず同じ セマンティクスを提供する方法は、そのサービス・プロバイダーによります。例えばトランザクションの場合、 Bean デプロイヤーが強制的に新規トランザクションを確立するには、TX_REQUIRES_NEW を指定する必要があります。
EJB プロバイダーは WSIF 同期タイムアウトをサポートしていません。 EJB プロバイダーは、Java メソッドの終了を待ってタイムアウトになるのではありません。
EJB プロバイダーを使用するには、WSDL ファイルで 以下のバインディングを指定する必要があります。
<!-- EJB binding --> <binding .... > <ejb:binding /> <format:typeMapping style="Java" encoding="Java"/>? <format:typeMap name="qname" formatType="nmtoken"/>* </format:typeMapping> <operation>* <ejb:operation methodName="nmtoken" parameterOrder="nmtoken" returnPart="nmtoken"? interface="remote|home" /> <input name="nmtoken"? />? <output name="nmtoken"? />? <fault name="nmtoken"? />? </operation> </binding>
この例では、次のようになっています。
次の例では、以下のとおりです。
<service ... > <port>* <ejb:address className="nmtoken" jndiName="nmtoken" initialContextFactory="nmtoken" ? jndiProviderURL="nmtoken" ? /> </port> </service>