Rational Application Developer を使用して SCA アプリケーションを開発する

この記事では、Rational Application Developer Version 8 使用して SCA (Service Component Architecture) アプリケーションを開発する方法と SCA アプリケーションにアクセスする方法について、サンプル・アプリケーションを使用して説明します。まず始めに基本的な定義とよく使われる用語について説明し、続いて前提条件と参考文献へのリンクを挙げた後、SCA アプリケーションの開発方法について説明します。次に Rational Application Developer のウィザードを使用してサンプル SCA アプリケーションを開発する方法について説明します。その際、SCA サービスや SCA 参照に対してサポートされているさまざまなバインディング、つまりデフォルトの SCA バインディング、Web サービス・バインディング、EJB バインディングなどについても説明します。そしてこの記事では最後に、サーブレット用クライアント・アプリケーションによってサンプル SCA アプリケーションにアクセスする方法について説明します。

Lokanadham Nalla, TXSeries Developer, IBM

Lokanadham Nalla は、インドのバンガロールにある India Software Labs の TXSeries 開発者です。彼は Java、J2EE、および SOA 技術が専門です。



2011年 12月 16日

概要

SCA (Service Component Architecture) は SOA ベースのアプリケーション開発のためのプログラミング・モデルです。SCAプログラミング・モデルを実装するための仕様は、IBM などの業界リーダーが SOA に関してオープンなコラボレーションを行う組織である osoa.org によって提供されています。SCA Feature Pack for WebSphere Application Server には osoa.org が提供する多くの仕様が実装されており、Java/JEE 開発者のための SCA プログラミング・モデルを提供しています。

RAD (Rational Application Developer) バージョン 8 には、SCA アプリケーションを開発するためのツール機能が用意されています。この記事では RAD を使用して SCA アプリケーションを開発する方法について、サンプル・アプリケーションを示しながら説明し、また RAD でサポートされているバインディングについても説明します。最初に SCA の基本的な定義と必要なソフトウェアについて説明し、次に単純な SCA アプリケーションの開発方法について説明した後、最後にサーブレット用クライアント・アプリケーションから SCA アプリケーションを使用する方法について説明します。

SCA についての基本的な定義

このセクションでは RAD 8 インフォメーション・センターから SCA の用語についての説明を抜粋したものを示します。

ドメイン:
境界の明確なランタイム・エンティティー。共にワイヤリングされたサービス・コンポーネントのセットを含んでおり、ビジネス上有意義なビジネス機能のレルムを提供します。

コントリビューション:
ファイル成果物のパッケージ。コントリビューション・メタデータ文書と、通常は 1 つ以上のコンポジットを含みます。これらは共に収集されて SCA ドメインにデプロイされます。

コンポーネント:
サービスを提供または利用する実装の構成。

コンポジット:
コンポーネントのアセンブリー単位。コンポジットはドメインにデプロイされる場合があり、デプロイ可能コンポジットと呼ばれます。あるいは、他のコンポーネントを実装するために使用され、実装コンポジットまたは内部コンポジットと呼ばれます。

サービス:
コンポーネントが提供するサービス、つまりビジネス操作のセットの宣言。サービスはインターフェースによって、また 1 つ以上のプロトコル・バインディングによって、特徴付けられます。

参照:
コンポーネントが利用する、または必要とする、サービス、つまりビジネス操作のセットの宣言。参照はインターフェースによって、また 1 つ以上のプロトコル・バインディングによって、特徴付けられます。

インターフェース:
論理的に密接に関連した操作シグニチャーのセット。提供するサービスまたは利用するサービス参照を記述します。SCA 拡張を通じて他の言語から利用可能であっても、インターフェースは主に Java または WSDL で記述されます。

バインディング:
サービスへの、または参照からの、アクセス・メカニズムの記述。サービス・バインディングには、サービスがランタイムに公開される方法、および外部エンティティーからサービスに通信可能な方法を記述します。参照バインディングには、参照から外部サービスに接続し、通信する方法を記述します。

ワイヤー:
コンポーネント参照からコンポーネント・サービスへの依存関係。

実装:
言語固有のソフトウェア・テクノロジーの単位。例えば、Java クラスや SCA コンポジットなどであり、これによってコンポーネント配下のビジネス・ロジックが提供されます。

プロパティー:
コンポーネントによって計算され、実装に注入されるデータ値。

インテント:
コンポーネント、サービス、または参照が必要とする、抽象ポリシーまたはサービス品質の宣言。インテントによって、開発者は複雑な具象ポリシーを頻繁に理解しなければならないという重圧から解放されます。

ポリシー:
いくつかの機能、制約、または他の非機能要件に関する具象アサーション。コンポーネント、サービス、または参照によって順守されることになります。

ポリシー・セット:
特定のバインディング・タイプまたは実装タイプに適用可能な、相互互換具象ポリシーのコレクション。ポリシー・セットは開発時にコンポーネント、サービス、および参照に接続可能ですが、SCA では実行時バインディング・アプローチを推奨しています。このアプローチでは、ポリシー・セットとバインディングがデプロイ時に選択されます。


インストール

このセクションでは Rational Application Developer 8.0 for WebSphere Application Server ソフトウェアのインストール方法について説明します。

  • IBM Rational Application Developer 8.0 のインフォメーション・センターには、Rational Application Developer for WebSphere Software のインストール方法がさらに詳しく説明されています。
  • IBM Installation Manager Software を使用して RAD をインストールする際、図 1 において線で囲っているように、表示されているフィーチャーのうち、必ず「Service Component Architecture development tools (Service Component Architecture 開発ツール)」フィーチャーにチェックを入れます。
図 1. 「Service Component Architecture development tools (Service Component Architecture 開発ツール)」にチェックを入れる
「Service Component Architecture development tools (Service Component Architecture 開発ツール)」にチェックを入れる
  • また、下記の図 2 において線で囲っているように、WebSphere Application Server セクション配下の「Feature Pack for Service Component Architecture」にも必ずチェックを入れます。
図 2. 「Feature Pack for Service Component Architecture」にチェックを入れる
「Feature Pack for Service Component Architecture」にチェックを入れる

Feature Pack for Service Component Architecture のインストール

このセクションでは、WebSphere Application Server が RAD の外部にインストールされている場合に Feature Pack for Service Component Architecture をインストールする際の注意事項を記載します。

Feature Pack for Service Component Architecture をインストールするには、WebSphere Application Server インフォメーション・センターの「分散オペレーティング・システムでのフィーチャー・パックのインストールとアンインストール」セクションに説明されている手順に従う必要があります。


RAD を使用して SCA アプリケーションを開発する

このセクションでは、サンプル SCA アプリケーションとして電卓アプリケーションを RAD ウィザードを使用して開発するために必要な手順について説明します。

  • SCA プロジェクトを作成する
  • SCA コンポジットを作成する
  • SCA コンポーネントを作成する
  • コンポーネントにサービスまたは参照を追加する
  • サービスまたは参照にバインディングを適用する
  • コンポーネントを実装する
  • コントリビューションを作成する

SCA プロジェクトを作成する

このセクションでは RAD ウィザードを使用して新しい SCA プロジェクトを作成する方法について説明します。RAD のワークスペースから「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順にメニュー・オプションを開きます。図 3 のように「SCA Project (SCA プロジェクト)」を選択します。

図 3. SCA プロジェクトを作成する
SCA プロジェクトを作成する

下記の図 4 のように、プロジェクトの名前を「CalculatorProject」と指定し、「Implementation Types for SCA Components (SCA コンポーネントの実装タイプ)」セクションで必ず「Java」チェックボックスにチェックを入れます。

図 4. SCA プロジェクトのオプション
SCA プロジェクトのオプション

「Next (次へ)」 > 「Finish (完了)」の順にボタンをクリックして CalculatorProject を作成します。

SCA コンポジットを作成する

図 5 のように、「Enterprise Explorer (エンタープライズ・エクスプローラー)」ウィンドウで「CalculatorProject」 > 「SCA Content (SCA コンテンツ)」の順に展開し、「Composites (コンポジット)」を右クリックし、「New (新規)」 > 「SCA Composite (SCA コンポジット)」の順に選択します。

図 5. SCA コンポジットを作成する
SCA コンポジットを作成する

図 6 のように、「Composite name (コンポジット名)」には「CalculatorComposite」、「Target namespace (ターゲット名前空間)」には「http://calculator」と指定し、「Finish (完了)」ボタンをクリックします。

図 6. SCA コンポジットのオプション
SCA コンポジットのオプション

SCA コンポーネントを作成する

図 7 のように、「CalculatorProject」 > 「SCA Content (SCA コンテンツ)」 > 「Composites (コンポジット)」> 「http://calculator」 > の順に展開し、「CalculatorComposite」を右クリックして、「New (新規)」 > 「SCA Component (SCA コンポーネント)」の順に選択します。

図 7. SCA コンポーネントを作成する
SCA コンポーネントを作成する

図 8 のように、「Component name (コンポーネント名)」に「MainComponent」と入力し、「Finish (完了)」ボタンをクリックします。

図 8. SCA コンポーネントのオプション
SCA コンポーネントのオプション

これにより、図 9 のようにコンポジット図に MainComponent のイメージが作成されます。

図 9. MainComponent
MainComponent

コンポーネントにサービスまたは参照を追加する

図 10 と図 11 に示すように MainComponent のイメージを右クリックし、サービスと参照を作成します。サービスには「CalculatorInterface」、参照には「addReference」という名前を付けます。

図 10. サービスを追加する
サービスを追加する
図 11. 参照を追加する
参照を追加する

SCA サービスを実装する方式には、トップダウンとボトムアップという 2 つの方式があります。既存の WSDL を使用して実装を開始する場合にはトップダウン方式を使用します。既存の Java コードから実装を開始する場合にはボトムアップ方式を使用します。このサンプル・アプリケーションではサービスのインターフェース・タイプを Java に設定するため、ボトムアップ方式を使用します。

  • CalculatorProject の src フォルダーの下に com.ibm.sca.sample パッケージを作成します。
  • リスト 1 のように新しい Java インターフェースを作成します。
リスト 1. サービスのインターフェース
package com.ibm.sca.sample;

import org.osoa.sca.annotations.Remotable;

@Remotable
public interface CalculatorInterface {
	int calculate(int firstValue, int secondValue, String operation);
}
  • このインターフェースに必ず Remotable というアノテーションを追加します。
  • 図 12 において線で囲っているように、サービスの「Interface (インターフェース)」プロパティーを com.ibm.sca.samples.CalculatorInterface に設定します。
図 12. サービスのインターフェースを設定する
サービスのインターフェースを設定する

注: トップダウン方式を使用する場合には、「Interface type (インターフェース・タイプ)」として「WSDL」を選択し、「Interface (インターフェース)」には WSDL の場所を指定します。

サービスまたは参照にバインディングを適用する

Feature Pack for Service Component Architecture は以下のバインディングをサポートしています。

  • Web サービス
  • Atom
  • HTTP
  • EJB
  • JMS
  • SCA

ユーザーは使用するクライアントのタイプに応じて、これらのバインディングを選択して適用することができます。クライアント・アプリケーションが Web サービス・クライアントの場合には、Web サービス・バインディングを適用します。クライアント・アプリケーションが EJB クライアントの場合には、EJB バインディングを適用します。

