この付録では、Java New I/O (NIO) APIを使用して多数のエンドポイントのリニア・スケーラビリティを達成する方法について説明します。
この付録には、次のセクションがあります。
古いJava IO APIを使用している場合、スレッド管理に関連する問題のため、サーバーを数千のユーザーに拡大することができませんでした。Java New IO (NIO)フレームワークは、Java NIO APIを活用してスケーラブルで堅牢なサーバーを構築できるように設計されたものです。Javaベースのソケット実装を使用して古いIOシステムでエンドポイントを管理すると、Oracle SOA Suite for healthcare integrationのスケーラビリティの問題が発生します。この問題を解決するために、Oracle SOA Suite for healthcare integrationではNIOベースのトランスポート実装を使用しています。NIOフレームワークは、TCP/IPやUDP/IPなどの各種トランスポートを介する抽象的なイベントドリブンの非同期APIを提供します。
注意: 否定確認および汎用TCPの場合、NIOはサポートされていません。 |
Oracle SOA Suite for healthcare integrationでは、NIOサポートを使用してMLLPメッセージを交換することで、次のことを実現します。
待機時間の向上
スケーラビリティの向上
スループットの最大化
パフォーマンスの最大化
Oracle SOA Suite for healthcare integrationでは、既存のソケットベースのIO実装に影響を与えることなく、現在のアーキテクチャでNIOの機能をシームレスに使用します。NIOベースのトランスポートに切り替えるには、次の操作を実行する必要があります。
Oracle Fusion Middleware Enterprise Manager Controlコンソールで、b2.nio
サーバー・プロパティをtrue
に設定します。
注意: プロパティを有効にするには、サーバーを再起動する必要があります。 |
このプロパティが設定されていない場合、デフォルトの動作として既存のソケットベースのトランスポートが使用されます。
注意: 実行時に両方のトランスポート実装(ソケットIO実装とNIO実装)を一緒に使用することはできません。つまり、あるエンドポイントでNIOベースのトランスポートを使用し、別のエンドポイントでソケットベースのIOトランスポートを使用することはできません。 |
NIOベースのフレームワークは、MLLP 1.0ベースのメッセージ交換に対して次のサポートを提供します。
サーバー・タイプおよびクライアント・タイプのソケット
通信の同期モードおよび非同期モード
一時接続および永続接続
メッセージ交換の再試行およびタイムアウトのポリシー
エンドポイントの作成
エンドポイントの有効化と無効化
エンドポイントの更新
注意: NIOフレームワークを使用してダッシュボードから1000個のエンドポイントを有効化または無効化すると、時間がかかります。この機能は、1回に最大100個のエンドポイントで試行することをお薦めします。 |
NIOフレームワークでは、ワーカー・スレッド・プール・モデルに基づく自身のスレッド・プール・デフォルトが使用されます。ただし、Oracle SOA Suite for healthcare integrationでは、ワーカー・スレッド・プール・サイズを指定できます。
ワーカー・プール・サイズを指定するには、Oracle Fusion Middleware Enterprise Manager Controlコンソールで次のプロパティを設定します。
b2b.nio.minWorkerPoolSize
= n (デフォルトは3
)
b2b.nio.maxWorkerPoolSize
= n (デフォルトは5
)
ここで、nはスレッド・プール・サイズです。
Oracle SOA Suite for healthcare integrationランタイムでは、セレクタ・カウントの値がサーバーのCPUの使用可能なコア数と等しい値に自動的に設定されます。セレクタ・プール・サイズの最小値と最大値を構成するには、Oracle Fusion Middleware Enterprise Manager Controlコンソールで次のプロパティを設定します。
b2b.nio.minSelectorPoolSize
b2b.nio.maxSelectorPoolSize
注意: プロパティを有効にするには、サーバーを再起動する必要があります。 |
NIOフレームワークは、現在、MLLP 1.0トランスポート・プロトコルに対するサポートを提供しています。
次のことがサポートされます。
即時確認のサポート
破棄確認のサポート
永続確認のサポート
デリバリ・チャネルによるTPの識別
順序付けモード:
なし
OnetoOne
OnetoOneMapping
インタフェース順序付け
SSL/TLS