12.4. Web サービスのモデリング


12.4.1. Web サービスの作成

このメソッドは、リレーショナルソースのクエリーを目的とする迅速で一貫した Web サービスのデプロイメントを行う経験者に奨励されるメソッドです。XML ビューからのすべての Web サービスインターフェース、演算、および必要なトランスフォーメーションを詳細に制御できます。
リレーショナルモデルまたはオブジェクトから Web サービスモデルを作成するには、以下を実行します。
  1. Mode Explorer のビューツリーでリレーショナルモデル、テーブル、プロシージャーの組み合わせを選択します。

    注記

    手順 3 で入出力スキーマおよび Web サービスモデルの自動命名が有効になるため、単一のソースモデルを選択することが推奨されます。
  2. 右クリックして Modeling > Create Web Service アクションを選択します。

    図12.24 Web サービスの作成

  3. Create Web Service ダイアログで、生成された入力スキーマファイル、出力スキーマファイル、および Web サービスモデルのファイル名を指定します。必要な場合はオプションを変更します。 最後に Finish をクリックします。

    図12.25 Create Web Service ダイアログ

  4. モデルの生成が終了したら、確認ダイアログが表示されます。OK をクリックします。

    図12.26 Generation Completed ダイアログ

12.4.2. Web サービス war の生成

12.4.2.1. Web サービス war の生成

Teiid Designer では、SOAP または REST インターフェースより VDB を公開できます。 JBossWS-CXF または RESTEasy war は、VDB 内のモデルを基に生成できます。

12.4.2.2. JBossWS-CXF war の生成

Teiid Designer は、JBossWS-CXF war の形式で Web サービス生成機能を提供します。「新しい Web サービスビューモデル」での説明どおり Web サービスモデルを VDB に追加し、VDB を稼働中の JBoss Data Virtualization インスタンスにデプロイし、VDB のデータソースを作成したら、生成された war を使用して Web サービスを公開する準備が整います。
VDB を使用して新しい JBossWS-CXF war を生成するには、以下を行います。
  1. Web サービスモデルが含まれる VDB を右クリックし、 Modeling > Generate JBossWS-CXF War と選択します。
  2. 以下のように、Web Service War Generation Wizard で不足しているプロパティーを入力します。

    図12.28 Generate a JBossWS-CXF War Web Service ダイアログ

    Expand
    表12.7 フィールドの説明
    フィールド名説明
    名前生成された war ファイルの名前。
    ホストサーバーのホスト名 (または IP)。
    ポートサーバーポート。
    VDB JNDI Nameデプロイされた Teiid ソース VDB への JNDI 接続名。
    Security options
    • None - 生成された Web サービスを介した VDB への接続にユーザー名やパスワードは必要ありません。
    • HTTP Basic - 指定されたセキュリティーレルムおよびロールが使用されます。デフォルトのレルム値は、設定変更のない JBoss Data Virtualization (teiid-security) のレルムです。ロールは適切なセキュリティーメカニズムで定義する必要があります。Teiid の場合、teiid-security-roles.properties ファイルを使用します。HTTPBasic を使用する場合、PassthroughAuthentication プロパティーを使用するローカルの Teiid 接続が必要になります。
    • WS-Security - war generator ダイアログに指定したユーザー名とパスワードの値が渡されるか検証するパスワードコールバッククラスが生成されます。これは、WS-Seurity が有効になっている Web サービスのテストメカニズムと独自のセキュリティーメカニズムがこのクラスに実装される必要があることを意味します。すべてのソースコードがコンパイルされたクラスファイルとともに生成された war に含まれます。
    Target namespace生成された WSDL および後続の生成された Web サービスクラスで使用される目的の名前空間。
    MTOM (Message Transmission Optimization Mechanism)生成されると、MTOM は Web サービスエンドポイントに対して有効になります。また、xmlns:xmime="http://www.w3.org/2005/05/xmlmim" スキーマと type="xs:base64Binary"xmime:expectedContentTypes="application/octet-stream" を最適化する出力要素に追加し、出力スキーマを更新する必要があります。
    War File Save Location生成された WAR ファイルが保存されるフォルダー。
  3. OK をクリックし、Web サービス war を生成します。war の生成が完了したら、確認ダイアログが表示されます。OK をクリックします。

    図12.29 Generation Completed ダイアログ

  4. OK をクリックします。

