BlazeDS、Jboss、およびJMSを使用したFlexアプリの作成

多くのWeb開発者と同じように、本質的には同じFlashファイルとswfファイルであるFlexについて頭から聞きましたが、基本的には理解できませんでした。 最近、 サーバープッシュと呼ばれるサーバーからクライアントメッセージ送信する興味深い可能性について学びました。 これは、たとえばチャットのように、定期的なAjaxリクエストをせずにリアルタイムでデータを更新できることを意味します(したがって、ストリームの概念)。 アプリケーションの作成とアーキテクチャを説明しようとします。ブラウザ= Flex / JBoss / BlazeDS / JMS。情報はすでにそこから取得できます(Spring / Hibernate / Mysql)。







フレックスまたはフラッシュ?

Flashがベクターグラフィックスに重点を置いている場合、 Flexはインターフェイスに焦点を当てています 。 もちろん、Flashでインターフェイスを作成でき、多くの人がこれを行っており、アクションスクリプトを理解し、xmlで動作しましたが、この領域のFlexは、フレームワークを備えたjavascriptよりもマルチメディアであるフロントエンドアプリケーションに焦点を当てているため、簡単です。プログラミング言語と見なすことができ、変数や関数がなく、一般的には本質的にXMLであることを完全に認識しています。 そして、原則として、広義のプログラムは一連のアクションであり、バーのメニュー、バスのスケジュールなど、何でもそうであると考えることができると主張しました。 Flex言語はXMLであり、 ActionScriptが含まれる場合があります。 この言語は基本的にオープン(オープンソース)であり、同じ名前のmxmlcコンパイラーを使用してmxmlからswfにコンパイルされます。 開発をより便利にするために、Eclipse拡張機能として有料のIDEがあります。AdobeFlex Builder 3を使用すると、J2EE / PHP / .NETテクノロジーを備えたサーバー上の公開または独立したデスクトップAIRアプリケーションとして、アプリケーションをすばやくコンパイルして開くことができます。 Flash / Flexメソッドはjavascriptに関連付けることができます。これにより、アップグレード時にアプリケーションの一部のみを書き換えることができます。



JBossのセットアップ

Jbossサーバーバージョン4.2 最新の安定バージョンをインストールします 。 これを行うには、ダウンロードしたアーカイブからjbossフォルダーをProgram Filesにドラッグアンドドロップします。 JbossはApacheサーバーと比較できますが、本質的に大きく、その一部のみがWeb処理(Javaアプリケーション用の一般的なTomcatサーバー)を担当します。 ご想像のとおり、サーバーアプリケーションはphpではなくjavaになります。apacheとは異なり、jboss / tomcatサーバーは実行中のアプリケーションをすぐにプログラムフォルダーに分割します。 トレーニング仕様によると、アプリケーションフォルダーはjboss / server / default / deployにあります。 そこに行き、myflex.warと言う独自のフォルダーを作成します(同時に.warは必須です)



Flexクライアント

mxmlcコンパイラーを備えたFlex SDKの代わりに、試用期間のある、より視覚的なIDE Adob​​e Flex builder 3をインストールしました。 新しいプロジェクトをウィザードで追加する場合、LiveCycleを削除してmyflex.warフォルダーをポイントする必要がありますが、実際のコードはmxmlとアクションスクリプトの混合形式で記述します(アプリケーションの下部を参照)。 コードの主要部分は、非同期メッセージの転送です。 これを行うために、受信者オブジェクトと送信者オブジェクトが作成されます。 producer = new Producer();

producer.destination = "myTopic";

producer.addEventListener(MessageAckEvent.ACKNOWLEDGE, acknowledgeHandler);

producer.addEventListener(MessageFaultEvent.FAULT, faultHandler);



consumer = new Consumer();

consumer.destination = "myTopic";

consumer.addEventListener(MessageAckEvent.ACKNOWLEDGE, acknowledgeHandler);

consumer.addEventListener(MessageFaultEvent.FAULT, faultHandler);

consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);




デベロッパーセンターで Flexの学習を開始できます。



BlazeDSおよびメッセージングサービス(JMS)

