TOP
>
システム開発
> Subscriberの作成と登録
Nexaweb Studioで手軽にリッチクライアントアプリケーション開発
第5回:Nexaweb StudioでHelloWorldを表示させる
著者:
チェンジビジョン 岩永 寿来、豆蔵 長谷川 裕一
2007/6/28
前のページ
1
2
3
4
Subscriberの作成と登録
次にメッセージを購読するSubscriberを作成しよう。SubscriberはMessageListenerクラスを継承してリスト8のように作成する。
リスト8-(1)のコンストラクタでXMLの要素をあらわすElementを引き渡している。これはSubscriberが受け取ったメッセージを反映させるNXML上のUI部品だ。つまりリスト8のRecommendMessageListerクラスは、コンストラクタで渡されたUI部品にメッセージを反映させているのである。
リスト8:クライアント側でのメッセージの購読
(画像をクリックすると別ウィンドウに拡大図を表示します)
リスト8-(2)のonMessageメソッドは、MessageListenerクラスで定義されているメッセージを受け取ったときに呼び出されるメソッドである。PublisherはSerialize可能なオブジェクトやXMLの要素をあらわすElementなどをメッセージとして送信できる。MessageListenerクラスではPublisherが送信したメッセージの型ごとにメッセージを受け取れるメソッドが定義されており、今回PublisherはメッセージをString型で配信しているので第2引数がString型のonMessageメソッドを利用している。
受け取ったメッセージをUI部品のテキスト属性にセットすることで、配信されたメッセージを画面上に表示している(リスト8-(3))。
では次にリスト8のRecommendMessageListenerクラスをSubscriberとして登録してみよう。今回はメニュー画面(index.nxml)が生成されたときにMCOを呼び出し、MCOからSubscriberを登録している。
メニュー画面では、リスト9-(2)のようにメニュー画面が生成されたときに発生するイベントonCreateで、リスト9-(1)で定義したMessageMcoのstartSubscribeメソッドを呼び出させている。このとき「startSubscribe」メソッドの引数にSubscriberが受け取ったメッセージを表示するUI部品として、リスト9-(3)で定義したlblMessageというid属性をもつラベルを渡している。
MessageMcoではNetServiceクラスのsubscribeメソッドを、受け取りたい(購読したい)メッセージのトピックと、メッセージを受け取ったときに呼び出すRecommendMessageListenerクラスを引数で指定して呼び出している(リスト10-(1))。
リスト9:メニュー画面
(画像をクリックすると別ウィンドウに拡大図を表示します)
リスト10:Subscriberの登録
(画像をクリックすると別ウィンドウに拡大図を表示します)
nexaweb-client.xmlの設定を変更する
PublisherとSubscriberを作成し終えたら、WEB-INF/nexaweb-client.xmlにサーバ側からのメッセージを受け取れるよう、リスト11-(1)のようにestablish-push-connection-on-startupタグをtrueに設定する。
リスト11:nexaweb-client.xml
(画像をクリックすると別ウィンドウに拡大図を表示します)
これでPub/Subによるメッセージ通信は完了となる。Tomcatを起動してメニュー画面を表示してみると、お勧めのメニューの紹介が2秒ごとに表示されるはずだ。
まとめ
駆け足であったが、この連載を通じてNexawebでのアプリケーション作成の方法を紹介してきた。Nexawebには他のJavaライブラリが提供するチャートをNexawebで表示させる機能など、様々な強力な機能が多く備わっている。連載で紹介したデータバインドやメッセージングの機能なども、まだまだ説明し切れていない点がある。
Nexawebにはいくつもの利点があるのだが、クライアント/サーバどちらのモジュールもJavaで記述できる点をはじめ、MVCフレームワークなどとの連携のしやすさや画面をJSPと組み合わせて記述できるなど、一般的なWebアプリケーションで培った経験を活かせるなどといった点は非常に優れていることは理解してもらえたはずだ。
ただし、ある機能を実現する方法がいくつも用意されすぎている点は、開発者にどの機能を利用すればよいのか混乱させてしまうかもしれない。またクライアント側で発生したエラーに対して与えられる情報が少ないため、デバッグしづらい点も欠点といえるだろう。
貴方もぜひ一度Nexawebが実現するリッチクライアントアプリケーションのすごさや開発のしやすさを体験してほしい。
前のページ
1
2
3
4
著者プロフィール
株式会社チェンジビジョン 岩永 寿来
モデリングツールJUDEを開発しているチェンジビジョンで、ソフトウェア開発プロジェクトの見える化を支援するTRICHORDを開発している。最近は2DやJOGLなど3D技術に興味があり、クールなUIやエフェクトを日々探求している。共著として「Spring入門(技術評論社)」、「Spring2.0入門(技術評論社)」。
著者プロフィール
株式会社豆蔵 長谷川 裕一
XMLの技術開発やCORBA、EJBを使用したシステム開発などを経て、現在はアジャイル開発プロセスの導入から工学的なソフトウエアプロセスの策定、オープンソースプロダクトに関するコンサルタント、アーキテクトとして常に第一線で活躍。共著として「プログラムの育てかた 現場で使えるリファクタリング(ソフトバンク)」、「Spring入門(技術評論社)」。
INDEX
第5回:Nexaweb StudioでHelloWorldを表示させる
MCOによるクライアント側での情報保持
サーバ側で画面遷移を制御する
メッセージング
Subscriberの作成と登録