86
IBM Integration Bus V10 2015.7.3 アップデート・セミナー 第3章 新機能の紹介

IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

IBM Integration Bus V10

2015.7.3

アップデート・セミナー

第3章 新機能の紹介

Page 2: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

内容

共有ライブラリ

MQ連携機能の拡張

MQTTサポート

REST APIアプリケーション開発 (Swaggerサポート)

グラフィカル・データ・マッピングの拡張

フロー・エクササイザー

その他の新機能 JavaScript

HTTP/SOAPセキュリティ拡張

CORSサポート

Tutorial、GitHub連携

2

Page 3: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

3

共有ライブラリ

Page 4: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

共有ライブラリ

V10から共有ライブラリ機能を提供 ライブラリ作成時に共有ライブラリと静的ライブラリを選択可能 V8、V9のライブラリは静的ライブラリ

共有ライブラリ(Shared Library) 実行環境では1つのイメージのみが存在

参照するアプリケーションは1つの共通のイメージを参照

実行環境にライブラリ単体でのデプロイが可能

ライブラリ変更時はデプロイ後、直ちに参照する全てのアプリケーションに反映される アプリケーションの再デプロイは不要

静的ライブラリ(Static Library) 実行環境ではアプリケーションごとにライブラリ・イメージのコピーを持つ開発環境ではライブラリの実体は1つ

ライブラリ変更時は、参照する各アプリケーションで再コンパイル、再デプロイが必要となる

アプリケーションごとに異なるバージョンのライブラリを使用したい、ライブラリの変更のタイミングをアプリケーションごとに制御したいなどの要件がある場合に選択

4

Page 5: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

共有ライブラリと静的ライブラリ

共有ライブラリと静的ライブラリの違い

5

ライブラリの実体はそれぞれ1つ共有ライブラリは、統合サーバー直下にデプロイされる

共有ライブラリ

静的ライブラリ

ツールキット 実行環境

静的ライブラリは、それぞれのアプリケーション下にコピーが組み込まれる

Page 6: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

共有ライブラリと静的ライブラリ

mqsilist コマンドでデプロイされている共有ライブラリの情報を確認可能

6

mqsilist <integration_node_name> -e <integration_server_name> -y <sharedLibraryName>

【mqsilistコマンド】

>mqsilist MB10BK -e EG01BIP1275I: 統合サーバー 'EG01' でアプリケーション 'Basic_test_Apl02' が実行中です。BIP1275I: 統合サーバー 'EG01' でアプリケーション 'Basic_test_Apl' が実行中です。

BIP1273I: 統合サーバー 'EG01' に共有ライブラリー 'SharedLib01' がデプロイされました。BIP8071I: コマンドが完了しました。

>mqsilist MB10BK -e EG01 -y SharedLib01BIP1272I: 統合サーバー 'EG01' にファイル 'SharedLib01.Sh_ErrHandling.subflow' がデプロイされました。 (共有ライブラリー 'SharedLib01')BIP1249I: 共有ライブラリー 'SharedLib01' はアプリケーション 'Basic_test_Apl' によって参照されています。BIP1249I: 共有ライブラリー 'SharedLib01' はアプリケーション 'Basic_test_Apl02'によって参照されています。

【mqsilistコマンド実行例】

統合サーバーにデプロイされた共有ライブラリがリストされる

統合サーバーにデプロイされた共有ライブラリのリソース情報、共有ライブラリを参照するアプリケーション情報がリストされる

Page 7: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

注意点

共有ライブラリ利用時の注意点 実装時の制限 共有ライブラリ <-> 静的ライブラリ間の参照は不可

Integration プロジェクトは共有ライブラリを参照不可

共有ライブラリに定義するサブ・フローやESQLはスキーマ配下に定義が必須(後述)

共有ライブラリに含まれるJavaクラスは、IIBのクラス・ローダーとは独立したクラス・ローダーを利用(後述)

デプロイの注意 共有ライブラリを事前にデプロイしておかないと参照するアプリケーションのデプロイは失敗 BARファイルに一緒に含めてデプロイすることも可能

共有ライブラリは直接統合サーバーにデプロイされる静的ライブラリは参照する各アプリケーションに含まれる

参照アプリケーションがデプロイされた状態で共有ライブラリを除去することは不可

共有ライブラリに含められないリソース

7

・メッセージ・フロー・CORBARequest ノードとIDL ファイル・DecisionService ノードとdecision サービス・PHPCompute ノードとPHP ファイル・SCAノード・WebSphere Adapters ノード

・XSLTransform ノード・MRM メッセージ・セット・XMLファイル・XSLファイル

Page 8: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

注意点(サブフロー、ESQL)

サブフロー、ESQLファイルを共有ライブラリに含める場合の注意点 共有ライブラリ に定義するサブフローやESQLファイルはスキーマ配下に定義する必要がある アプリケーションや静的ライブラリ に定義するときは、デフォルトでは空のスキーマに定義

同名のスキーマは参照関係にあるアプリケーションや共有ライブラリ にまたがって定義してはならない

8

デフォルトでは共有ライブラリ 名のスキーマ配下に定義(スキーマ名を任意に指定することも可)

このように同名のスキーマ(test)をアプリケーションや共有ライブラリにまたがって定義するとエラー参照関係でなければ、同名スキーマを定義することも可能であるが、基本的には共有ライブラリ にはユニークなスキーマを定義すること

Page 9: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

注意点(Javaクラス)

Java クラスを共有ライブラリに含める場合の注意点 共有ライブラリ 内にJavaクラスを定義できる

ただし、アプリケーション内のJavaクラスから参照している共有ライブラリ のJavaクラスを利用することはできない

共有ライブラリ 内のJavaクラスから、参照している別の共有ライブラリ のJavaクラスを利用することは可能 この場合、参照先のJavaクラスは参照元共有ライブラリ のクラスローダー内に入る

9

ShLib1

JavaComputeClassA

ShLib2

JavaClassB

App1

JavaComputeClass1

ShLib1

JavaClassA

共有ライブラリがデプロイされると新たにクラスローダーが作成される統合サーバーのクラスローダーとは分離されていて、Javaからアクセスできない

App1

アプリケーションのクラスローダー ShLib1用クラスローダー

