WebSocketによる“リアルタイムWebアプリケーション”の構築を支援──Oracle WebLogic Server 12c(12.1.2)の新機能2

Oracle Java & Developers編集部
2013-10-21 11:00:00
  • このエントリーをはてなブックマークに追加

「Oracle WebLogic Server 12c(12.1.2)」では、WebSocketによるサーバ・プッシュを含む双方向型のリアルタイムWebアプリケーションの構築を支援する機能が追加された。今回は、それらの機能を概観してみよう。

エンタープライズの世界でWebSocketが注目される理由

 HTML5の構成技術の1つとして標準化され、2013年6月にリリースされたJava EE 7でもサポートされた通信規格WebSocketがWebアプリケーション開発の世界で注目を集めている。WebSocketを使えば、これまでポーリングなどによって擬似的に実現していたサーバ・プッシュ型のWebアプリケーションを、従来よりもスマートに、なおかつ標準技術の枠内で実装できるようになるからだ。サーバ側のデータが更新される都度、クライアント側に向けてリアルタイムにプッシュ通知する機能が容易に作れるようになれば、Webアプリケーションで実現できるサービスの幅は大きく広がるだろう。

日本オラクル Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部 シニアセールスコンサルタントの松林晶氏
日本オラクル Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部 シニアセールスコンサルタントの松林晶氏

 Oracle WebLogic Server 12cは、その最新版であるOracle WebLogic Server 12c(12.1.2)において、このWebSocketにいち早く対応した。単にWebSocketを使えるだけでなく、WebSocketの利点を生かしたサーバ・プッシュ型のリアルタイムWebアプリケーションの実現を容易にする数々の機能を提供している点が大きな特徴だ。今回は、日本オラクル Fusion Middleware事業統括本部ソリューション本部 Cloud Application Foundationソリューション部 シニアセールスコンサルタントの松林晶氏の解説により、それらの機能を概観してみたい。

 エンタープライズ・アプリケーションの分野でWebSocketが注目を集めている理由について、松林氏は「軽量なプロトコル」であることと「標準ベースの技術」であることを挙げる。

 これまで、WebブラウザをクライアントとするWebアプリケーションにおいて、サーバ側のデータベースで更新されたデータをいち早くクライアント側にプッシュ配信するには、手動/自動を含む頻繁なポーリングや、Cometなどによりサーバ・サイドで情報の更新があるまでHTTPレスポンスを返さないようにするなど、やや特殊なテクニックを駆使しなければならなかった。また、Ajaxを使ったWebアプリケーションの場合、サーバ側との通信は基本的にHTTPベースで行っているため、特にデータの送受信量が多いWebアプリケーションでは通信帯域の消費量が大きな課題となっていた。

 これらの課題の解決を目指して標準化された技術がWebSocketである。WebSocketでは、最初にコネクションを確立する際にHTTPを使うものの、一度コネクションを確立した後は軽量なヘッダ情報のみを付加して、必要なデータだけをシンプルに送受信する。そのため、特にクライアント/サーバ間で頻繁に通信を行ったり、大量のデータを送受信したり、あるいは多数のクライアントを相手にしたりするようなWebアプリケーションで多くのメリットが得られる。


※クリックすると拡大画像が見られます

 「よりシンプルな仕組みによるリアルタイムなWebアプリケーションを標準技術だけで実装できるWebSocketには、エンタープライズ領域でも多くの開発者が関心を寄せています。現時点でWebSocketをサポートしている商用アプリケーション・サーバは少なく、その点だけでもWebSocketの導入を検討する企業はOracle WebLogic Serverを選ぶ価値があると言えます。Oracle WebLogic Server 12c(12.1.2)ではアノテーション・ベースでWebSocketの機能を使えるので、アプリケーションの開発が容易に行えるというメリットもあります。1つ注意点があるとすれば、今回のバージョンで提供しているのは、Java EE 7の仕様(JSR 356)に準拠したWebSocketではなく、Oracle WebLogic Serverの独自実装/APIだということでしょう」(松林氏)

データベースからフロントまで一貫したリアルタイムWeb環境を実現

 Oracle WebLogic Server 12c(12.1.2)を利用した場合、クライアント層からデータベース層までのシステム全体を通じてリアルタイムWebアプリケーションのための環境を用意できることが、企業にとって大きなメリットになる。

 「リアルタイムWebアプリケーションを考えた場合、アプリケーション層からクライアント側へのプッシュ配信の部分に関心が集まりがちですが、実際にプッシュ配信のトリガになるのは、サーバ側における“データベースの更新”になるケースが多いでしょう。Oracle WebLogic Server 12c(12.1.2)を使えば、プッシュ配信のきっかけとなるデータベースの更新をトリガとする、バックエンドからフロントまで一貫したリアルタイムWebアプリケーションのための環境を簡単に構築することができます」(松林氏)


※クリックすると拡大画像が見られます

 Oracle WebLogic Server 12c(12.1.2)上におけるリアルタイムWebアプリケーションでは、データベースの更新をトリガにしたクライアントへのプッシュ配信を実現するために2つの方法を利用できる。1つは「TopLink Data Services」を使う方法、もう1つはインメモリグリッド「Oracle Coherence 12c」の新機能である「Coherence GoldenGate HotCache」を使う方法である。