今回から、Jettyを使ってWebSocketの実装例を説明していきます。
なお、この連載では、開発に以下の環境を使用します。
- Mac OS X 10.5
- JavaVM 1.6
- Eclipse 3.5.1[1]
EclipseはNLpackで日本語化[2]しています。また、Eclipseには、m2eclipseプラグイン[3]がインストールされています。今回の内容は、EclipseとMavenに慣れている方を想定していますが、必要だと思われるところは掘り下げて説明します。そして最終的には、サーバ側はServletを作成しデプロイするのではなく、デスクトップアプリケーションとして動作するようにしたいと思います[4]。
Jettyについて
今回使用するJettyは、Javaで作成されたウェブサーバです。
以前は、codehausで公開されていましたが、最新のJetty7以降はEclipse Foundationで公開されています。しかし、ネット上でJettyの事を調べてもバージョンが6のことが多く、Jetty7の情報が検索結果の上位にあまり上がってきません。JettyでWebSocketを利用するにはバージョン7以上が必須ですが、Jetty7で削除されたメソッドもありますので注意してください。
また、Jetty6のライセンスはApache License 2.0でしたが、Jetty7のライセンスはApache 2.0 LicenseとEclipse Public License 1.0のデュアルライセンスになっています。
Mavenプロジェクトの作成
それでは、Eclipseを起動してください。
「ファイル」→「新規」→「その他...」を選択してダイアログを表示し、「Maven」→「Maven Project」を選択し「次へ」をクリックします。
単純なプロジェクトを作成するために、「Create a simple project(skip archetype selection)」をチェックし、「次へ」をクリックします。
「Artifact」の「Group Id」と「Artifact Id」にはそれぞれ「WebSocketChat」と入力し、「完了」をクリックします。
これでMavenプロジェクトが生成されました。
POMファイルの編集
Mavenにおけるプロジェクト管理は、POMファイルを通じて行ないます。POMは「Project Object Model」の略で、POMファイルには、Mavenが管理するプロジェクト名やバージョン、ライブラリの依存関係等を記述していきます。
POMファイルの実体はpom.xmlというXMLファイルで、Mavenプロジェクトを生成した時に自動的に作成されます。「プロジェクト・エクスプローラー」から、「WebSocketChat」を展開し、「pom.xml」をダブルクリックします。pom.xmlが「Maven POM Editor」上に表示されます。
ここでは、POMファイルを直接編集していきますので、「Maven POM Editor」の下のタブから「pom.xml」を選択し、ソースを表示させます。
今回必要なライブラリ(MavenではDependencyと読んでいます)は、「org.eclipse.jetty:jetty-webapp」と「org.eclipse.jetty:jetty-websocket」です。
JettyがWebSocketに対応したのは7.0.1.v20091125以降です。ここでは、原稿執筆時で最新バージョンである7.1.4.v20100610のJettyを使用します。同時に「maven-compiler-plugin」の設定を行ない、JavaVMのバージョンや文字エンコード等をEclipseに通知します。
pom.xmlを以下のように書き換えてください。
Mavanが正常に動作していれば、このpom.xmlを保存すると同時に、Jettyのダウンロード[5]がはじまります[6]。
さて、プロジェクトのコンパイル時に使用されるJavaVMのバージョンを1.6に指定しましたが、このままではEclipseに反映されません。プロジェクト・エクスプローラー内の「WebSocketChat」プロジェクトを右クリックしコンテキストメニューを表示し、「Maven」→「Update Project Configuration」を選択すると、変更したPOMファイルの内容がEclipseの設定に反映されます。
「Maven POM Editor」の「Dependency Graph」タブを選択すると、Mavenを使って読み込んだパッケージの依存関係を見ることができます。
次回予告
次回は、WebSocketのサーバ側の実装を解説したいと思います。