複数の共有ライブラリ から利用されるJavaクラスは、それぞれのクラスローダーに存在することになる※ShLib2を再デプロイすると、利用しているすべてのクラスローダーが再作成される点に注意

ShLib1用クラスローダー

ShLibX

JavaComputeClassX

ShLib2

JavaClassB

ShLibX用クラスローダー

Page 10: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

10

MQ連携機能の拡張

Page 11: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQ連携機能の拡張

MQノードからローカル/リモートの任意のキューマネージャーに接続可能 V9 まではローカルの統合ノード・キューマネージャーにのみ接続可能

MQInput、MQOutput、MQGet、MQReplyが対象

1つのフロー内で異なるキューマネージャーに接続するMQノードの混在も可能

複数の統合ノード上のフローから同じキューマネージャーに接続することも可能

z/OS版はローカル接続のみサポート 統合ノードに対しキューマネージャーの関連付けは必須だが、他のローカル・キューマネージャーへの接続も可

グローバル・トランザクションは統合ノードに関連付けたローカルのキューマネージャーのみ可能

11

MQノード・フローキューマネージャー

キューマネージャー

ローカル

リモート

MQノード・フローキューマネージャー

ローカル

Page 12: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

キューマネージャーへの接続情報設定

新規のMQ Connectionタブで接続するキューマネージャーの情報を指定

MQ Connection タブのプロパティ一覧

12

プロパティ 説明

Connection キューマネージャーへの接続方法を指定(後述)

Destination queue manager name 接続先のキューマネージャー名

Queue manager host name ホスト名

Listener port number ポート番号

Channel name チャネル名

Security identity セキュリティID(後述)

Use SSL クライアント接続時にSSL通信するかどうか(デフォルトはチェックなし)

SSL peer name SSL利用時のピア名を指定

SSL cipher specification SSL利用時のCipherSpecを指定

Page 13: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

キューマネージャーへの接続情報設定

Connectionプロパティの設定値

13

設定値 説明

Local queue manager

Destination queue manager nameプロパティに指定されたローカルのキューマネージャーに接続 *1 (デフォルト)

MQ client connection properties

以下のプロパティの接続情報を基にリモートのキューマネージャーに接続- Queue manager host name *2- Listener port number- Channel name- Destination queue manager name

Client channeldefinition table (CCDT) file

クライアントチャネル定義テーブル(CCDT)の定義を基に接続 *3キューマネージャー名(キューマネージャー・グループ名)はDestination queue manager nameプロパティに指定

*2 マルチ・インスタンス・キューマネージャー使用時などでキューマネージャー障害時に接続先キューマネージャーの切り替えが可能host nameに複数のホスト名をカンマ区切りで定義

*3 使用するクライアントチャネル定義テーブル・ファイル(.TAB)は統合ノード・プロパティー(mqCCDT)で指定(コマンド例)mqsichangeproperties MB10BK -o BrokerRegistry -n mqCCDT -v "C:¥Program Files (x86)¥IBM¥WebSphere MQ¥Qmgrs¥MB10QM¥@ipcc¥AMQCLCHL.TAB"

*1 キューマネージャー名の指定なしの場合、統合ノードに関連付けられたキューマネージャーに接続(統合ノードに紐づくキューマネージャーがない場合は、デプロイ・エラー)

Page 14: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

キューマネージャーへの接続情報設定

キューマネージャーへの接続先情報を運用ポリシーに指定することも可能 V10から、MQノード用にMQEndpoint 運用ポリシーを提供 MQ Endpoint のプロパティは、MQノードのMQ Connection タブのプロパティと同等

運用ポリシーは実行環境にWebユーザー・インターフェースなどで定義環境によって異なる接続先情報を運用ポリシーに指定することで、フローから環境依存となる設定を排除できる

運用ポリシーの設定は実行時にノード設定を上書き ポリシーの設定は、ノード・プロパティやBARファイルの構成可能プロパティより優先される

運用ポリシーの設定変更は動的に有効 フローを再デプロイすることなく、接続先情報を変更可能

MQノードのPolicyタブ - Policy URLプロパティに使用する運用ポリシーを指定(URL指定)

14

Page 15: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

セキュリティID

キューマネージャーへの接続時にユーザーIDとパスワードを渡すことが可能 MQ V8 で提供された接続認証機能に対応 V8の接続認証機能は、接続時にユーザーIDとパスワードで認証を行う

ローカル接続、クライアント接続ともに可能 ただし、CCDTを利用したクライアント接続時は不可

統合ノードにセキュリティIDとしてユーザーIDとパスワードを登録 mqsisetdbparmsコマンドで「mq::」のプリフィックスをつけて登録(登録方法は以下の3通り)

①セキュリティIDに特定の名前をつけて登録する方法

securityIdentityName に任意のセキュリティID名を指定

MQノードもしくは運用ポリシーのSecurity identityプロパティに上記セキュリティID名を指定するとここで指定したユーザーID/パスワードが使用される

②キューマネージャーを特定したセキュリティIDを登録する方法

mySecureQM にはキューマネージャー名を指定

指定したキューマネージャーに接続する際はここで指定したユーザーID/パスワードが利用される(Security identityプロパティはブランク)

15

mqsisetdbparms integrationNodeName -n mq::securityIdentityName -u username-p password

mqsisetdbparms integrationNodeName -n mq::QMGR::mySecureQM -u username-p password

Page 16: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

セキュリティID

③MQ全体に有効なセキュリティIDを登録する方法

②に該当しないキューマネージャーに接続する場合、ここで指定したユーザーID/パスワードが利用される(Security identityプロパティはブランク)

有効となる設定の優先順位は、①>②>③

登録したセキュリティIDの確認は以下のコマンドで実施

登録したセキュリティIDの削除は以下のコマンドで実施

16

mqsisetdbparms integrationNodeName -n mq::MQ -u username -p password

mqsireportdbparms integrationNodeName -n mq::*

mqsisetdbparms integrationNodeName -n mq::SecurityID -d

Page 17: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQコネクション、キュー・ハンドル

MQコネクション、キュー・ハンドルの保持時間 デフォルトでは、1分間、処理が発生しないとフローはアイドル状態になり、

MQコネクションやキュー・ハンドルをリリース MQInputノードは常に入力キューを受信待ちするため、リリース後すぐにキューマネージャーへの接続、キューの

オープンを実施

