「JAMES」+「MySQL」 "mailet"実装編
メールを送ってユーザ登録をするメールアプリケーションを作成します。
これから開発するメールアプリケーションは、「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)”って感じです。