12.4.2.3. RESTEasy war の生成

Teiid Designer では、生成された RESTEasy war を使用して REST 上で VDB を公開することも可能です。目的の仮想モデルに SQL の更新、挿入、および削除が定義されている場合、REST より簡単に CRUD 機能を提供できます。生成された REST 演算へ許可される入力は、URI パスパラメーター、クエリーパラメーター、XML/JSON です。JSON は、「json」が含まれる URI 上で公開されます。たとえば、http://{host}:{port}/{war_context}/{model_name}/resource は URI パスパラメーターや XML を許可し、http://{host}:{port}/{war_context}/{model_name}/json/resource は URI パスパラメーターや JSON を許可します。また、REST:URI = authors&parm1&parm2 のように & を区切り文字として使用して目的の REST プロシージャーの URI プロパティーにあるクエリーパラメーターを指定できます。
  1. 仮想モデルで、XMLLiteral オブジェクトを返すプロシージャーを追加します。VDB のすべてのモデルをプロシージャーのターゲットとすることができます。仮想テーブル (VirtualBooks) から選択し、結果を XMLLiteral として返すプロシージャーの例を以下に示します。
    選択のリレーショナルテーブルの結果を VirtualBooks から XMLLiteral に変換する構文に注目してください。
    行を追加し、XMLLiteral オブジェクトを返す更新プロシージャーの例は次のとおりです。
    REST プロシージャーの入力形式は、URI パラメーター、XML/JSON ドキュメント、または両方の組み合わせの一部になります。XML ドキュメントを使用する場合は、ルートノードが <input> である必要があり、XML ノードがプロシージャーの入力パラメーターの順番に対応する必要があります。たとえば、上記の挿入プロシージャーの入力は次のとおりです。

    図12.32 XML 入力の例

    JSON ドキュメントを使用する場合は、値がプロシージャー入力パラメーターの順番と一致するようにしてください。上記の挿入プロシージャーの入力は次のとおりです。

    図12.33 JSON 入力の例

  2. ここでプロシージャーを REST 対応であると特定する必要があります。これには、Modeling > Enable REST for Procedures とコンテキストメニューオプションを選択し、プロシージャーのプロパティーを追加します。
    これにより、モデルで定義されたすべてのプロシージャーに対し、プロパティータブで 2 つの新しいプロパティーが有効になります。必要な 2 つのプロパティーは次のとおりです。
    Expand
    表12.8 RESTful プロシージャーの必要な拡張プロパティー
    プロパティー名説明
    REST メソッドこのプロシージャーの REST マッピングを決定する HTTP メソッド。サポートされるメソッドは GET、PUT、POST、および DELETE です。
    URIプロシージャーへのリソースパス。たとえば、books/{isbn} をプロシージャーの URI 値として使用する場合、このプロシージャーは http://{host}:{port}/{war_context}/{model_name}/books/123 によって実行され、123 がパラメーターとして渡されます。
    上記の例は Property タブでは次のように表示されます。
    生成された URI にはパスの一部としてモデル名が含まれるため、完全な URL は「http://{host}:{port}/{war_context}/{model_name}/books/123」のようになります。REST サービスがすべて本 (book) を返すようにするには、上記のとおりにプロシージャーを記述して入力パラメーターのみ削除します。URI プロパティーは「books」のみになり (または指定するもの)、URL は「http://{host}:{port}/{war_context}/{model_name}/books」になります。
    必要な拡張プロパティーとともにすべてのプロシージャーを追加したら、モデルを VDB に追加します。モデルがすでに VDB に含まれている場合は同期します。その後、VDB を再デプロイする必要があります。

    重要

    開発中に VDB を再デプロイした場合、プールに対して陳腐化した接続が取得され、「Invalid Session Exception」(無効なセッション例外) が発生することがあります。これを修正するにはデータソースをフラッシュしますが、テストクエリーを VDB 接続の -ds.xml ファイルに追加して修正することもできます。これにより、VDB を再デプロイした後に確実に有効な接続を取得することができます。テストクエリーの構文は <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql> になります。
  3. VDB のデータソースを作成していない場合は作成する必要があります。これは、Teiid Designer の Server view で行うことができます。デプロイした VDB を右クリックし、Create Data Source を選択します。VDB に接続するため、Generate REST WAR ダイアログで作成したソースの JNDI 名が要求されます。
  4. REST 対応のプロシージャーを持つ仮想モデルが含まれる VDB を右クリックし、Modeling > Generate RESTEasy War と選択します。REST 対応のプロシージャーがない場合、「Generate RESTEasy War」オプションは有効になりません。
  5. 以下のように REST War Generation Wizard で不足しているプロパティーを入力します。

    図12.37 Generate a REST WAR War File ダイアログ

    Expand
    表12.9 フィールドの説明
    フィールド名説明
    名前生成された war ファイルの名前。
    Connection JNDI Nameデプロイされた Teiid ソース VDB への JNDI 接続名。
    War File Save Location生成された WAR ファイルが保存されるフォルダー。
    Include RESTEasy Jars in lib Folder of WAR選択すると、RESTEasy jar とそれらが依存する jar が生成された WAR の lib フォルダーに含まれるようになります。選択しないと、jar は含まれません。RESTEasy がサーバーインストールのクラスパスにインストールされている環境では、これを未選択にして競合を防ぐ必要があります。
  6. OK をクリックして REST war を生成します。war の生成が完了したら確認ダイアログが表示されます。OKをクリックします。

    図12.38 Generation Completed ダイアログ