保持時間は、統合ノードのsharedConnectorIdleTimeoutプロパティで変更可能 mqsichangepropertiesコマンドで変更

0より大きい値で指定(秒)

-1を指定した場合は、リリースしない

17

※MQ V9 までは、MQコネクションやキュー・ハンドルはフローがアイドル状態となっても保持し続けます。(ISE検証結果より)

mqsichangeproperties integration_node_name -e integration_server_name -o Connectors -n sharedConnectorIdleTimeout -v new_timeout_value

Page 18: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

18

MQTTサポート

Page 19: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTサポート

IoT、M2M向けの軽量でオープンなMQTTプロトコルをサポート MQTT V3.1をサポート

MQTTノードの提供 MQTTPublish ・・・指定したトピックに対しメッセージをMQTTサーバーに送信

MQTTSubscribe ・・・パブリッシュされたメッセージをMQTTサーバーから受信

MQTTサーバー機能の提供 統合ノード毎に1つのMQTTサーバーが構成される

bipMQTT.exeプロセス

MQTTノードはIIB提供MQTTサーバーと外部のMQTTサーバーのどちらにも接続可

19

統合ノード

MQTTサーバー(IIB提供)

MQTTサーバー(外部)

統合サーバー

MQTTクライアント

MQTTクライアント

Page 20: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

<補足>

MQTTとは Internet of Things(IoT)、Machine-to-Machine(M2M)に適した軽量な通信

プロトコル 少ないデータ量での通信、クライアント・モジュールの低バッテリー消費

Publish/Subscribe型のメッセージング・モデル MQTTサーバーを介して、トピック・ベースでメッセージの同報配信が可能

非同期、かつ、双方向通信

メッセージの送達保証 3つのQoS(Quality of Service)を規定し、

低品質なネットワーク環境でも信頼性の高い伝送を実現

オープンな仕様 OASIS標準として仕様公開 http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html

Pahoプロジェクトでクライアント・ライブラリを公開 https://www.eclipse.org/paho/

20

MQTT Server

MQTT Clients MQTT Clientsトピック・ベースPublish Subscribe

Page 21: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTPublishノード

指定したMQTTサーバー/トピックに対し、メッセージをPublishするノード ホスト名とポート番号で接続するMQTTサーバーを指定 運用ポリシーで指定することも可

統合ノードのMQTTサーバー、および外部のMQTTサーバーに接続可

トピックは任意に指定可

クライアントIDはMQTTサーバー内でユニークなIDを指定する必要あり

ノード・ターミナル

21

ターミナル 用途

In 前段のノードから出力されたメッセージが入力されるターミナル

Out MQTTサーバーにパブリッシュされたメッセージが出力されるターミナル

Failure MQTTサーバーへのパブリッシュに失敗した場合にメッセージが出力されるターミナル

MQTTサーバーPublish

Page 22: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTPublishノード

主要なノード・プロパティ

上記ノード・プロパティは、構成可能プロパティとしてBARファイルで上書き可能 手動、もしくは mqsiapplybaroverride コマンドで上書き

22

プロパティ 説明

Basicタブ

Client ID MQTTサーバーに接続する際のユニークな名前

Topic name パブリッシュ先のトピック名

Host name MQTTサーバーのホスト名

Port MQTTサーバーがリッスンするポート番号(デフォルト1883)

Quality of service

MQTTプロトコルのQoS0 - At most once(デフォルト), 1 - At least once, and 2 - Exactly once.

Security identity

mqsisetdbparms コマンドで定義したセキュリティID

Policyタブ

Policy URL 運用ポリシーのURL

Page 23: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTPublishノード

LocalEnvironment 以下のエレメントをノードの手前で設定することでノードの動きを動的に変更可能 LocalEnvironment.Destination.MQTTNode.Output サブツリー

ノード処理完了後に以下のエレメントがセットされる LocalEnvironment.WrittenDestination.MQTT サブツリー

23

エレメント タイプ 説明

retained BOOLEAN リテイン・パブリッシュにするかを指定

TopicName CHARACTER トピック名を指定

qos INTEGER QoSを指定

エレメント タイプ 説明

ClientId CHARACTER クライアントID

DeliveryToken.isComplete BOOLEAN メッセージが正常にパブリッシュされたかどうか

Page 24: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTSubscribeノード

指定したトピックにパブリッシュされたメッセージをMQTTサーバーから受信 ホスト名とポート番号で接続するMQTTサーバーを指定 運用ポリスーで指定することも可

統合ノードのMQTTサーバー、および外部のMQTTサーバーに接続可

トピックは任意に指定可

クライアントIDはMQTTサーバー内でユニークなIDを指定する必要あり

ノード・ターミナル

24

ターミナル 用途

Out MQTTサーバーから受信したメッセージが出力されるターミナル

Failure MQTTサーバーへのパブリッシュに失敗した場合にメッセージが出力されるターミナル

Catch 後続ノードで例外が発生した場合にメッセージが出力されるターミナル

MQTTサーバーPublish Subscribe

Page 25: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTSubscribeノード

主要なノード・プロパティ

上記ノード・プロパティは、構成可能プロパティとしてBARファイルで上書き可能 手動、もしくは mqsiapplybaroverride コマンドで上書き

25

プロパティ 説明

Basicタブ

Client ID MQTTサーバーに接続する際のユニークな名前

