BlazeDSの最近のブログ記事

BlazeDS 3.2 及びそれ以前のバージョンに重要な脆弱性が発見されました。ある種のリクエストデータを処理すると、BlazeDS を実行中のプロセスが読み取り権限のあるファイルにアクセスできてしまうというものです。

この問題は BlazeDS を含め以下の製品が影響を受けます。

  • BlazeDS 3.2 とそれ以前
  • LiveCycle 9.0, 8.2.1, 8.0.1
  • LiveCycle Data Services 3.0, 2.6.1, 2.5.1
  • Flex Data Services 2.0.1
  • ColdFusion 9.0, 8.0.1, 8.0, 7.0.2

関連する製品を利用している環境では速やかに更新することが推奨されています。

BlazeDS の更新方法は以下の通りです。

  1. BlazeDS 3.2 がインストールされていない場合は 3.2 をインストール
  2. パッチファイルをダウンロード (blz32_hf_12617.zip: 581KB) して、ZIP ファイルを展開
  3. flex-messaging-core.jar を BlazeDS の /WEB-INF/lib/ ディレクトリ下にコピー

注: nightly builds を利用している場合は、BlazeDS 3.x build 12617 (またはそれ以降) and BlazeDS Trunk build 12583 (またはそれ以降)をご利用ください。この問題は対応済みです。

LCDS 等それ以外の製品での対応方法はこちらのページをご覧ください。(Security update available for BlazeDS

ちょっと間が空きましたが、BlazeDS を使ったサーバからのプッシュ 3 つ目の方法です。

3.Polling + Piggybacking (使用するチャネル: AMFChannel)

この方法は、昔ながらのポーリングをベースにしています。基本的には、サーバにデータの有無を確認するポーリングリクエストを定期的に繰り返し送信することでサーバから最新の情報を取得します。

それに加えて、ポーリング以外のタイミングでサーバへのリクエストを送信する際にも、そのリクエストにポーリングリクエストを付加して送信します。するとサーバは元々のリクエストに対するレスポンスに加えて、ポーリングへのレスポンスがあればそれも一緒に返します。(このように抱き合わせで送信することを指してピギーバックと呼んでいます)

さて、ポーリング+ピギーバッキングの設定例です。

引き続き BlazeDS を使ったサーバからのプッシュ機能の設定のご紹介です。

2.ストリーミングチャネルの使用 (使用するチャネル: StreamingAMFChannel)

この方法では、クライアントが HTTP リクエストをサーバに送ってクライアント・サーバ間の接続を確立すると、サーバはその接続をデータプッシュ専用のチャネルとして張りっぱなしにします。サーバからのデータは HTTP 1.1 の Transfer-Encoding: chunked を使って送信されます。(そのため HTTP 1.0 クライアントはこの方法が使えません)

ロングポーリングではサーバがデータをプッシュする度にクライアントは新しいポーリングリクエストを送りなおす必要がありましたが、ストリーミングチャネルでは一度リクエストが送られると後はサーバからのプッシュのみ繰り返しになります。ポーリングによるオーバヘッドが無いことや、より遅延の少ないデータ配信が可能であることはこの方法の利点と考えられるでしょう。

下はストリーミングチャネルの設定例です。

Flex 3 と一緒に BlazeDS がオープンソースプロジェクトとしてリリースされました。BlazeDS は RPC とサーバからのプッシュを実現するためのサーバ側のテクノロジーです。クライアント側は Flex 3 のライブラリを使用します。

BlazeDS のプロジェクトサイト(http://opensource.adobe.com/wiki/display/blazeds/BlazeDS) には GNU LGPL 下で turnkey (Tomcat 付き構成済みバイナリ)、バイナリ、ソースの 3 種類のリリースバージョンが公開されています。

また、Adobe のバグ管理サイトにも BlazeDS 用のバグデータベースが追加されました。(http://bugs.adobe.com/blazeds/) 例によって、日本語表示を選択することが可能です。

BlazeDS と Flex (もしくは AIR) アプリケーションの接続にはチャネルの指定が必要です。RPC の利用には LCDS でもおなじみの AMFChannel または HTTPChannel 等を使用しますが、サーバからのプッシュにはこれらに加えて StreamingAMFChannel やStreamingHTTPChannel 等が使用できます。

(チャネル名に含まれる AMF と HTTP による違いは送信するデータフォーマットがバイナリ形式かどうかだけなので、この記事では AMF のみ取り扱います)

さて、BlazeDS でのサーバからのプッシュの実現は、3 種類の方法から選択することができます。以下、それぞれの特徴について簡単に説明します。

BlazeDS のリリースキャンディデート (重要なバグフィックス以外はほぼそのままリリースされる予定のバージョン) が公開されました。(BlazeDS@Labs) Flash 用のクライアントライブラリが提供されないようなのがちょっと残念ですが、Flex 3 と Ajax からは直ぐに使えるようになっています。コード、サンプル、およびドキュメントのダウンロードはこちらから。(Adobe ID が必要です)

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261