« 「JAMES」+「MySQL」 データベース設定編 | メイン | (メモ) Google Calendar on Blog »

「JAMES」+「MySQL」 "mailet"実装編

  はてなブックマークに追加 このエントリを livedoor クリップへ追加

メールを送ってユーザ登録をするメールアプリケーションを作成します。

これから開発するメールアプリケーションは、「rigster@loclhost」にメールを送信すると、送信者のメールアドレスがデータベースに登録されるといものです。


実際の作業は、次の3つです。

(1)データベース利用するmailetのスーパークラス(抽象クラス)「DBMailet」を実装する

(2)ユーザ登録を行うクラス「Registration」を実装する

(3)「JAMES」に「Registration」クラスをmailetとして登録する


では、それぞれの内容を順を追って紹介します。

(1)データベース利用するmailetのスーパークラス(抽象クラス)「DBMailet」を実装する

○「DBMailet.java」


(注)
  37行目のコードが多くのサンプルで、「ComponentManager」を利用するようになっていますが、
  最新版?では、「ServiceManager」を利用するようです。

    (参考)「http://marc.info/?l=james-dev&m=111659694502473&w=2
  
  「ComponentManager」を利用すると、実行時に"キャストできません"というエラーが出ました。
  「ComponentManager」が非推奨のクラスになったためだと思われます。
  詳しくは、「Apache Excalibur API」のドキュメントを参照ください。


(2)ユーザ登録を行うクラス「Registration」を実装する

○「Registration.java」


(3)「JAMES」に「Registration」クラスをmailetとして登録する

「JAMES_HOME/apps/james/SAR-INF/config.xml」に次の記述を追加します。

  <mailet match="RecipientIs=register@localhost" class="Registration">
    <datasource>registration</datasource>
    <table>users</table>
  </mailet>

"matcher"には既存の「RecipientIs」を利用しています。
利用するデータソース(データベース)として、「registration」を指定しています。
使うテーブルとして、「users」を指定しています。

データベースの設定については、「「JAMES」+「MySQL」 データベース設定編」をご覧ください。



メールをregister@localhostへ送るとアドレスがデータベースに登録されます。

データベースの内容を確認するには、「MySQL Command Line Client」で、

  use james;
  select * from users;

としてください。

+----+--------------------+---------------------+
|  id | address | registration_date |
+----+--------------------+---------------------+
| 1 | kazuhiro@localhost | 2007-07-02 04:04:25 |
+----+--------------------+---------------------+

のように表示されます。
表示が崩れてますがこんな感じです。


p.s.
  ”「JAMES」さん、ドキュメントはしっかり書きましょうよ(TT)”って感じです。

Ads BOARD








最近のエントリーとその関連エントリー

トラックバック

このエントリーのトラックバックURL:
http://kazuhiro.ty.land.to/blog/mt-tb.cgi/309

  Map