Topic name サブスクライブするトピック名(ワイルドカード ”#”、”+“ を使用可能)

Host name MQTTサーバーのホスト名

Port MQTTサーバーがリッスンするポート番号(デフォルト1883)

Quality of service

MQTTプロトコルのQoS0 - At most once(デフォルト), 1 - At least once, and 2 - Exactly once.

Security identity

mqsisetdbparms コマンドで定義したセキュリティID

Policyタブ

Policy URL 運用ポリシーのURL

Page 26: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTSubscribeノード

LocalEnvironment ノード処理完了後に以下のエレメントがセットされる LocalEnvironment.MQTT.Inputサブツリー

26

エレメント タイプ 説明

Duplicate BOOLEAN 受信したメッセージが前に受信したメッセージと重複しているかどうか(TRUE/FALSE)

Retained BOOLEAN リテイン・メッセージかどうか(TRUE/FALSE)

Topic CHARACTER 受信したメッセージのトピック・ストリング

QualityOfService INTEGER 受信したメッセージのQoS(0/1/2)

Page 27: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

クライアントID

MQTTのクライアントIDに関する制約、考慮点 クライアントIDは、23バイト以内の文字列 ツールキットにて、ノードに設定するタイミングで長さが超過しているとエラーを表示

MQTTサーバーに接続しているクライアント間でユニークなIDである必要がある すでに接続済みのクライアントIDを指定した新たな接続要求がきた場合、MQTTサーバーは先に接続してい

たコネクションを切断し、新規の接続を受け付ける(MQTTの仕様)

MQTTSubscribeノードは一度コネクションが切断されても、即座に再接続を行う

27

Page 28: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

並列稼動時の注意点

マルチスレッドで動かした場合(追加インスタンス) 追加インスタンス数を増やすことで受信したメッセージを並行処理可能

ただし、MQTTサーバーへの接続は1本のみ

マルチ・プロセスで動かした場合 複数の統合サーバーに同じMQTTSubscribeフローをデプロイしても同じクライアントIDを指

定している場合、MQTTサーバーは1つの接続しか受け付けない

異なるクライアントIDを指定した場合は、接続は受け付けられるが、それぞれのフローが同じメッセージをサブスクライブすることになる

従って、マルチ・プロセスで動かしてもスケーラビリティは向上しない

28

MQTTサーバー

①②③ ①

Page 29: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

運用ポリシー

MQTTノード用の運用ポリシーを提供 MQTTPublishノード用、MQTTSubscribeノード用それぞれに運用ポリシーを提供

MQTTノードに適用することで同等のノード・プロパティをランタイムで上書き可能

以下のプロパティを設定可能

ノード・プロパティ「Policy URL」で適用する運用ポリシーを指定 運用ポリシーはURLで指定作成時にMQTTPublishポリシー名を「LocalMQTTServer」とした場合、URLは以下となる

/apiv1/policy/MQTTPublish/LocalMQTTServer

29

運用ポリシー・プロパティ 対応するノード・プロパティ

clientId(クライアントID) Client ID

topicName(トピック名) Topic name

hostName(ホスト名) Host name

port(ポート) Port

qos(サービス品質) Quality of service

Page 30: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

運用ポリシー

Web管理コンソールによる定義例 統合ノード ⇒ 運用ポリシー ⇒ MQTTPublish / MQTTSubscribe

30

Page 31: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

MQTTサーバー構成

統合ノードに対しに1つのMQTTサーバーが構成される 統合ノード構成時に自動的に作成

bipMQTT.exe デフォルトで統合ノード起動時に自動起動 以下のコマンドで変更可能(使用しない設定に変更する場合)mqsichangeproperties IBNODE -b pubsub -o MQTTServer -n enabled -v false

以下のコマンドで確認mqsireportproperties IBNODE -b pubsub -o MQTTServer -n enabled

デフォルトのポートは11883 同一環境で複数の統合ノードを構成した場合は構成順に1カウントアップした番号がセットされる

以下でのコマンド明示指定可能mqsichangeproperties IBNODE -b pubsub -o MQTTServer -n port -v 11885

以下のコマンドで確認mqsireportproperties IBNODE -b pubsub -o MQTTServer -n port

31

>mqsireportproperties 10bBK -b pubsub -o MQTTServer -r

MQTTServerenabled='true'port='11885'

Page 32: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

リソース統計

MQTTのリソース統計として以下の情報を取得可能

統合ノードの構成によってデフォルトでリソース統計情報をパブリッシュするPub/Subブローカーが異なる キューマネージャーを関連付けた統合ノードの場合、MQのPub/Subブローカー

キューマネージャーを関連付けていない統合ノードの場合、統合ノードのMQTTブローカー

Pub/Subブローカーによってトピック・ストリングも異なる点に注意MQ Pub/Subブローカーの場合

MQTTブローカーの場合

リソース統計の詳細は以下を参照

32

Measurements Description

OpenConnections MQTTサーバーに対して現在オープンなコネクション数

ClosedConnections 統合サーバーが起動されてから切断したMQTTサーバーへのコネクション数

MessagesReceived MQTTSubscribeノードによって受信されたメッセージ数

MessagesSent MQTTPublishノードによって送信されたメッセージ数

BytesReceived MQTTSubscribeノードによって受信されたデータ量

BytesSent MQTTPublishノードによって送信されたデータ量

FailedConnections 統合サーバーが起動されてから接続に失敗したコネクション数

http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/bj43310_.htm

$SYS/Broker/integrationNodeName/ResourceStatistics/integration_server_name

IBM/IntegrationBus/integrationNodeName/ResourceStatistics/integration_server_name

Page 33: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

アクティビティ・ログ

MQTTのアクティビティ・ログを取得可能 MQTT固有の以下のタグを提供

33

タグ名 説明 備考

TOPICNAME MQTTノードが処理したメッセージのトピック名

CONNECTIONURL MQTTノードが接続したMQTTサーバーへのURL 例 tcp://xxx.xxx.xxx.xxx:11883

※IIB V10からIB Explorerが提供されなくなり、GUI でアクティビティ・ログを表示することができなくなっています。アクティビティ・ログの利用に関しては下記をご確認ください。http://www-01.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/bj55000_.htm

Page 34: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

34

REST APIアプリケーション開発(Swaggerサポート)

Page 35: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

IIB V10 REST API 連携機能概要

35

REST API ソーシャル・アプリケーション、モバイル端末、ブラウザー、組み込み機器等多様なクライアントが

リモートのサービスを呼び出す標準的な手法として利用されている

Swagger 2.0をサポート

API公開専用のウィザードが提供

既存のWebサービスをJavaScriptから呼ぶためのSDK生成

統合サービスからJava Script クライアントの生成

REST APIを記述するための標準

Swagger文書をインポートしてREST APIサービスを提供する「REST APIアプリケーション」を追加

JSONサポートの強化

JSONデータをGUIでマッピング可能に

IBM Integration Bus

APIm Catalog

App

App

バックエンド・アプリケーション、

サービス

REST API連携機能が強化され、既存システムの業務をAPIとしてより簡単に公開可能に

Page 36: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

REST APIアプリケーション

REST APIアプリケーション IIB V10において、REST API公開に特化した

“アプリケーション”が追加

REST API公開を簡単に行う方法を提供

Swagger 2.0の定義文書(JSON形式)をインポートして作成

Swaggerツールと連携してAPIの定義、実装、公開、テストが可能

36

Page 37: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

REST APIの構成

37

APIは相対パスによって識別される複数のリソースを含む

各リソースは複数を操作を含み、HTTPメソッドに関連づけられる

各操作はHTTPボディの情報に加えてパラメーターを持つことができる 1) パス・パラメーター