BlazeDSバイナリ配布をダウンロードします 。 これはコンパイルされたJavaライブラリであり、FlexからJMSにメッセージをリダイレクトできます。JMSはJbossサーバーにインストールされます。 ダウンロードしたアーカイブ内で、Winrarでblazeds.warファイルを開き、WEB-INFフォルダーをmyflex.warアプリケーションに解凍します。





確認する

サーバーが実行されていることを確認してください。 アプリケーション内の任意のコンテンツでtext.htmlテストファイルを作成し、bin / run.batファイルからjbossを実行します。 サーバーは30分間起動します。その後、http:// localhost:8080 / myflex / test.htmlを開き、平凡な作業がapacheであることを確認します。 これで、プロジェクトを追加すると、Flex Builderがライトグリーンになり、httpを介して可用性が確認されます。



カスタマイズ

次に、メッセージのリダイレクトを構成する必要があります。

これを行うには、5つの構成ファイルを変更する必要があります。
  1. jboss / server / default / deploy / jms / jbossmq-destinations-service.xml



    このファイルは、現在のデフォルトJMS「メッセージトピック」を担当します。 各トピックには独自のクラス(mbean)があり、jBossバージョンに応じて、バージョン5の場合はorg.jboss.jms.server.destination.TopicService、バージョン4.2.3の場合はorg.jboss.mq.server.jmx.Topicを継承します。 。



    id = myJmsTopicで新しいトピックを作成します
  2. jboss /サーバー/デフォルト/ deploy / myflex.war / WEB-INF / flex / services-config.xml



    他の3つのファイルを含むメインのBlazeDS構成。 id = my-streaming-httpで新しいチャンネルクラスを作成し、mx.messaging.channelsを継承します。 StreamingHTTPChannel



    合計で、 チャネルは形式(HTTP / AMF / RTMP)、プロトコルタイプ(プーリング/ストリーミング)、およびセキュリティレベルで分割されます。 flexアプリケーションからのメッセージがブローカーに送信されます。
  3. jboss /サーバー/デフォルト/ deploy / myflex.war / WEB-INF / flex / messaging-config.xml



    id = myTopicで目的地の方向を作成します

他の2つのファイルproxy-config.xmlおよびremoting-config.xmlで 、デフォルトチャネルをmy-amfからmy-streaming-httpに変更するだけです。 これらのファイルは、通常のhttp要求(RPC)でjavaメソッドを呼び出す役割を果たします



編集

現時点で、mxmlをコンパイルすると、Flex Builderはフォルダー内のどこかで作成したコードを取得し、swfをJbossフォルダーに配置し、ブラウザーでFlashエラーが発生する可能性が高いブラウザーを開きます。[MessagingError message = 'Destination' myTopic '存在しないか、宛先にチャネルが定義されていない(およびアプリケーションがデフォルトのチャネルを定義していない) ']問題は、構成ファイルがコンパイル時に考慮されないことです。 。 これを行うには、flexプロジェクトの設定に移動し、Flexコンパイラの下にフルパスで追加の引数を追加します。

-services "C:\ Program Files \ jboss \ server \ default \ deploy \ myflex.war \ WEB-INF \ flex \ services-config.xml"



デバッグする

コンパイルに成功した後、ハンドラーである内部エラーがまだ発生しました。 ただし、詳細を確認したかったので、Flex Builderでデバッグする絶好の機会があります。別のパースペクティブモードに切り替えるだけで(Eclipseに慣れている人はいますか?)、ブレークポイントを適切な場所に置くと、実行中にすべてがキャッチされます。エンドポイント設定の{context-root}。これがhttp:// localhost:8080 / myflex / messagebroker / streaminghttpで利用可能でなければならないため、ブローカーに到達できない理由です。 これは、Flex IDEプロジェクトの設定でも解決されます3番目の間違いは、ブラウザがswfファイルをキャッシュするときに、更新が表示されないためです。



それから?

先ほど言ったように、BlazeDSを直接経由したメッセージはJMSに送られます。 JMSは基本的にメールボックスとして機能し、メッセージはプロデューサーから1つ以上のコンシューマーへのチャネルを通過します。メッセージ配信アルゴリズムによると、トピックとキューの2種類の「トピック」があります。 JMSは、通常のコンソール/ UI Javaアプリケーションから簡単に接続できます。 オリジナル→




All Articles