前回までで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プラグインはJ2EE開発のためのプラグインで、以下のような機能を持ちます。
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とは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> |
5.Tomcatの起動確認
以上の作業が終わったら、Tomcatを起動し動作を確認します。 C:\Tomcat4.1\bin\startup.batを実行し、ブラウザからhttp://localhost:8080/へアクセスしてください。「Apache Tomcat/4.1.12」というタイトルのページが表示されればインストールは成功です。
今まで、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をご覧ください。
web.xmlの設定は、いったんメモリ上に取り込まれた文字列をJavaソースに書き出す際の文字エンコーディングの指定です。JSPファイルから文字列を読み込む際の文字エンコーディングも併せて指定する必要があります。そのためには作成する各JSP上に以下のタグを記述する必要があります。
<%@ page language="java" pageEncoding="Windows-31J" |
pageEncodingはJSPから文字列を読み込む際の文字エンコーディングの指定、contentType内のcharset はブラウザに対する文字エンコーディングの指定です。web.xmlでのjavaEncodingの指定と合わせて整理すると、下図のようになります。
lomboz.096.zipファイルを入手しインストールしてください。インストールはファイルを展開し、C:\eclipse\plugins ディレクトリにコピーするだけです。
EclipseでLombozプラグインを使用するために、以下の設定を行います。
LombozプラグインをTomcatと連携させるため、以下の設定を行います。
以上でプラグインの設定は完了です。
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ソースとして生成されます。
いよいよ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ファイルを編集します。Webコンテナを作成すると自動的に生成されるindex.jspを編集してみましょう。
パッケージ・エクスプローラ上のindex.jspを開きます。するとJSPエディタが起動します。この状態ではまだHTMLタグに色が付いている程度です。
現在時刻を表示させるように修正してみましょう。以下のコードを9行目に追加します。
<%=new Date()%>
最初の<を入力した時点で、JSPエディタの機能の1つであるコードアシストによってHTMLタグの一覧が表示されます。
ここでは続けて%を入力します。すると背景色が変わり、スクリプトレット内であることを示してくれます。
最後まで入力し終えると、<%=から%>までの範囲に背景色が付きます。JSP用のタグはHTMLタグとは別の色で区別されています。
保存すると、JSPエディタの左側、パッケージ・エクスプローラ、タスクにエラー情報が出ます。どうやらDateを名前解決できていないようです。
index.jspの2行目に、以下のコードを記述します。
<%@ page import="java.util.Date"%>
[Ctrl]+[space]をキー入力することで、JSPエディタのコードアシスト機能を使用することができます。<%@ まで入力したところ、pageまで入力したところで[Ctrl]+[space]を入力してみてください。その場に応じた候補が表示されます。
コード入力後、再度保存するとDateはjava.util.Dateとして解決され、エラーは消えます。このようにHTMLタグやJSPキーワードのハイライト表示やコードアシスト、保存時のエラー出力、またここでは紹介していませんが、スクリプトレット内のJavaコードにもコードアシストが行われ、JSPの編集作業が快適に行えます。
続いてLombozプラグインからTomcatを起動します。その前にTomcatのserver.xmlを編集してWebアプリケーションを登録する必要があります。
server.xmlの適切な個所(例えば369行目付近)に以下の設定を追加します。
<Context path="/myWeb" |
パッケージ・エクスプローラで「myWeb」を右クリック→「Lomboz J2EE…」→「Debug Server」を選択します。するとTomcatが起動します。コンソールウィンドウ上に標準出力が表示されます。
ブラウザからhttp://localhost:8080/myWeb/にアクセスし、現在の日時が表示されることを確認してください。
余談ですが、Tomcat Launcherプラグイン
(http://www.sysdeo.com/eclipse/tomcatPlugin.html)を使用するとこのserver.xmlの編集をEclipse上のメニューから実行することができます。
LombozプラグインではJSPファイルを直接デバッグ実行することはできません。JSPをコンパイルして生成されたServletのJavaソースを使用してデバッグすることになります。
パッケージ・エクスプローラで「j2src」を右クリック→「最新表示」を選択してください。先ほどアクセスしたindex.jspをコンパイルして生成されたServletソース、index_jsp.javaが読み込まれます。
後はこのindex_jsp.java上でブレーク・ポイントを設定し、Webブラウザ上からアクセスするとEclipse上でデバッグ・パースペクティブに切り替わり、通常のJavaクラスと同様にデバッグ実行することができます。
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.