URLのパスの一部として設定される

2) クエリー・パラメーター key=valueの形式でパスの後に設定される

3) ヘッダー・パラメーター HTTP要求のヘッダーとして設定される

4) フォーム・パラメーター

相対パス 意味

/customers データベース内の全ての顧客情報

/customers/12345 顧客番号12345の顧客情報

/customers/12345/orders 顧客番号12345の全ての注文情報

/customers/12345/orders/67890 顧客番号12345の注文#67890

リソースの例

API

PUT GET DELETE

POSTGET

/customerdb/v1

/customers

/customers/{customerId)

基本パス

リソースと相対パス

HTTPメソッド 操作

GET getCustomer

PUT updateCustomer

DELETE deleteCustomer

リソース/customer/{customerId}に対する操作の例

/customers/12345/orders/56789

/customers?min=5&max=20例

Api-Client-Id : ff6e2c5d-42d5-4026-8f7f-d1e56da7f777例

Page 38: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

Swaggerとは?

REST APIを記述するための仕様 JSON形式のSwagger文書でAPIを記述 リソース、操作、パラメーター、HTTP要求・応答のデータ・モデルを

表現するJSONスキーマ

WebサービスにおけるWSDL文書の位置づけ

IIB V10ではV2.0がサポートされる

Swagger文書は一般にswagger.jsonという名前が付けられる

REST APIを記述、利用し、可視化するためのツールを含む Swagger UI API文書をブラウザで表示し開発者にリファレンスとして提供

ブラウザ上からAPIのテスト可能

Swagger Editor YAML形式でAPIを記述することでSwagger文書を生成

Swagger Code Generator JSON形式のSwagger文書から各種言語向けにクライアント/サーバーのコードを生成

その他 Swagger-core プログラム・ソース内のアノテーションの情報からSwagger文書を生成

38

http://swagger.io/

Page 39: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

(参考)Swagger文書の例

39

{"swagger": "2.0","info": {

"title": "Staff Table API","description": "従業員テーブルへのアクセス用API","version": "1.0.0"

},"host": "localhost","schemes": [

"http"],"basePath": “/StaffInfo/v1","produces": [

"application/json"],"paths": {

"/staff/{id}": {"get": {

"summary": "従業員情報の取得","description": "","operationId": "getStaffData","parameters": [

{"name": "id","in": "path","description": "従業員ID.","required": true,"type": "string"

}],"tags": [

"Staff"],"responses": {

"200": {"description": "","schema": {

"$ref": "#/definitions/Staff"}

},"default": {

"description": "Unexpected error","schema": {

"$ref": "#/definitions/Error"}

}}

}}

},

(右へ続く)

(左からの続き)

"definitions": {"Staff": {

"properties": {"staffId": {

"type": "string","description": "従業員ID"

},"lastChanged": {

"type": "string","format": "date-time","description": "最終更新日付"

},"firstName": {

"type": "string","description": "名前"

},"lastName": {

"type": "string","description": "苗字"

},"mail": {

"type": "string","description": "メール・アドレス"

}}

},"Error": {

"properties": {"code": {

"type": "integer","format": "int32"

},"message": {

"type": "string"},"fields": {

"type": "string"}

}}

}}

JSONスキーマでAPI内で利用されるオブジェクトを定義

APIの情報の定義- ホスト名- スキーマ(HTTP/HTTPS等)

- 基本パス- Content-type 等

リソースとURLの定義

操作の定義

swagger.jsonの例(抜粋)

Page 40: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

REST APIアプリケーションの開発の流れ

REST APIアプリケーションの開発の流れ1. Swagger文書を準備

2. REST APIアプリケーションを作成2-1. REST APIアプリケーションを新規に作成

2-2. Swagger文書をインポート

3. APIの操作を実装する

4. 実行環境にデプロイ

5. Swagger UIでテスト

※ Swaggerについては後述

40

Page 41: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

REST APIアプリケーション作成・利用の全体像

41

REST APIコンシューマ

アプリ

Swagger Editor 統合ノード

3.IIBランタイムにデプロイ

REST API呼び出し

Swagger Code

Generator

AndroidSDK

PythonSDK

PHPSDK

REST APIアプリケーションとSwagger文書もIIBに配置される

統合サーバー1

REST APIアプリケーション

IIB ツールキット

swagger.json

生成生成生成

Barファイル

swagger.json

4.Swagger UIでREST APIアプリケーションをテスト

API コンシューマアプリ開発者

Swagger UI

swagger.json

REST API呼び出し(テスト)

IIBフロー開発者1.YAML形式でAPIを記述しSwagger文書を生成

2.Swagger文書をインポート、REST APIのサービスを実装

Page 42: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

1. Swagger Editorを利用したAPIの記述

42

Web画面上でYAML形式でAPIを記述 Web上のサービスを利用することも、ローカルで稼働させることも可能 Web上のサービスは下記URLよりアクセス可能 http://editor.swagger.io/

ローカルで稼働させる場合にはNode.js, gitが前提として必要git clone https://github.com/swagger-api/swagger-editor.gitcd swagger-editornpm start

3.記述したAPIをJSON形式Swagger文書としてダウンロード

1.YAML形式でAPIの記述 2.記述されたAPIのリファレンスが出力される

Page 43: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

1. Swagger Editorを利用したAPIの記述

YAMLとJSON YAMLはJSONと1対1に相互変換可能な形式

JSONよりも短く記述しやすいためSwagger EditorでAPIの記述に採用されている

43

YAML形式による APIの記述 JSON形式によるAPIの記述

字下げで表現 { } で表現

データの構造

行頭の - で表現 [ ] で表現

配列

Page 44: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

2. REST APIアプリケーションの作成

IntegrationツールキットのApplication Developmentビューより「New」→「Start by creating a REST API」を選択して作成開始

44

REST APIアプリケーション名を入力

Swagger文書の場所を入力

Page 45: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