12.4.2.4. 生成された WAR ファイルのデプロイ

war ファイルを生成したら、JBoss AS インスタンスにデプロイする必要があります。デプロイを行う方法は複数あります。

JBDS または JBoss Tools から

  1. 目的の JBoss AS が設定され、実行されていることを確認します。
  2. Model Explorer ビューで WAR ファイルを選択します。その場所に war を生成しなかった場合は、コピーして貼り付けできます。
  3. WAR ファイルを右クリックし、Mark as Deployable 選択します。これにより、定義した JBoss AS インスタンスに WAR ファイルが自動的にデプロイされます。

JBoss AS 管理コンソールを使用

  1. JBoss AS に同梱される管理コンソールを使用して、WAR ファイルをデプロイできます。管理コンソールは、http://{host:port}/admin-console にあります。ログインしたら、Web Application (WAR) リソースフォルダーの Add a New Resource ボタンを使用します。

JBoss AS への手動デプロイメント

  1. 手動でファイルを JBoss AS の deploy フォルダーにコピーして、生成された WAR をデプロイすることも可能です。サーバーが稼働中の場合は、ホットデプロイで WAR は自動的にデプロイされます。それ以外の場合は、サーバーが次回起動したときに WAR がデプロイされます。

12.4.2.5. 生成された WAR ファイルのテスト

war ファイルをデプロイしたら、テストすることができます。テストする方法は複数あります。

SOAP WAR テスト

WSDL URL の判断
http://{server:port}/jbossws/services で WSDL URL を確認できます。ここには、目的の JBoss AS サーバーのデプロイされた web サービスがすべてリストされます。サービスを見つけ、Endpoint Address リンクをクリックします。これにより、web サービスの WSDL が取得され、WSDL URL アドレスがブラウザーのアドレスバーに表示されます。
WSDL URL を取得すると、JBDS や JBoss Tools に同梱される Web Service Tester や soapUI などの外部ツールを含むすべての SOAP テストツールを使用できます。
JBoss AS 管理コンソールを使用
JBoss AS に同梱される管理コンソールを使用して、WAR ファイルをデプロイできます。管理コンソールは、http://{host:port}/admin-console にあります。ログインしたら、Web Application (WAR) リソースフォルダーの Add a New Resource ボタンを使用します。

REST WAR テスト

URI
REST プロシージャーをモデル化したとき、対応する演算 (GET、PUT、POST、または DELETE) とともに定義された各 HTTP 演算に対して URI を割り当てました。各 URI のフルパスは、XML 入力/出力の場合は /{war_context}/{model_name}/{resource} として定義され、JSON 入力/出力の場合は /{war_context}/{model_name}/json/{resource} として定義されます。
WSDL URL を使用すると、JBDS や JBoss Tools に同梱される Web Service Tester、および soapUI や cURL などの外部ツールなど、REST サポートが含まれるすべてのテストツールを使用できます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat