Oracle SALTを使用したOracle Tuxedo SCAコンポーネントの開発

<このテキストを削除しないでください。これは、ブラウザ実行時に生成される"主要"なトピック一覧のプレースホルダです。>

目的

このチュートリアルでは、Oracle Service Architecture Leveraging Tuxedo(Oracle SALT)製品を使用してOracle Tuxedo SCAコンポーネントをコールするために必要なすべてのコンポーネントを構成する方法を学習します。

このコースを完了すると、以下のことができるようになります。

所要時間

2時間(製品のダウンロードおよびインストールにかかる時間を含む)

概要

Oracle SALTを使用すると、開発者や管理者はTuxedoサービスをWebサービスおよびSCAコンポーネントとして公開できます。

このOBEでは、Oracle SALT SOAPサーバー・ゲートウェイを使用したTuxedo SCAコンポーネントのコールを例にとって、アプリケーションの構成について説明します。 uBikeアプリケーションのバックエンドはTuxedoに記述されています。 このアプリケーションのTuxedo側で提供されるバックエンド・サービスについては、uBike Tuxedoの概要ページを参照してください。 この例では、uBikeアプリケーションのSEARCHINVENTORYサービスのみを使用します。

シナリオ

このチュートリアルでは、まずuBike C++サービスをWebサービスとして公開するよう、Oracle SALT環境を構成します。このWebサービスはあらゆるSCA対応コードからコールできます。次に、soapUIを使用して、サービス・コールの入力と して色を指定すると、その色に一致する利用可能な自転車の在庫が返されるWebサービスが動作していることをテストします。

このハンズオン・エクササイズは次のセクションで構成されます。

ここでは、ある企業がC++で実装されたuBikeという既存のアプリケーションを所有していると想定します。 この企業は、コストのかかる大規模な変更を行わずに、SOAの全体的戦略の範囲内でこのIT資産を活用する方法を調査しています。 その結果、Oracle SALTを使用して、既存のuBike C++サービスをSCAコンテナ内でWebサービスとして公開することを決定しました。このWebサービスはSCA対応アプリケーションから簡単に利用で きます。 この戦略によって、既存のテクノロジーが統合され、アプリケーション・サーバー層でほとんど変更を行うことなく自由にC++サービスを利用できるようにな ります。

ソリューションの高水準なアーキテクチャを下図に示します。

 

ソフトウェア要件

ソフトウェア要件は、以下のとおりです。

前提条件

このチュートリアルを始める前に、以下について、この順番のとおりに実行しておく必要があります。

. GNU 4.1.2コンパイラのインストール
. Oracle Tuxedo 11g Release 1のインストール(手順): インストール先は/home/vmuser/tuxedo/tuxedo11g
. Oracle SALT 11g Release 1のインストール(手順): インストール先は/home/vmuser/tuxedo/tuxedo11g
. soapUIのインストール

Oracle SALTを使用したTuxedo SCAコンポーネントの開発と実行


実習環境をセットアップするには、以下の手順を実行します。 このチュートリアル用の環境では、vmuserというユーザーを作成し、このユーザーのホーム・ディレクトリを使用して製品と実習用ファイルをインストー ルしています。 同じようにvmuserというユーザーを作成してこのエクササイズと同じパスを使用することも、独自の設定を行うこともできます。後者の場合は、お使いの システムでパスと環境設定を変更してください。 このチュートリアルでは、説明のとおりに進めることを想定しているため、独自の設定により変更の必要がある個所については明示しません。

実習用ファイルのセットアップ


. インストール・ファイルの抽出

  • uBikeSCA.zipファイルを/home/vmuser/handson/uBikeSCAに解凍します。実習用ファイルのフォルダ構造が作成されます。

uBikeSCAフォルダには、このエクササイズの実行に必要なすべてのファイルが含まれます。

以下の表で、各ファイルの目的について説明します。

ファイル
目的
uBikeSCA
メイン・ディレクトリ($APPDIR): /home/vmuser/handson/uBikeSCA
Tuxedo関連ファイルがすべて含まれています。
ubb
このファイルには、SCAコンポーネントとOracle SALTサーバーを実行するためのTuxedo構成が含まれています。
uBike.composite
uBike SCAコンポーネントのルートSCAコンポジット構成ファイルです。
setenv.sh
このエクササイズの開発環境と実行環境を設定するためのファイルです。
$APPDIR/uBike.server
自転車ストア・アプリケーション・コンポーネントを含むフォルダです。 開発するSCAコンポジットおよびコンポーネントをここに保存します。
uBike.server.composite
このコンポジットのサービス・コンポーネント定義言語(SCDL)ソースです。
uBikeServiceImpl.cpp
SCAベースのWebサービスとして公開するSEARCHINVENTORYサービスを提供するための、実際のTuxedo C++コードが含まれるファイルです。

 