作成されたREST APIアプリケーションの操作を実装する

2. REST APIアプリケーションの作成

45

クリックして操作を実装するサブ・フローを生成

メッセージ・フロー・エディタでサブ・フローが開くのでAPI操作を任意のノードを組み合わせて実装する

Page 46: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

2. REST APIアプリケーションの作成

API操作のパラメーターへのアクセス方法 パラメーターはLocalEnvironmentツリーに展開される

パス・パラメーターが渡された際のLocalEnvironmentツリーの例

ComputeノードのESQLからのアクセス例

46

( ['MQROOT' : 0x1ea12590](0x01000000:Name):Destination = (

(0x01000000:Name):HTTP = ((0x03000000:NameValue):RequestIdentifier =

X'485454500000000000000000000000007c36000000000000' (BLOB))(0x01000000:Name):RouterList =

)(0x01000000:Name):REST = (

(0x01000000:Name):Input = ((0x03000000:NameValue):Method = 'GET' (CHARACTER)(0x03000000:NameValue):Operation = 'getStaffData' (CHARACTER)(0x03000000:NameValue):Path = '/v1/staff/12345' (CHARACTER)(0x03000000:NameValue):URI = 'http://localhost:7800/v1/staff/12345'

(CHARACTER)(0x01000000:Name ):Parameters = ((0x03000000:NameValue):id = '12345' (CHARACTER)

))

))

DECLARE STAFF_ID CHAR;SET STAFF_ID = InputLocalEnvironment.REST.Input.Parameters.id

Page 47: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

3.REST APIのデプロイ

通常のアプリケーションと同じくBARファイルとしてデプロイ 追加インスタンスやポリシーも設定可能

47

メッセージ・フローに対して追加インスタンスやワークロード・ポリシー等のプロパティーを設定

Page 48: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

3.REST APIのデプロイ

デプロイされたREST APIの情報にWeb管理画面からアクセス可能 Swagger文書もIIBランタイム上にホストされ、開発者やSwagger UI等からアクセスできる

ようになる

48

Swagger文書へのURL

Page 49: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

3.REST APIのデプロイ

HTTPリスナーに関する注意点 REST APIをデプロイする場合、HTTPリスナーは統合サーバー(組み込み)リスナーが前提 MQの関連付けをしている場合は、明示的に以下のコマンドで、統合サーバー(組み込み)リスナーを使用する

ように設定変更が必要

49

mqsichangeproperties integrationNodeName -e integrationServerName -o ExecutionGroup -n httpNodesUseEmbeddedListener -v true

Page 50: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

4.Swagger UIを利用したREST APIアプリケーションのテスト

Swagger UI Swagger文書からAPI仕様を参照するWeb画面を生成 APIを利用する開発者がAPI仕様を参照するとともに、REST APIのテスト機能も付属

HTML, JavaScript, CSSの集合として作成されているため、 簡単にローカルにコピー、またはWebサーバー上に配置して実行可能

IIBで実装したREST APIアプリケーションのテストに利用可能

50

Page 51: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

4.Swagger UIを利用したREST APIアプリケーションのテスト

テストしたいAPIの操作を開き、パラメーターを入力して送信すると応答コード、応答メッセージ、応答ヘッダーが表示される

51

1.パラメーターを入力

2.テストを実行3.応答結果が表示される

Page 52: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

4.Swagger UIを利用したREST APIアプリケーションのテスト

Swagger UIの構成 Swagger UIをダウンロードして展開すると、distフォルダ配下にindex.htmlが見つかる

index.htmlを編集し、IIB上のSwagger文書のURLに変更

IIB上のSwagger文書へのURLはIIBのWeb管理画面、またはIIBツールキットより確認可能

52

2. URLをIIB上のSwagger文書に変更

Integration NodesビューよりREST API Descriptionを選択してプロパティーを確認

1. Swagger UIのindex.htmlを開く

Page 53: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

4.Swagger UIを利用したREST APIアプリケーションのテスト

注意事項 Swagger UIからIIB上のREST APIアプリケーションをテストする場合、クロスドメイン・アクセ

スが発生するためCORSの設定を行う必要がある 設定例

「参考資料:HTTP リスナーのCORSサポート」を参照

53

mqsichangeproperties IntegrationNodeName -e IntegrationServerName -o HTTPConnector-n corsEnabled -v true

Page 54: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

Swagger文書に関するIIBの制約事項

Swagger文書はJSON形式(.json)で保存する必要がある

Swagger文書のOperation ObjectのoperationIdフィールドにAPI内でユニークな値を設定する必要がある

同一の基本パスを持つREST APIは統合サーバー上に複数デプロイすることはできない

フォーム・データ・パラメーターはSwagger文書では許容されているが、パラメーターの解析処理にはIIBのサポート対象外

54

Page 55: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

55

グラフィカル・データ・マッピングの拡張

Page 56: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

グラフィカル・データ・マッピングの機能強化

IIB V10で強化されたグラフィカル・データ・マッピングの機能

anyタイプのメッセージに対して、ユーザー定義エレメントを動的に定義可能

データ・マッピングでEnvironmentツリーの追加可能

JSON メッセージのグラフィカル・データ・マッピング

56

Page 57: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

(参考)グラフィカル・データ・マップ・エディター

WebSphere Message BrokerのV8.0から組み込まれたグラフィカルなデータ・マッピング・ツール

IBMの他製品でも同様の機能を使用 IBM Integration Designer, Rational Application Developer など

グラフィカル・データ・マップ・エディターの主な提供機能 GUIで変換の定義が可能

GUIでデータベースの照会結果を出力メッセージに追加可能

出力メッセージのルーティングや宛先制御を動的に設定

データベースのデータの変更が可能(Insert, Update, delete)

57

Page 58: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

グラフィカル・マッピング・エディターの例

58

① Input MessageとOutputMessageを指定

② 各エレメント間をワイヤリング

③ 繰返し要素の場合は、For eachにより繰り返し

④ さらに下位の要素をワイヤリング

① ①②

Page 59: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

ユーザー定義エレメントの追加

IIB V10から、スキーマ無しでユーザー定義エレメントの追加が可能 XMLスキーマを持たないメッセージ・マップの構造化データに対して、ユーザー定義エレメントを

追加可能

追加できる拡張ポイント(anyエレメント)をもつリソース LocalEnvironmentツリー

