HOMERSSサイトマッププロフィールお問い合せ

2006年10月 2日

ブログにメール着信数を表示 (Ajax と サーブレット)

java開発で使用しているEclipseに WTP(Web Tools Platform) という Web/J2EEの開発ツールのプラグインをインストールして簡単なWebアプリケーションを作ってみた。
面倒で、煩わしかったメール着信の有無を ブログ上に表示させる ことで、着信確認の為にいちいちメールソフトを起動せずともいいように、また何 処からでも確認できるように、そして時間があれば新たなWebメールの開発をする ために・・・

(システムの仕様)

a) Ajax を使ってページがロードされた時にメールをチェックし、その部分だけ再 表示する。
b) ブログを複雑にしないために、サーブレット側で編集したデーターを送る。
c) pop3サーバーのみに対応し、接続に必要な設定情報はxmlを使う。

(作成手順)

1.Eclipse と WTPプラグインのインストール

Eclipse のサイトにはWTPをオールインワンしたパッケージが置いてあるのでダウン ロードしてインストールすればプラグインする煩わしさが避けられる。zipを展
開 する時に一部のファイルにプロテクトが掛かっているようで、パスワードの要求が 出てくるが、無視(スキップ)して続ければいいようだ。(現時点では: wtp-all-in-one-sdk-R-1.0.2-200604280245-win32.zip)

また、日本語化したい場合は Language Pack をプラグインすればいい。(現時点で は:NLpack1-eclipse-SDK-3.1.1a-win32.zip)

2.Eclipse の設定

特別な設定はもともと必要ないが、、、

Eclipse 起動時に使用される時に使われた JRE バージョン以外のものを 使用するときは、
[ウィンドウ]→[設定]→[Java]→[インストール済みの JRE] から必要なバージョンを [追加] し、デフォルトに設定する。

Webアプリケーションをテストするためのサーバーを設定する。
こ こでは インストールしていた JBoss4.0.2 を Eclipse で使用できるように、 [ウィンドウ]→[設定]→[Server]→[Installed Runtimes] か ら JBoss v4.0 を [Add] し、デフォルトサーバーに設定する。

3.Webアプリケーションのプロジェクトを作成

今回はプロジェクト(wtp-mail) を [ファイル]→[新 規]→[プロジェクト]→[Web]→[Dynamic Web Project] で作成 する。

4.必要なライブラリーをプロジェクトにインストール

ライブラリーのインストールは、プロジェクト名 [wtp-mail]→[WebContent]→[WEB-INF]→[lib] にカット& ペーストすると、[wtp-mail]→[Web App Libraries]に追加されることでク ラスパスが通る。

(ライブラリー/バージョンは現時点の最新版)

いろいろなネット・プロトコルを扱っている・・・
commons-net-1.4.1.jar

いろいろな設定ファイルの取り込みをカバーしてくれる・・・
commons-configuration-1.2.jar
と、このライブラリーが必要とする
commons-collections-3.1.jar
commons-lang-2.1.jar

5.サーブレットを作成

プロジェクトを右クリックして、[新規]→[その 他]→[Web]→[Servlet] で作成する。以下に作成したコードのう ち、POP3サーバーにアクセスして受信メール数を返すメソッドを記述しておきますが、ソースは後述からダウンロードできます。

-----------------------------------------------
private int getNumberOfMail(String host, int port, String user, String  pass) {
int num = -1;

POP3Client p = new POP3Client();
p.setDefaultPort(port);
try {

p.connect(InetAddress.getByName(host));
if (p.isConnected()) {

if (p.login(user, pass)) num = (p.status()).number;
p.disconnect(); ==>(注) 必ず後始末を・・・
}
} catch (Exception e) {

e.printStackTrace();
}

return num;
}
-----------------------------------------------

上記のように、Jakarta Commons を使うと非常にシンプルなコードでPOP3サーバー にアクセスできます。なお、注意書きにもあるように、サーバーへの接続の後始末は必ずするようにしてく ださい。後始末をせずに終了すると、一部のPOP3サーバー では数分間アクセスできなくなるようです。(私が使っているISPではそれでト ラブった)

6.定義ファイルを作成

POP3 サーバーのURL、ポート番号(特別な理由が無い限り 110)、ユーザーアカウ ント、パスワード を記述した XML を プロジェクト名 [wtp-mail]→[WebContent]→[WEB-INF] に作成す る。([WEB-INF] を右クリックして、[新規]→[ファイル]で作成)

(参考事例)
-----------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<pop-definition>
<servers>
<server>
<host>pop.eonet.co.jp</host>
<port>110</port>
<user>tarou</user>
<pass>12345678</pass>
</server>
<server>
<host>mail.robibuta.com</host>
<port>1110</port>
<user>hanako</user>
<pass>12345678</pass>
</server>
</servers>
</pop-definition>
-----------------------------------------------

7.実行してみよう・・・

プロジェクト名[wtp-mail] を右クリックして、[実行]→[Run on Server] で設定しておいた JBoss 配下で作成したサーブレットが起動する。
ブラウザーでアクセス(https://localhost:8080/wtp-mail/NumberOfMailServlet) して動作を確かめる。

サーブレットではhtmlタグ付きのデータを吐き出しているが、ヘッダを出していな いのでブラウザーの状態によって、html表示がされたり、テキストデータとしてそのまま表示されたりする。

8.次に、Ajax を使ってサーブレットと通信し、内容を表示するコードを書く

基本的には html への3箇所の書き加えとなる。当サイトでは Movable Type のブ ログを使っているので、テンプレートのメインページを修正することになる。

a).サーブレットと通信してデーターを受け取るスクリプト

<script language="javascript"><!--
functiongetPage(pageURL) {
xmlhttp = createXMLHttp();
if (xmlhttp)
{
xmlhttp.onreadystatechange = setPageData;
xmlhttp.open('GET', pageURL, true);
xmlhttp.send(null);
} else {
alert("XMLHttpRequestのエ ラー");
}
}

function setPageData()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("mail").innerHTML = xmlhttp.responseText;
}
}

function createXMLHttp()
{
try {
return new ActiveXObject ("Microsoft.XMLHTTP");
} catch(e) {
try {
return new XMLHttpRequest();
} catch(e) {
return null;
}
}

return null;
}
// --></script>

b).表示するコード

<div id="mail"></div>

c).ページがロードされた時にアクセスするコード

<body class="layout-two-column-right" onLoad="getPage('https://www.robibuta.com/wtp-mail/NumberOfMailServlet')">

9.おわりに

一応、これでブログにメール着信数を 表示することができるようになったが、アク セス制御を掛けていないので誰もが知ることができる。しかし、ホームページの トップにアクセス制御を掛けると使い物にならないのでそのままとした。

別段、メール着信数を他人に知られたからといって、どうってことは無いの で・・・

(ダウンロード)

Eclipse のプロジェクト形式でここからダウンロー ドできます。ZIP形式ですので展開のうえ必要なファイルを取り出してくださ い。

投稿者: 管理者 日時: 2006年10月 2日 22:18 | パーマリンク |TOPページへ   ▲画面上へ

トラックバック

このエントリーのトラックバックURL:
https://bit-consul.net/cgi-bin/MT/mt-tb.cgi/97

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)