サンプル電卓アプリケーションの場合には、生成された WSDL ファイルを使用してサーブレット用クライアント・アプリケーションがサンプル電卓 SCA アプリケーションと通信できるように、Web サービス・バインディングを使用します。以下の手順で CalculatorInterface サービスに Web サービス・バインディングを適用します。

  • 「CalculatorInterface」サービスを右クリックし、メニュー・パネルから「Show Properties View (プロパティー・ビューを表示)」オプションを選択すると、図 13 の一番下のパネルに示すように「Properties (プロパティー)」ウィンドウが表示されます。
  • 「Properties (プロパティー)」ウィンドウの左側ペインから「Binding (バインディング)」オプションを選択します。
  • 「Binding (バインディング)」の「Add (追加)」ボタンをクリックすると、Feature Pack for Service Component Architecture でサポートしているバインディングの一覧が図 13 のように表示されます。
  • バインディングの一覧から「Webservice」を選択し、「OK」をクリックします。これで、Web サービス・クライアントの API を使用して、電卓 SCA アプリケーションを呼び出すことができます。
  • 電卓アプリケーションは WebSphere Application Server にデプロイされると WSDL ファイルを生成します。このファイルがある場所の URL は http://server-name:http-port/MainComponent/CalculatorInterface?wsdl です。
図 13. サービスのプロパティーとバインディング
サービスのプロパティーとバインディング

同じようにして参照にもバインディングを適用することができます。

コンポーネントを実装する

図 14 のように MainComponent を右クリックし、「Regenerate implementation (実装を再生成)」オプションを選択します。

図 14. 実装を生成する
実装を生成する
  • 次のウィンドウに表示される「Implementation Type (実装タイプ)」の一覧から「Java」を選択します。
  • 「Next (次へ)」ボタンをクリックし、実装クラスを確認します。図 15 において線で囲っているクラスが生成されることになります。
  • 「Finish (完了)」ボタンをクリックすると実装クラス com.ibm.sca.samples.CalculatorInterfaceImpl が生成されます。
図 15. 実装クラスを構成する
実装クラスを構成する

下記のリスト 2 は生成された実装クラスを示しています。

リスト 2. 実装クラス
package com.ibm.sca.sample;

import org.osoa.sca.annotations.Service;

@Service (CalculatorInterface.class)
public class CalculatorInterfaceImpl implements CalculatorInterface {

    public int calculate(int firstValue, int secondValue, String operation) {
        return 0;
    }

}

作成された参照は、コンポーネントの実装の中で定義する必要があります。つまり、ここでは MainComponent が参照を持つように設定しており、その参照は他のコンポーネントのサービスに依存しています。そこで、サービスを持つ新しいコンポーネント (AddComponent) を作成し、MainComponent の参照を AddComponent のサービスにマッピングする必要があります。図 16 にその様子を示します。

図 16. MainComponent の参照を AddComponent のサービスに接続する
MainComponent の参照を AddComponent のサービスに接続する
  • AddComponent とサービスを作成するための手順は MainComponent の場合と似ています。
  • MainComponent の実装には、リスト 3 のような参照の定義が含まれている必要があります。
リスト 3. 参照の定義
AddInterface addInterface;

    @Reference
    public  void setAddReference(AddInterface addInterface){
    	this.addInterface=addInterface;
    }
  • 図 17 の「Properties (プロパティー)」ウィンドウに示すように、MainComponent の参照と AddComponent のサービスは SCA バインディングにバインドされている必要があります。しかしデフォルトで必ずそうする必要があるというわけではなく、サービスまたは参照に対して何もバインディングが選択されない場合にはデフォルトで自動的に SCA バインディングが適用されます。
  • AddComponent の実装クラスはリスト 4 のような内容になるはずです。
リスト 4. AddComponent の実装
package com.ibm.sca.sample;
import org.osoa.sca.annotations.Service;

@Service (AddInterface.class)
public class AddInterfaceImpl implements AddInterface {
    public int add(int firstValue, int secordValue) {
        return firstValue+secordValue;
    }
}

