カスタム Java コンポーネントを作成するには、
以下のようにします。
- モジュール・プロジェクトで、「インターフェース」を展開して、WebSphere Studio Application Developer Integration 内のこの Java クラス用に生成された WSDL インターフェースを選択します。
- このインターフェースをアセンブリー・エディターにドラッグ・アンド・ドロップします。
作成するコンポーネントのタイプを選択するように求めるダイアログがポップアップ表示されます。
「実装タイプのないコンポーネント」を選択して、
「OK」をクリックします。
- アセンブリー図に、汎用コンポーネントが表示されます。
そのコンポーネントを選択して、「プロパティー」ビューに進みます。
- 「記述」タブで、
コンポーネントの名前を変更して、より分かりやすい名前で表示することができます。
- 「詳細」タブで、
このコンポーネントに 1 つのインターフェース (アセンブリー・エディターにドラッグ・アンド・ドロップしたインターフェース) があることが分かります。
- アクセスを試みている Java クラスがサービス・プロジェクト自体の中に含まれていない場合は、
そのクラスがサービス・プロジェクトのクラスパス上にあることを確認します。
- モジュール・プロジェクトを右クリックして、
「依存関係エディターを開く...」を選択します。
「Java」セクションで、古い Java クラスが含まれているプロジェクトがリストされていることを確認します。
リストされていない場合は、「追加...」ボタンをクリックして追加してください。
- アセンブリー・エディターに戻り、作成したばかりのコンポーネントを右クリックして、
を選択します。
Java の実装が生成されるパッケージを選択します。
これにより、SCA プログラミング・モデル (複合タイプは commonj.sdo.DataObject であるオブジェクトによって表され、
単純タイプはそれと同等の Java オブジェクトによって表される) に準拠した WSDL インターフェースに従ったスケルトン Java サービスが作成されます。
下記のコードの例は、以下を示しています。
- 5.1 の WSDL インターフェースからの関連する定義
- WSDL に対応する WebSphere Studio Application Developer Integration Edition 5.1 Java メソッド
- 同じ WSDL 用の WebSphere Integration Developer 6.0 Java メソッド
以下のコードは、5.1 の WSDL インターフェースからの関連する定義を示しています。
<types>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified"
elementFormDefault="unqualified"
targetNamespace="http://migr.practice.ibm.com/"
xmlns:xsd1="http://migr.practice.ibm.com/">
<complexType name="StockInfo">
<all>
<element name="index" type="int"/>
<element name="price" type="double"/>
<element name="symbol" nillable="true"
type="string"/>
</all>
</complexType>
</schema>
</types>
<message name="getStockInfoRequest">
<part name="symbol" type="xsd:string"/>
</message>
<message name="getStockInfoResponse">
<part name="result" type="xsd1:StockInfo"/>
</message>
<operation name="getStockInfo" parameterOrder="symbol">
<input message="tns:getStockInfoRequest"
name="getStockInfoRequest"/>
<output message="tns:getStockInfoResponse"
name="getStockInfoResponse"/>
</operation>
以下のコードは、WSDL に対応する WebSphere Studio Application Developer Integration Edition 5.1 Java メソッドを示しています。
public StockInfo getStockInfo(String symbol)
{
return new StockInfo();
}
public void setStockPrice(String symbol, float newPrice)
{
// set some things
}
以下のコードは、同じ WSDL 用の WebSphere Integration Developer 6.0 Java メソッドを示しています。
public DataObject getStockInfo(String aString) {
//TODO Needs to be implemented.
return null;
}
public void setStockPrice(String symbol, Float newPrice) {
//TODO Needs to be implemented.
}
ここで、生成された Java 実装クラスの中の「//TODO」タグで示されている部分に、
コードを入力する必要があります。
次の 2 つのオプションがあります。
- ロジックをオリジナルの Java クラスからこのクラスに移動し、DataObject を使用するように適合させます。
- WebSphere Studio Application Developer Integration Edition でトップダウン・アプローチを選択しており、Java コンポーネントに DataObject パラメーターを扱わせたい場合には、
これが推奨されるオプションです。
WebSphere Studio Application Developer Integration Edition の WSDL 定義から生成された Java クラスが、除去する必要がある WSIF 依存関係を持っているため、
この再作業が必要になります。
- この生成済み Java クラスの内側に、古い Java クラスの専用インスタンスを作成し、
以下のことを行うためのコードを作成します。
- 生成された Java 実装クラスのすべてのパラメーターを、古い Java クラスが期待するパラメーターに変換する。
- 変換されたパラメーターを使用して、古い Java クラスの専用インスタンスを呼び出す。
- 古い Java クラスの戻り値を、
生成された Java 実装メソッドで宣言されている戻り値の型に変換する。
- このオプションは、新しい 6.0 スタイルの Java コンポーネントが WSIF サービス・プロキシーを利用する必要がある使用量シナリオで、推奨されます。
上記のオプションの 1 つが完了したら、Java サービスを再ワイヤリングする必要があります。
参照は存在しないはずであるため、必要なのは Java コンポーネントのインターフェースの再ワイヤリングのみです。
- このサービスが同じモジュール内のビジネス・プロセスによって呼び出される場合は、
該当するビジネス・プロセス参照からこの Java コンポーネントのインターフェースへのワイヤーを作成します。
- このサービスが別のモジュール内のビジネス・プロセスによって呼び出される場合は、
SCA バインディング付きエクスポートを作成し、
このエクスポートを他のモジュールからそのモジュールのアセンブリー・エディターにドラッグ・アンド・ドロップして、
対応する SCA バインディング付きインポートを作成します。
該当するビジネス・プロセス参照をそのインポートにワイヤリングします。
- このサービスが、外部での公開のために WebSphere Studio Application Developer Integration Edition で公開されていた場合、
サービスの再公開の方法については、
セクション『マイグレーション済みサービスにアクセスするために SCA エクスポートを作成』を参照してください。