Jettyで始めるWebSocket超入門

第2回Jettyのインストール

今回から、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を起動してください。

図1 Eclipseを起動
図1 Eclipseを起動

「ファイル⁠⁠→⁠新規⁠⁠→⁠その他...」を選択してダイアログを表示し、⁠Maven⁠⁠→⁠Maven Project」を選択し「次へ」をクリックします。

図2 新規→その他から、Maven Projectを選択
図2 新規→その他から、Maven Projectを選択

単純なプロジェクトを作成するために、⁠Create a simple project(skip archetype selection)」をチェックし、⁠次へ」をクリックします。

図3 Create a simple projectにチェック
図3 Create a simple projectにチェック

「Artifact」「Group Id」「Artifact Id」にはそれぞれ「WebSocketChat」と入力し、⁠完了」をクリックします。

図4 作成するプロジェクトの属性を入力
図4 作成するプロジェクトの属性を入力

これでMavenプロジェクトが生成されました。

図5 ウィザードによるMavenプロジェクトの生成完了
図5 ウィザードによるMavenプロジェクトの生成完了

POMファイルの編集

Mavenにおけるプロジェクト管理は、POMファイルを通じて行ないます。POMは「Project Object Model」の略で、POMファイルには、Mavenが管理するプロジェクト名やバージョン、ライブラリの依存関係等を記述していきます。

POMファイルの実体はpom.xmlというXMLファイルで、Mavenプロジェクトを生成した時に自動的に作成されます。⁠プロジェクト・エクスプローラー」から、⁠WebSocketChat」を展開し、⁠pom.xml」をダブルクリックします。pom.xmlが「Maven POM Editor」上に表示されます。

図6 Maven POM Editorで表示される、pom.xml
図6 Maven POM Editorで表示される、pom.xml

ここでは、POMファイルを直接編集していきますので、⁠Maven POM Editor」の下のタブから「pom.xml」を選択し、ソースを表示させます。

図7 POMファイルのソースを表示
図7 POMファイルのソースを表示

今回必要なライブラリ(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を以下のように書き換えてください。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>WebSocketChat</groupId>
  <artifactId>WebSocketChat</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
          <encoding>UTF-8</encoding>
          <debug>true</debug>
          <optimize>false</optimize>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>7.1.4.v20100610</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-websocket</artifactId>
      <version>7.1.4.v20100610</version>
    </dependency>
  </dependencies>
</project>

Mavanが正常に動作していれば、このpom.xmlを保存すると同時に、Jettyのダウンロード[5]がはじまります[6]⁠。

さて、プロジェクトのコンパイル時に使用されるJavaVMのバージョンを1.6に指定しましたが、このままではEclipseに反映されません。プロジェクト・エクスプローラー内の「WebSocketChat」プロジェクトを右クリックしコンテキストメニューを表示し、⁠Maven⁠⁠→⁠Update Project Configuration」を選択すると、変更したPOMファイルの内容がEclipseの設定に反映されます。

編注:
上記本文を、2010年7月27日に修正しました。

「Maven POM Editor」「Dependency Graph」タブを選択すると、Mavenを使って読み込んだパッケージの依存関係を見ることができます。

図8 POMファイルで管理されるライブラリの依存関係
図8 POMファイルで管理されるライブラリの依存関係

次回予告

次回は、WebSocketのサーバ側の実装を解説したいと思います。

おすすめ記事

記事・ニュース一覧