Eclipse4.3でのServlet開発環境構築:jar依存解決&ローカル動作確認&warビルド
長い間JavaServletでの開発を行っていなかったので、
久しぶりにEclipseでServlet開発環境を構築したところ、
ずいぶん便利になっていたと感じました。
ここでは、
Mavenを利用して、依存するjarの解決とwarのビルド
Tomcatを利用して、ローカルPCでの動作確認
を行う環境を構築する流れを説明します。
MacOSXでの構築の流れですが、Windowsでも同様の流れで構築できるはずです。
Eclipse4.3とTomcatのセットアップ
以下のサイトからeclipseをダウンロードします。
Eclipse
http://www.eclipse.org/downloads/
→Download
→Eclipse IDE for Java EE Developers, 245 MB
ファイル名:eclipse-jee-kepler-SR1-macosx-cocoa-x86_64.tar.gz
以下のサイトからtomcatをダウンロードします。
Apache Tomcat
http://tomcat.apache.org/
→Download - Tomcat6.0
→Binary Distributions - Core zip
ファイル名:apache-tomcat-6.0.37.zip
上記の2ファイルを適当なディレクトリに展開します。
ここでは、
Eclipseをユーザディレクトリの直下に展開
tomcatをEclipseディレクトリの直下に展開、することにします。
Eclipse: /Users/<ユーザ名>/eclipse
tomcat: /Users/<ユーザ名>/eclipse/apache-tomcat-6.0.37
次に、Eclipseを展開したディレクトリにあるeclipseをダブルクリックし起動します。
Workspaceの格納先が聞かれるので、適当なディレクトリを指定します。
ここでは、
Eclipseディレクトリ直下のworkspaceディレクトリを指定することにします。
/Users/<ユーザ名>/eclipse/workspace
Eclipseが起動したらWorkspaceリンクを押下してWorkspaceを開いておきます。
Mavenプロジェクトの作成
Eclipseを起動したら、
File → New → MavenProject メニューを選択すると、
New Maven Projectダイアログが表示されます。
「Next >」を押下します。
ArtifactId「maven-archetype-webapp」を選んで「Next >」を押下します。
GroupIdとArtifactIDを、任意に指定して「Finish」を押下します。
GroupIdにはモジュールが属するグループのID、ArtifactIdモジュールのIDを指定しますが、
ひとまずここでは、
Group Idを、com.takemikami
Artifact Idを、eclipsesample
としておきます。
「Java EE」perspectiveを開いて、PojectExploererを確認すると、
以下のようなプロジェクトが作成されているはずです。
以下のディレクトリが無くビルドエラーになっているので、作成しておきます。
src/main/java
src/test/java
依存するjarの解決
次にサーブレットが利用するjarを追加します。
以下のサイトから利用したいjarを探します。
Maven Repository: Search/Browse/Explore
http://mvnrepository.com
ここでは、Servlet2.5を追加してみることにします。
「servlet」と入力して「Search」すると、
検索結果に「Servlet 2.5」が出てくるので、
詳細を開き、最新版の1.2を選択すると、以下の内容が表示されます。
ここでgroupId, artifactId, versionが確認できます。
次に、Eclipseで作成したプロジェクト配下の「pom.xml」を開きます。
Dependencyタブを選び、Dependenciesの「Add...」ボタンを押下します。
「Select Dependency」ダイアログで先ほど確認した、
groupId, artifactId, versionを入力し「OK」を押下します。
scopeは「provided」にします。
scopeは、以下のルールで指定します。
・compileは、WEB-INF/lib配下に含めたいjarの場合
・providedは、WEB-INF/lib配下に含めないjarの場合
(Servlet2.5はServletEngineに含まれるのでWEB-INF/lib配下に含める必要は無い)
・testは、単体テスト実行時のみ必要なjarの場合
pom.xmlを保存すると、Servlet2.5のjarが自動的にダウンロードされます。
作成したプロジェクトの、
JavaResources → Libraries → Maven Dependencies を開くと、
以下の用に表示されているはずです。
Servlet2.5の場合は依存Jarが無いですが、
依存するJarがある場合は、それらも自動的にダウンロードされます。
Tomcatでの動作確認
次に、ローカルPCでの動作確認用にtomcatを設定します。
Eclipse → 環境設定 メニューを選択し、Preferencesダイアログを開きます。
左側メニューから Server → Runtime Environment を選びます。
「Add...」を押下します。
「Apache Tomcat6」を選び、「Next >」を押下します。
「Tomcat Installation Directory」にtomcatを展開したディレクトリを指定し、
(ここでの説明通りであれば「/Users/<ユーザ名>/eclipse/apache-tomcat-6.0.37」)
「Finish」を押下します。
「OK」を押下して、「Preferences」も閉じます。
次に、Eclipseで作成したプロジェクトのコンテキストメニューから、
Run As → Run On Server を選択します。
Run On Serverダイアログが表示されるので「Finish」を押下します。
しばらくすると、
Eclipse内でブラウザが開き、次のような画面表示されます。
これは「src/main/webapp/index.jsp」の実行結果です。
このファイルを変更して、ブラウザをリロードするとその変更結果が反映されます。
サーブレットの作成
ここまでで、依存Jarの解決と動作確認ができるようになったので、
一つサーブレットを作ってみることにします。
以下2ファイルを作成、編集します。
src/main/java/eclipsesample/HelloServlet.java
package eclipsesample;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("Hello Servlet by Eclipse !!");
}
}
src/main/webapp/WEB-INF/web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>eclipsesample.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
web.xmlを変更したので、tomcatを再起動しておきます。
ServersビューでTomcat v6.0 Serverのコンテキストメニューから、
「Restart」を選択して、tomcatが再起動します。
ブラウザから、
「http://localhost:8080/eclipsesample/hello」
をリクエストすると次のような画面が表示されます。
warファイルのビルド
最後に、ここまでで作成したアプリケーションをwarファイルにまとめます。
作成したプロジェクトのコンテキストメニューから、
Run as → 6.Maven Build ... を選択します。
Goalsに「war:war」を指定して「Run」を押下します。
ビルドが実行され、target配下にwarファイルが作成されます。
Refreshすれば、以下のようにProjectExplorerには表示されます。
後は、このwarファイルを実サーバにアップロードすればOKですね。
開発環境を作るのもずいぶん簡単になったなという感想ですが、
こうやって、手順まとめると結構長い気もしますね。。