サーバとの通信 - 下準備(Flash Remoting編) -
めでたくサーバー側のデータ永続化の下準備が出来た所で、次にFlashクライアントと通信する専用クラス・MessageServiceクラスを作りましょう。
図にするとこのようなイメージです。分かりにくくてすんません。
ようは、あまりサーバー側の処理と言う事を意識しないでプログラミングできると言う事です。サーバ/クライアント間の通信はFlexがやってくれますし、データベースへのアクセスはCayenneにお任せしちゃおうと言う趣旨です。したがって、MessageServiceに実装するコードは非常にすっきりします。
Javaのソースディレクトリはこのようなファイル構成になりました。
MessageServiceオブジェクトはServletAPIなどに依存しない、プレーンなオブジェクトにしたいと思います。パッケージはbbs.serviceとしました。
実装したい機能をリストアップしてみます。
- 投稿されたメッセージの概要リストを取得する。
- 選択されたメッセージの詳細を取得する。
- 新規メッセージを投稿する(新規スレッドを立てる)
- 投稿されたメッセージに返信する(レスを付ける)
- 不要なメッセージを削除する
似たような実装を前回のTapestryの時にも行いましが、残念ながら同じものが使える訳ではありません。
Tapestryの時はページコンポーネントの中に直接ロジックを記述していました。もちろんこれはオススメ出来ません。
今回はMessageServiceクラスに全ての機能を集約し、しかもサーバを動かしていなくてもテストできるような形で実装したいと思います。
以上をふまえて、このようなソースを書いてみました。
MessageService.java
package bbs.service; import java.util.*; import bbs.data.Message; /** * 掲示板サービスクラス * * @author toolkit * @version $Revision$ */ public class MessageService { public MessageService() { super(); } /** * 投稿された全てのメッセージの概要リストをXMLにしたものを取得します。 */ public String getSummaryListXML() throws Exception { return null; } /** * PrimaryKeyにより該当するメッセージオブジェクトを返します。 */ public Message getMessageByPk(int pk) { return null; } /** * 新規メッセージを投稿します */ public Message insertNewMessage(Message tempMessage) { return null; } /** * parentMessageに返信するメッセージを投稿します。 */ public Message insertResMessage(int parentPk, Message res) { return null; } /** * PrimaryKeyにより該当するメッセージオブジェクトを削除します。 */ public void deleteMessageByPk(int pk) throws Exception { } }
一部、なぞの返り値があり、不審に思われる人もいるかも知れません(笑)
それはFlexへの理解が足りていないためにショーガナク回避した所であります。
理由は後日明かされます・・・
次は実装に移りたいと思います。