. setenv.shの編集と実行
  • setenv.shファイルを編集し、変数設定が正しいことを確認します。 この例と同じディレクトリ構造ですべてインストールした場合は、デフォルトで正しい設定となっています。
  • 新しいターミナルを開きます。 「K menu」ボタンをクリックし、「System」→「Terminal」メニュー項目を選択します。
  • 実習用ディレクトリへ移動します。

    cd handson/uBikeSCA

  • setenv.shスクリプトを使用して環境をセットアップします。

       . ./setenv.sh

これで、この実習ガイドの手順を実行する準備ができました。

自転車在庫コンポーネントのインタフェースの設計

以下の手順では、コンポーネントのC++インタフェースを記述する方法について説明します。

. テキスト・エディタを開く

  • K Menu」→「Utilities」→「Editors」→「Kate」を選択して、Kateエディタを開きます。

 

.

C++インタフェースのコード入力

  • File」→「New」を選択して、新しいテキスト・ファイルを作成します。
  • このコードをコピーして、ファイルに貼付けます。

コードは以下のように表示されます。

 

.

ファイルを正しい場所に保存

  • File」→「Save as…」メニュー・オプションを選択します。
  • /home/vmuser/handson/uBikeSCA/uBike.serverへ移動します。
  • ファイルをuBikeService.hとして保存します。 大/小文字が区別されることに注意してください。

このソース・エディタを開いたままにして、この実習の次のタスクで使用できます。

 

自転車在庫コンポーネントの開発

以下の手順で、Oracle SALT SCAコンテナの実際のビジネス・コードを開発するために必要なことを確認します。

. uBike実装コードの確認と修正

  • コンポーネントのソース・コードは、SCDLの内容に基づく規則に従ったソース・ファイルに実装する必要があります。

$APPDIR/uBike.server/uBike.server.compositeにある以下のSCDLコードから判断すると、実装ソース・コードはuBikeServiceImpl.cppというファイルに記述されています。

便宜上、このファイルと関連コードはすでに/home/vmuser/handson/uBikeSCA/uBike.serverディレクトリに用意されています。

  • uBikeServiceImpl.cppソース・ファイルをKateで開きます。

  • このコードを確認します。 このコンポーネントは、ブート時にメモリ内の自転車のリストをセットアップします。これが架空の在庫を表します。 このコンポーネントのsearchBike()メソッドを見つけます。このメソッドは、検索条件(この場合は自転車の色)に従ってこの在庫を検索するよう設計されています。
  • このコード内にはあるエラーが含まれているため、結果が返されません。 エラーを特定し、修正してください。 コードとソリューションを比較して、いつでもこのエラー発生個所を確認できます。

.

コンポーネントのビルド

  • コードが完成したら、以下のようにbuildscacomponentコマンドを使用してコンポーネントをビルドします。

    buildscacomponent -c uBike.server

この結果、libuBike.soという共有ライブラリ・ファイルが生成されます。 buildscacomponentコマンドはSCDLコードを検索し、見つかったすべてのC++コンポーネントをビルドします。 個々のコンポーネントをコマンドライン・オプションに指定してビルドすることもできます。

 

自転車在庫コンポーネントをWebサービスとして公開、およびSCAコンポーネントのテスト

以 下の手順では、C++インタフェースからWSDLインタフェースを作成し、コンポーネントをWebサービスとして公開する方法を確認します。 ここで示す詳細手順は簡単にスクリプトに統合して自動化できますが、ここでは便宜上、カスタマイズが必要な場合に個別に実行する方法を説明しています。

. メタデータ・リポジトリ・インタフェースの生成

  • 以下のコマンドを入力して、C++インタフェースからTuxedoメタデータ・インタフェース・ファイル(.mif)を生成します。

    cd uBike.server

    scatuxgen -D FML32/BikeInventory -c uBike.server.composite
              
-s uBikeService -w -a "http://localhost:112345" -n "http://uBike.com"

  • –wオプションを指定することで、次の手順で必要となるOracle SALT wsdf定義が生成されます。
  • その後、以下のコマンドを使用して.mifファイルをTuxedoメタデータ・リポジトリにロードする必要があります。

    tmloadrepos -i uBike.server/uBikeService.mif meta.repos

 

.

WSDLの生成

以下のコマンドを実行して、先ほど開発したサービスのWSDLインタフェースを生成します。 ディレクトリを$APPDIRに変更し、以下のようにtmloadcfコマンドを実行して、tuxconfigファイルが作成されることを確認します。さらに、その後の手順を実行します。

tmloadcf -y ubb

tmboot -A -s TMMETADATA

tmwsdlgen -c uBike.server/uBikeService.wsdf -y -o uBike.server/uBikeService.wsdl

tmshutdown -y

生成されたWSDLファイルをよく確認します。

 