メッセージ本体

メッセージ本文内のxsd:anyエレメント

Environmentツリー

MQRFH2などのような拡張ポイントを持つ転送用ヘッダー

ユーザー定義エレメントを使用して、JSONメッセージや、xsd:anyを持つSOAPまたはXMLメッセージを定義することが可能

59

Page 60: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

ユーザー定義エレメント(JSON)の追加

ユーザー定義エレメントの追加 JSONメッセージにユーザー定義エレメントを追加する例

xsd:any タイプのエレメントを選択して、右ポップアップクリック・メニューから「Add User-Defined(ユーザー定義)」を選択する

60

Page 61: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

ユーザー定義エレメント(LocalEnvironment)の追加

LocalEnvironmentツリーのanyエレメント

61

① メッセージ・アセンブリのPropertiesをクリック② プロパティの追加で、LocalEnvironmentをチェック③ LocalEnvironmentが追加され、anyエレメントも存在④右ポップ・アップメニューで「Add User-Defined」を選択

Page 62: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

Environmentツリーの追加

Environmentツリーをマッピング画面に追加可能

62

Environmentツリーが追加されるanyフィールドなので、ユーザー定義エレメントを追加した上で、マッピングが可能

Page 63: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

JSONメッセージのグラフィカル・マッピング

マップ・エディターでIBM提供メッセージ・モデルとしてJSONドメインを選択可能 JSON (IBM 提供の JSON オブジェクト・メッセージ・モデル)

JSON (IBM 提供の JSON 配列メッセージ・モデル)

63

① 新規マップの作成で、入力メッセージ、出力メッセージで、JSONを選択

② 出力ドメインとしてJSONを選択③ マッピング画面にJSONが追加メッセージエレメントは、xsd:anyユーザー定義エレメントを追加可①

Page 64: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

64

フロー・エクササイザー

Page 65: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザー

新しいテストツール、フロー・エクササイザーを提供 メッセージが通ったパスや、任意のポイントでのメッセージ・ツリーの確認が可能

以下の入力ノードを含むメッセージ・フローで使用可能 MQInputノード

HTTPInputノード

SOAPInputノード

FileInputノード

MQTTSubscribeノード

テストで使用したメッセージは、再テストのために保存可能

65

Page 66: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

フロー・エクササイザーの実行1. フロー・エクササイザーの開始

66

①「Start Flow exerciser」アイコンをクリック

②デプロイ先の統合サーバを選択

既にRecording状態の統合サーバにリソースがデプロイされている場合は、当確認画面なしにリソースを再デプロイ

Page 67: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

67

③統合サーバはRecording状態になり、フローエディタは編集不可な状態になる

選択した統合サーバにはRecording状態を示すアイコンが表示 (注:V10.0.0.1では、フローレベルに表示)

Page 68: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

2. テスト・メッセージの送信 フロー・エクササイザーか外部ツール/ユーザー・アプリを使用して、テスト・メッセージを送信

フロー・エクササイザーを使用する場合は以下のメッセージを利用可能 新規に作成したメッセージ (MQInput、HTTPInput、SOAPInput使用時のみ利用可能)

保管されたレコード・メッセージ

フロー・エクササイザーの実行手順

68

①「Send message」アイコンをクリックして、フロー・エクササイザーからメッセージ送信

②新規にメッセージを作成する場合は、「Input Message」を選択して、「Newmessage」アイコンをクリックし、新規メッセージ作成画面で送信メッセージを作成して、「Send」

②レコード・メッセージを使用する場合は「Recorded Messages」のリストから送信メッセージを選択し「Send」

Page 69: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

69

ヘッダーの編集も可能

メッセージをエディタに直接入力したり、外部ファイルの読み込みが可能

メッセージを送信

選択したメッセージの複製や、削除が可能

データ部を外部ファイルに保管可能

(新規メッセージの作成画面)

Page 70: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

70

③「Send」ボタンでメッセージを送信すると処理状況がポップアップで表示される

Page 71: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

71

3. 実行結果の確認 フロー・エクササイザーでメッセージを送信した場合は、メッセージの通過パスが自動的にハイライト

外部ツール/ユーザー・アプリからメッセージを送信した場合は、「View path」アイコンをクリックしてハイライトさせる

メッセージが通ったパスがハイライトされる

ハイライトされた接続をクリックすると、その時点でのメッセージ・ツリーを表示

Page 72: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

72

4. レコードしたメッセージの保管 入力ノードと次のノードの間のハイライトされた接続をクリックし、「Save」アイコンをクリック

保管したメッセージは「Send message」ダイアログから再利用可能

クリック

クリック

適当な名前をつけて保管

保管したメッセージはApplication内のOtherResources配下に、xmlファイルとして保管される

Page 73: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの実行手順

73

5. フロー・エクササイザーを終了する すべてのレコード・メッセージは明示的に保管していなければ消去

①「Return flow to edit mode」アイコンをクリックし、フロー・エディタを編集可能な状態に戻す

②統合サーバを右クリック>「Stop Recording」を選択し、recordingモードを停止

Page 74: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの考慮点

考慮点 フロー・エクササイザーを使用した新規メッセージの作成機能はMQInput、HTTPInput、

SOAPInputでのみ使用可能 MQInput使用でも以下の条件に当たる場合は、当機能は使用不可 MQの構成定義に、ポリシーやクライアントチャネル定義テーブルを使用する場合

フローがリモートの統合ノードにデプロイされ、MQの構成定義でローカルのキュー・マネージャーの使用を定義している場合

キャプチャしたレコード・メッセージは、以下のノードで使用可能 MQInputノード、HTTPInputノード、SOAPInputノード、FileInputノード、MQTTSubscribeノード

レコード・メッセージはInputノードでパースしたあとの論理メッセージで、編集は不可

レコード・メッセージをSendすると入力ノードで処理せずに、入力ノードのoutputターミナルに渡される

HTTPReply、SOAPReplyでは、レコード・メッセージを受け取るとReply送信の処理を省略

入力メッセージやレコード・メッセージはメッセージ・フローをプロジェクト交換ファイルにエクスポートしたときにフローに含まれる

入力メッセージやレコード・メッセージを他のフローにコピーすることは不可

74

Page 75: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの考慮点

複数メッセージを実行した場合、メッセージごとに通ったパスは表示されない ユーザーが個別に確認が必要

メッセージを複数流した場合、メッセージ・ツリーは異なるメッセージ・インスタンスとしてキャプチャされる デフォルトで200メッセージ・インスタンスまで表示可能Windows>Preferences>Integration Development>Flow Exerciserでこの値は変更可能

設定値を超えるメッセージがキャプチャされた場合、設定値に定義した数までのメッセージを表示するか、すべてのメッセージを表示するか確認のポップアップを表示

75

実行したメッセージが通ったパスがすべてハイライトされる

何番目に実行したメッセージを表示するかを選択

何件メッセージを表示するかを選択(画面例では設定値を5に設定)

Page 76: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

フロー・エクササイザーの考慮点

デバッガーとの併用は不可 デバッガーをかけた状態で「Start Flow exerciser」を実行しても、デバッガーがONになった統合サーバはテ

ストの実行環境として選択できない

76

Page 77: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

77

WebSphere ESBコンバージョン・ツール

Page 78: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

WESBからIIBへのコンバージョン

WebSphere ESB(WESB) コンバージョン・ツールにより、サービス・コンポーネント・モジュールの再利用が可能

コンバージョンでは2種類の方法を検討 コンバージョン・ツールの使用によるコンバージョン

手作業によるコンバージョン

コンバージョン・ツールでサポートするモジュールの環境 WebSphere Integration Developer version 6.2

WebSphere Integration Developer version 7

IBM Integration Designer version 7.5

IBM Integration Designer version 8

コンバージョン・ツールは、ツールキット導入後にアドオンとして追加1. ツールキットの「ヘルプ」メニューから、「新しいソフトウェアのインストール」を選択

2. リポジトリを指定して、インストールする

78

名前 WebSphere Conversion Tool

ロケーション http://public.dhe.ibm.com/software/integration/integrationbus/tools/wesbconvert/v10/

Page 79: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョン・ツールによるコンバージョン手順

以下の手順でコンバージョンを実施1. WESBコンバージョン・ツールの起動

2. WebSphere ESB変換セッション・ファイルの作成 WebSphere ESB変換セッションは、拡張子が、.conversionのファイルとして、ワークスペース上に保存され

、変換選択項目や変換結果が保存される

3. コンバージョン対象のWESBのプロジェクトを選択

4. コンバージョン対象のWESBのリソースを選択

5. WESB変換セッションのグローバル・プロパティーの構成

6. 「WebSphere ESBリソースの変換」ウィンドウで、「変換の開始」をクリックして、リソースを変換

79

Page 80: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョン・ツールによるコンバージョン結果

コンバージョン・ツールによる変換結果の確認画面

80

Page 81: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョンされたフロー例

WESBメディエーション・フロー → IIBのメッセージ・フロー

WESBメディエーションモジュールの各コンポーネント → IIBのサブ・フロー

81

WESBメディエーション

IIB メッセージ・フロー

Page 82: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョン・ツールの制約(1/3)

ワークスペース IBM Integration ツールキットとIBM Integration Designer(IID)ではワークスペースを

共有不可

コンバージョン・ツールで読み込むためには、WIDまたはIIDからプロジェクト交換ファイル形式でエクスポートし、Integration ツールキットのインポートのWESBプロジェクト交換オプションを使用

プロジェクトファイル WESBのJavaプロジェクトは、手動でコンバート

WSDLファイル IIBでは、Document/encodedスタイルのWSDLファイルはサポートされない

82

Page 83: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョン・ツールの制約(2/3)

サービス 1 つ以上の操作と 1 つ以上のエクスポートが含まれる WESB サービスは、IIBアプリケーションに変換

メディエーション・モジュール・コンポーネント 以下は手動での変換が必要 実装タイプのないメディエーション・モジュール・コンポーネント

スタンドアロン参照

1..1 の多重度設定を持つターゲット・サービスへの参照は変換

エクスポート 以下は手動での変換が必要 WESB の関数セレクター(WESB 変換ツールがメディエーション・モジュールをIIBのアプリケーションに変換する場合

WESB のカスタム関数セレクター

カスタム・データ・バインディング

インポート 以下は手動での変換が必要 複数のインターフェースを使用するインポート

MQ、JMS、MQ JMS、汎用 JMS など、非同期バインディングを使用するインポート

SCA (ネイティブ) バインディングを使用するインポート

カスタム・データ・バインディング

83

Page 84: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

コンバージョン・ツールの制約(3/3)

メディエーション・プリミティブ プロモートされたプロパティは、手動での変換が必要

ビジネス・オブジェクト・マップ BOマップは手動での変換が必要

XMLマップ 以下の変換は、手動でのコンバージョンが必要 Lookup

Submap

Group

Custom XSLT

Custom Java

Custom XPath

IBM Integration Bus は、マッピング変換「グループ」および「ルックアップ」はサポートしない

SMO添付エレメントに対して定義された変換は、手動でのコンバージョンが必要

SMOコンテキスト・エレメントに対して定義された変換は、手動でのコンバージョンが必要

SMOヘッダー・エレメントに対して定義された変換は、手動でのコンバージョンが必要

84

Page 85: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

85

その他の新機能

Page 86: IBM Integration Bus V10public.dhe.ibm.com/software/dw/jp/websphere/esb/ib... · JavaScript HTTP/SOAP ... とに制御したいなどの要件がある場合に選択 ... BIP1275I:

その他の新機能

JavaScript クライアントAPIの作成 既存の統合サービスにJSON/HTTPバインディングを追加する機能 統合サービスはSOAP/HTTPのサービス提供に特化した特殊なアプリケーション

WSDLをインポートして作成され、SOAP/HTTPバインディングを持つ

JavaScriptアプリケーションから利用可能なJavaScriptのAPIを生成 Webサービスの操作に対応したメソッドを含むJavaScriptコードが生成

JavaScript開発者向けのWebページを生成 JavaScriptクライアントAPIの参照

サンプル・コードの参照

JavaScriptクライアントAPIのダウンロード

HTTP ノードと SOAP ノードの統合セキュリティー機能拡張 統合 Windows 認証 (IWA)のサポート

HTTP リスナーのCORSサポート

Tutorial/GitHub連携 チュートリアルの刷新、GitHubからサンプル・パターンの取得可能

86