EclipseでTomcatを使ったJ2EE開発を行うEclipseを使おう!(3)

» 2003年02月14日 00時00分 公開
[金子崇之, 岡本隆史株式会社NTTデータ]

 前回まででEclipseの基本的な使用方法を紹介しました。「私もJava開発にEclipseを活用してみよう!」と思われた方も多いのではないでしょうか。しかしサーバサイドJavaであるJ2EE開発に対して、Eclipse単体では特別な機能はなく、世の中に出回っている多くのアプリケーションサーバとの連携機能もありません。

 しかしEclipseの特徴の1つに「豊富なプラグインによる機能拡張」というのが挙げられます。今回はEclipseのプラグインのうち、Lombozプラグインを使用したWebアプリケーションの開発方法を紹介します。LombozプラグインはTomcat、JBoss、WebLogicに対応しています。今回はServletコンテナとしてTomcatを使用します。

 なお今回の記事は以下のバージョンのソフトウェアで記述しています。原稿執筆時で可能な限り最新版を使用しています。

ソフトウェア バージョン
OS Windows XP
JDK 1.4.1_01
Tomcat 4.1.12
Eclipse 2.0.2
Eclipse SDK Translations 2.0.1
Lombozプラグイン 0.96
Jasper Debug Patch 4.1.12