これと同様にして、SubstractComponent、MultiplyComponent、DivisionComponent とそれぞれのサービスを作成し、MainComponent の別々の参照に接続することができます。これらのコンポーネントをすべて作成できると、電卓 SCA コンポジットの図は、図 17 のようになるはずです。

図 17. 電卓 SCA コンポジットの図
電卓 SCA コンポジットの図

コントリビューションを作成する

電卓コンポジットのコントリビューションは、図 18 のように RAD ウィザードを使用して作成することができます。

図 18. コントリビューションを作成する
コントリビューションを作成する

コントリビューションを作成できると、図 19 と図 20 に示すように、そのコントリビューションをローカルの WebSphere Application Server インスタンスに追加してデプロイすることができます。

図 19. プロジェクトを追加/削除する
プロジェクトを追加/削除する
図 20. 電卓プロジェクトを追加する
電卓プロジェクトを追加する

注: コントリビューションを SCA アーカイブ・ファイルとしてエクスポートし、RAD の外にある WebSphere Application Server にデプロイすることもできます。


電卓 SCA アプリケーションを使用するサーブレット用クライアント・アプリケーション

このセクションでは、電卓 SCA アプリケーションの MainComponenent サービスをサーブレット用クライアント・アプリケーションから使用する方法について説明します。

以下の手順に従って WSDL スタブ・クラスを作成します。

  1. 「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順に開き、「Web Service Client (Web サービス・クライアント)」プロジェクトを選択します。
  2. 「Service definition (サービス定義)」で http://<サーバー名>:<http ポート番号>/MainComponent/CalculatorInterface?wsdl を指定します。
  3. 図 21 において線で囲っているように、「Develop client (クライアントを開発)」を指定し、「Next (次へ)」ボタンをクリックします。
図 21. Web サービス・クライアント
Web サービス・クライアント
  1. 図 22 のように「com.ibm.sca.stubs」パッケージを指定し、「Finish (完了)」をクリックします。
図 22. スタブ・クラス・パッケージを指定する
スタブ・クラス・パッケージを指定する

このサーブレットは下記のリスト 5 に示されているコードを使用することができます。

リスト 5. Web サービスのスタブの API
import com.ibm.sca.stubs.CalculatorInterface;
import com.ibm.sca.stubs.CalculatorInterfaceService;
...
CalculatorInterfaceService service = new CalculatorInterfaceService();
CalculatorInterface ci = (CalculatorInterface) service.getCalculatorInterfacePort();
		
int result = ci.calculate(firstValue, secondValue, operation);

サンプル・アプリケーションを使用する

このセクションでは、サンプル電卓 SCA アプリケーションと SCA サーブレット用クライアント・アプリケーションをデプロイするための手順、そしてこれらのアプリケーションを使用する方法について説明します。

  • 「ダウンロード」セクションにある download.zip ファイルをダウンロードして解凍します。
  • 以下のコマンドを実行してサンプル電卓 SCA アプリケーションを BLA としてデプロイし、サーブレット用クライアント・アプリケーションもデプロイします。
    • Unix プラットフォームの場合
      wsadmin.sh -f deploy.py
    • Windows プラットフォームの場合
      wsadmin.bat -f deploy.py
  • サンプル電卓 SCA アプリケーションをアンデプロイするには、以下のコマンドを実行します。
    • Unix プラットフォームの場合
      wsadmin.sh -f undeploy.py
    • Windows プラットフォームの場合
      wsadmin.bat -f undeploy.py
  • サンプル・アプリケーションを実行するためには、http://server-name:http-port/SCAClient という URL を開きます。

ダウンロード

内容ファイル名サイズ
Sample downloads for this articleDoNotLeaveThisLink.zip10KB

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=SOA and web services, Rational
ArticleID=780443
ArticleTitle=Rational Application Developer を使用して SCA アプリケーションを開発する
publish-date=12162011