.

サーバーのビルド

buildscaserverコマンドは、SCDLを読み取ってC++インタフェースを解析し、Tuxedo環境でSCAコンポーネントをホストする適切なブートストラップ・サーバーを生成します。 コマンドは以下のように実行する必要があります。

buildscaserver -w -c uBike.server -o uBikeSCASvr

この実行によって、$APPDIRに以下の複数のファイルが生成されます。

  • uBikeService_1.xsd
  • uBikeService.fml32
  • uBikeService.mif(このファイルは再作成されますが、scatuxgenで生成されたファイルと同じものです)
  • uBikeService.wsdf

これらのファイルは、Oracle SALT GWWSのSOAPゲートウェイの操作に必要です。

 

.

ビルド後のセットアップ

重要:
前の手順で生成されたuBikeService.fml32ファイルを編集し、そのベース番号を正の数値に変更する必要があります。 これは、エンタープライズ・アプリケーション全体でフィールドの数値が衝突しないよう、ユーザーに二重チェックを促すための操作です。

uBikeService.fml32ファイルを編集して、"-10000"を"10000"に変更します。

  • 次に、生成されたサービス定義をTuxedoサービス・メタデータ・リポジトリに再ロードする必要があります。 この手順は、上記で生成された正しいフィールド定義を反映させるために必要になります。
  • 最後に、Oracle SALTのデプロイ構成を生成する必要があります。

これを行うには、以下のコマンドを実行します。

tmloadrepos -i uBike.server/uBikeService.mif meta.repos

wsloadcf -y GWWS.dep

 

soapUIを使用したSCAコンポーネントのテスト


.

アプリケーションのブート

以下のコマンドを実行して、Tuxedoアプリケーションをブートします。

tmboot -y

 

. GWWSサーバーのWSDLおよびXSD構成のテスト

  • Webブラウザのアドレス・バーに以下のアドレスを入力して、Oracle SALT GWWSサーバーがコンポーネントのWSDLを返すかどうかを確認します。

    http://localhost:12345/wsdl

出力結果は以下のようになります。

  • Webブラウザのアドレス・バーに以下のアドレスを入力して、Oracle SALT GWWSサーバーが関連サービス・スキーマを返すかどうかを確認します。

    http://localhost:12345/xsd/uBikeService_1.xsd

出力結果は以下のようになります。

有効なWSDLと関連スキーマを取得したので、soapUIを使用してサービスをテストできます。

 

. soapUIの実行

soapUIを起動して、SCAサービスをテストします。

 

. soapUIプロジェクトの作成

左側のペインの「default」ワークスペース・ノードを右クリックして、「New soapUI Project」を選択します。

Project NameにuBikeService、Initial WSDLプロパティに/home/vmuser/handson/uBikeSCA/uBike.server/uBikeService.wsdlと入力して、「OK」ボタンをクリックします。


. searchBikeサービスのテスト

uBikeServiceプロジェクトの「uBikeServiceSOAP」ノードを開き、「Request1」ノードをダブルクリックして、SOAPリクエスト/レスポンス・ペイロード・ウィンドウを開きます。

ペイロードの内容を編集し、COLOR要素をORANGEに設定して、リクエストをsearchBikeサービスに送信します。 色は大文字で入力する必要があります。 また、BLACK、WHITE、GREEN、RED、BLUE、YELLOW、SILVERなどの別の色を使用してテストすることもできます。

ペイロードは以下のイメージのようになります。

」アイコンをクリックして、リクエストをsearchBikeサービスに送信します。 レスポンス・ウィンドウに、以下のイメージのような自転車のリストが返されることを確認できます。 エラーが表示された場合は、uBikeServiceImpl.cppファイル内の問題を調査し、これまでのすべての手順が正しく実行されていることを確認してください。

これで、searchBikeサービスが正常に動作することを検証できました。

注: 必要に応じて、Tuxedo管理クライアント(tmadmin)を開いて、Tuxedoサービスが実際にコールされている様子を監視できます。 Tuxedoサービスの監視に使用するtmadminコマンドはprintservice(略称psc)と呼ばれます。

 

まとめ

これで、 このOBEチュートリアルは完了です。

Oracle SALTはTuxedoサービスをWebサービスおよびSCAコンポーネントとして公開し、Tuxedoアプリケーションとの双方向ゲートウェイとして機 能します。 これによって、SCA対応アプリケーションが、エンタープライズSOAアプリケーションの一部であるTuxedo SCAコンポーネントをコールできます。 これで、これらのテクノロジーを同時に利用する独自のソリューションを実装できるようになりました。

このチュートリアルで学習した内容は、次のとおりです。

今後もOTNで、この例を基にしたその他のOBEチュートリアルを確認してください。他のTuxedo製品統合の例について説明しています。

参考資料