Lombozプラグインとは

 LombozプラグインはJ2EE開発のためのプラグインで、以下のような機能を持ちます。

  • HTMLタグやJSPキーワードのハイライト表示やコードアシスト、スクリプトレット内のJavaコードアシスト機能を備えたJSPエディタ
  • JSP文法チェック
  • ウィザードによるWebアプリケーション、EJBアプリケーションの作成
  • ウィザードによるEJBテストクライアントの新規作成
  • Web Application aRchive(WAR)ファイルとEJB archive(Jar)ファイルのデプロイ
  • XDoclet(http://xdoclet.sourceforge.net/)を使用したEJBの開発
  • コンテナ(Tomcat、WebLogic、JBoss)上でのデバッグ

 2003年5月現在ではEclipse2.1対応のLomboz2.1_02がhttp://www.objectlearn.com/から、Eclipse2.0.2対応のLomboz0.97がhttp://sourceforge.net/projects/lombozから入手できます。

 今回はEJBの開発に関しては触れません。またLombozプラグインのヘルプファイルはSourceForge(http://sourceforge.net/projects/lomboz)から入手できます。

Tomcatのインストール

 TomcatとはJakartaプロジェクト(http://jakarta.apache.org/)で公開されているServletコンテナのリファレンス実装で、ServletやJSPを動作させることができます。今回はTomcat 4.1.12を使用します。なおTomcatのインストール前にJDKをインストールしておいてください。

1.Tomcatの入手
http://jakarta.apache.org/tomcat/index.htmlから入手してください。今回はWindows環境でのインストーラ付きバイナリ配布のjakarta-tomcat-4.1.12.exeを使用します。

2.環境変数の設定
Tomcat起動時に必要となる環境変数、JAVA_HOMEの値をJDKのインストールディレクトリにします。「マイコンピュータ」を右クリック→「プロパティ」→「詳細設定」タブ→「環境変数」→「システム環境変数」にJAVA_HOMEを設定してください。今回はC:\j2sdk1.4.1_01を指定しました。

3.Tomcatのインストール
jakarta-tomcat-4.1.12.exeを実行します。インストール自体は特に難しくないので割愛します。今回はデフォルトの設定からインストールディレクトリをC:\Tomcat4.1に変更しています。

4.web.xmlの修正
TomcatではJSPをServletソースコードにコンパイルするときデフォルトでは文字コードをUTF-8に指定します。Windows上のEclipse JavaエディタではMS932がデフォルトとなっているため、生成されたServletソースコードをEclipseのJavaエディタで開いたときに文字化けが発生します。そこでC:\Tomcat4.1\conf\web.xmlの158行目に以下の設定を行います。赤字部分を追加してください。

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <init-param>
            <param-name>javaEncoding</param-name>
            <param-value>Windows-31J </param-value>
        </init-param>

        <load-on-startup>3</load-on-startup>
    </servlet>

5.Tomcatの起動確認
以上の作業が終わったら、Tomcatを起動し動作を確認します。 C:\Tomcat4.1\bin\startup.batを実行し、ブラウザからhttp://localhost:8080/へアクセスしてください。「Apache Tomcat/4.1.12」というタイトルのページが表示されればインストールは成功です。

コラム:Windows-31Jの使用

今まで、Windows環境で使うJava(JSP)コードでは、雑誌やWebの紹介記事でShift_JISが使われていたこともあり、殆どのケースでShift_JISを利用していたと思います。ここでエンコーディング名としてWindows-31Jを使う理由は、Shift_JISの扱いが、J2SDK

1.4.1のリリースを境に変更になっているからです。

文字コード
(IANA登録名)
CP932
(Windows-31J)
シフトJIS
(Shift_JIS)
J2SDK 1.4.0以前 Windows-31J(MS932)Shift_JIS SJIS
J2SDK 1.4.1以降 Windows-31J(MS932) Shift_JIS
SJIS

つまり、システムを構築する際に、Shift_JISは使わない方が安全です。将来、J2SDKのバージョンを変更したときに、不具合が出る可能性があります。詳細は、http://www.ingrid.org/java/i18n/encoding/shift_jis.htmlをご覧ください。


コラム:TomcatのJSP文字コードの扱い

web.xmlの設定は、いったんメモリ上に取り込まれた文字列をJavaソースに書き出す際の文字エンコーディングの指定です。JSPファイルから文字列を読み込む際の文字エンコーディングも併せて指定する必要があります。そのためには作成する各JSP上に以下のタグを記述する必要があります。

<%@ page language="java" pageEncoding="Windows-31J" 
contentType="text/html;charset=Windows-31J"
%>

pageEncodingはJSPから文字列を読み込む際の文字エンコーディングの指定、contentType内のcharset はブラウザに対する文字エンコーディングの指定です。web.xmlでのjavaEncodingの指定と合わせて整理すると、下図のようになります。

文字コードの指定 文字コードの指定

Lombozプラグインのインストール

 lomboz.096.zipファイルを入手しインストールしてください。インストールはファイルを展開し、C:\eclipse\plugins ディレクトリにコピーするだけです。

Lombozプラグインの設定

 EclipseでLombozプラグインを使用するために、以下の設定を行います。

  • ツールバーにLomboz用のアイコンを表示
    「ウィンドウ」→「パースペクティブのカスタマイズ」→「その他」を展開→「Lomboz Actions」にチェックを付けます。
  • Tools.jarの場所を指定
    「ウィンドウ」→「設定」→左ペインで「Lomboz」を選択→「JDK Tools.jar」にtools.jarの場所を指定します。今回はC:\j2sdk1.4.1_01\lib\tools.jarを指定しました。
  • フォルダの指定
    「ウィンドウ」→「設定」→左ペインで「Java」を展開→「新規プロジェクト」を選択→「ソースおよび出力ロケーション」を「フォルダー」に設定します。テキストボックスの中は変更しないでください。

 LombozプラグインをTomcatと連携させるため、以下の設定を行います。

  • Tomcatの設定
    「ウィンドウ」→「設定」→左ペインで「Lomboz」を展開→「Application Servers」を選択→「Tomcat」タブを選択します。「Tomcat」タブで以下の設定を行います。
    ・ 「Server Home Directory」:Tomcatのインストールディレクトリ(C:\Tomcat4.1)を指定します。
    ・ 「Version」:Tomcatのバージョンを指定します。「4.1.x」を選択します。

 以上でプラグインの設定は完了です。

Jasperデバッグパッチの適用

 TomcatではJSPファイルからJavaソースファイルを生成する際、Webアプリケーションのルートに配置されたJSPファイルはorg.apache.jspパッケージに属するクラスとしてソースをworkフォルダに生成します。ルート配下のサブフォルダ内のJSPファイルは、Javaソースの出力先はサブフォルダ化されますがパッケージ名は同じなため、生成されたServletソースをEclipseで読み込むとエラーが発生してしまいます。

 Tomcat LauncherのWebサイト(http://www.sysdeo.com/eclipse/tomcatPlugin.html)からJasperデバッグパッチjasperDebugPatchV4.1.12.zipを入手し、解凍したものをC:\Tomcat4.1\common\classesにコピーします。このパッチを当てると、JSPがサブフォルダ(sub)配下にあった場合には、org.apache.jsp.<サブフォルダ(sub)>

というパッケージ名のJavaソースとして生成されます。

画面1 パッチによる効果 画面1 パッチによる効果

J2EEプロジェクトの作成

 いよいよLombozプラグインを使用したWebアプリケーションの開発を始めます。まずはJ2EEプロジェクトを作成します。

1.「ファイル」→「新規」→「プロジェクト」→「Java」を展開→「Lomboz J2EE Wizards」→「Lomboz J2EE Project」を選択→「次へ」をクリック

2.任意のプロジェクト名(今回はj2eePrj)を入力

3.Java設定では「次へ」をクリック

4.「Web Containers」タブを選択→「Add」をクリック→Webコンテナ名(今回はmyWeb)を入力

5.「Servers」タブを選択し→「Type」は「Tomcat」を選択

6.「終了」をクリック
J2EEプロジェクトが作成されます。

 j2eePrjの配下は以下のようなフォルダ、ファイル構成になっています。

src Javaソースを配置
j2src JSPをコンパイルしたServletソースが出力されるフォルダ
myWeb Webコンテナとして作成したフォルダ
myWeb/WEB-INF WARとして必要なweb.xmlファイルだけではなく、Lombozで使用するbuild.xml、servers.xmlも格納
必要なjarファイルのライブラリ登録 servlet.jarとbootstrap.jarが追加

 Lomboz(0.9.6)ではJSPのデバッグ時に必要となるjasper-runtime.jarが追加されません。以下の手順で追加します。

1.パッケージ・エクスプローラ上で「j2eePrj」を右クリック→「プロパティー」→左画面の「Javaのビルド・パス」を選択→「ライブラリー」タブを選択→「変数の追加」をクリック

2. 「TOMCAT4」を選択→「拡張」をクリック→「common/lib/jasper-runtime.jar」を選択→「OK」をクリック

JSPの作成/編集

 JSPエディタを使用しJSPファイルを編集します。Webコンテナを作成すると自動的に生成されるindex.jspを編集してみましょう。

 パッケージ・エクスプローラ上のindex.jspを開きます。するとJSPエディタが起動します。この状態ではまだHTMLタグに色が付いている程度です。

画面2 JSPエディタによるHTMLタグのカラーリング 画面2 JSPエディタによるHTMLタグのカラーリング

 現在時刻を表示させるように修正してみましょう。以下のコードを9行目に追加します。

<%=new Date()%>

 最初の<を入力した時点で、JSPエディタの機能の1つであるコードアシストによってHTMLタグの一覧が表示されます。

画面3 JSPエディタによるHTMLタグコードアシスト 画面3 JSPエディタによるHTMLタグコードアシスト

 ここでは続けて%を入力します。すると背景色が変わり、スクリプトレット内であることを示してくれます。

 最後まで入力し終えると、<%=から%>までの範囲に背景色が付きます。JSP用のタグはHTMLタグとは別の色で区別されています。

画面4 JSPエディタ スクリプトレットのカラーリング 画面4 JSPエディタ スクリプトレットのカラーリング

  保存すると、JSPエディタの左側、パッケージ・エクスプローラ、タスクにエラー情報が出ます。どうやらDateを名前解決できていないようです。

 index.jspの2行目に、以下のコードを記述します。

<%@ page import="java.util.Date"%>

 [Ctrl]+[space]をキー入力することで、JSPエディタのコードアシスト機能を使用することができます。<%@ まで入力したところ、pageまで入力したところで[Ctrl]+[space]を入力してみてください。その場に応じた候補が表示されます。

画面5 JSPエディタ JSPタグのコードアシスト 画面5 JSPエディタ JSPタグのコードアシスト

 コード入力後、再度保存するとDateはjava.util.Dateとして解決され、エラーは消えます。このようにHTMLタグやJSPキーワードのハイライト表示やコードアシスト、保存時のエラー出力、またここでは紹介していませんが、スクリプトレット内のJavaコードにもコードアシストが行われ、JSPの編集作業が快適に行えます。

Eclipse上でのTomcatの実行

 続いてLombozプラグインからTomcatを起動します。その前にTomcatのserver.xmlを編集してWebアプリケーションを登録する必要があります。

 server.xmlの適切な個所(例えば369行目付近)に以下の設定を追加します。

<Context path="/myWeb"
docBase="C:\eclipse\workspace\j2eePrj\myWeb"
workDir="C:\eclipse\workspace\j2eePrj\j2src\org\apache\jsp" />

 パッケージ・エクスプローラで「myWeb」を右クリック→「Lomboz J2EE…」→「Debug Server」を選択します。するとTomcatが起動します。コンソールウィンドウ上に標準出力が表示されます。

 ブラウザからhttp://localhost:8080/myWeb/にアクセスし、現在の日時が表示されることを確認してください。

Tomcat Launcherプラグイン

余談ですが、Tomcat Launcherプラグイン

http://www.sysdeo.com/eclipse/tomcatPlugin.html)を使用するとこのserver.xmlの編集をEclipse上のメニューから実行することができます。


JSPのデバッグ

 LombozプラグインではJSPファイルを直接デバッグ実行することはできません。JSPをコンパイルして生成されたServletのJavaソースを使用してデバッグすることになります。

 パッケージ・エクスプローラで「j2src」を右クリック→「最新表示」を選択してください。先ほどアクセスしたindex.jspをコンパイルして生成されたServletソース、index_jsp.javaが読み込まれます。

 後はこのindex_jsp.java上でブレーク・ポイントを設定し、Webブラウザ上からアクセスするとEclipse上でデバッグ・パースペクティブに切り替わり、通常のJavaクラスと同様にデバッグ実行することができます。

WAR化

 LombozプラグインからTomcatを起動する場合、J2EEプロジェクトのビルド出力フォルダ(今回はC:\Eclipse\workspace\j2eePrj\bin)がクラスパスに追加されます。そのためsrc配下のクラスはEclipse上でビルドされていれば、WEB-INF/classesにクラスがなくてもJSPから使用することができます。

 しかしこのままではEclipse上以外で起動するTomcatにWebアプリケーションを配布できません。そこで完成したWebアプリケーションをWARにするための機能がLombozプラグインには備わっています。

 パッケージ・エクスプローラで、「myWeb」を右クリック→「Lomboz J2EE…」→「Deploy Container」を選択すると、C:\Tomcat4.1\webappsにWARファイル(今回はmyWeb.war)が生成されます。このWARはWEB-INF/classes内にコンパイル済みのクラスが配置されており、このままほかのマシンなどに配布することが可能です。

まとめ

 Lombozプラグインを使用したWebアプリケーションの開発方法について、簡単に説明してきました。今回は紹介しませんでしたが、LombozではXDocletを使用したEJB開発機能があります。またTomcat以外にもWebLogicやJBossに対応しています。

 J2EEに対する特別な機能を持っていないEclipseですが、プラグインにより快適に開発することができます。ここで紹介したLombozプラグインのほかにも、Tomcat LauncherやWebLogicプラグイン、そのほかさまざまなプラグインが続々と公開されています。以下のリスティングサイトから検索することができます。

 数多くあるプラグインの中から自分のお気に入りを見つけ出し、自身の開発環境をどんどん改善していくことができるのもEclipseのメリットであり、楽しみの1つです。

筆者紹介

NTTデータ ビジネス開発事業本部

金子 崇之(かねこ たかゆき)

現在、株式会社NTTデータ ビジネス開発事業本部に所属。技術支援グループとして、J2EEをベースにしたWebシステム開発プロジェクトを対象に、技術サポートを行っている。 特に、性能・信頼性といった方式技術を中心に活動中。

NTTデータ 技術開発本部

岡本 隆史(おかもと たかし)

Debian GNU/Linuxの優れたメンテナンス性と他のディストリビューションを圧倒するパッケージ数に引かれDebianを使い始めたのをきっかけに、Debian プロジェクトの開発者となりJavaサポートの強化を行う。 『Jakartaプロジェクト徹底攻略』(技術評論社)、『WEB+DB PRESS』(技術 評論社)、『Java World』(IDGジャパン)、『JAVA Developer』(ソフトバンクパブリッシング)などで執筆活動を行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。