JavaEE 6 をテキストエディタだけで(1) - Servlet3.0編

いまさらの Java EE 6 について・

NetBeans の Java EE 6 サポートが充実していて楽ちんすぎる
ので、テキストエディタとコンソールでなるべく手動で JavaEE 6 を Step by Step する。


glassfish のインストールと起動手順

今回は glassfish 使う。

  • http://glassfish.java.net/ から glassfish-3.1.2.2-ml.zip を落として適当なディレクトリに配備
  • install-dir/bin/ ディレクトリを PATH 環境変数に追加
  • 以下のコマンドでglassfish起動
asadmin start-domain
    • ドメイン名は省略してるのでデフォルト(domain1)が使われる
    • domain1 の構成ファイルは /glassfish/domains/domain1 に作成される
  • http://localhost:8080/ にアクセスしてデフォルトのウェルカムページを確認
  • 管理コンソールは http://localhost:4848/

  • 停止コマンドは以下
asadmin stop-domain

Mavenでプロジェクトを作成

なるべく手でやるので archetype:create しない。以下のフォルダ構成を作成。


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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>etc9</groupId>
    <artifactId>webapp001</artifactId>
    <version>0.1</version>
    <packaging>war</packaging>

    <name>webapp001</name>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • JavaEE 6 は Java6 以上推奨なので、maven-compiler-plugin を利用(Java7指定にした)


Servlet3.0 は web.xml がオプション扱い。Maven で war 作製する時に web.xml が存在しないと怒られるため、以下のプラグイン設定を追加

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

ついでにソースファイルのEncoding指定をUTF-8に

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>


最終的には以下の 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>etc9</groupId>
    <artifactId>webapp001</artifactId>
    <version>0.1</version>
    <packaging>war</packaging>

    <name>webapp001</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

JSPファイルの作成

src/main/webapp 配下に index.jsp を新規で作成

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

warを作ってデプロイ

以下のコマンドで war に固める

mvn package

target 配下に webapp001-0.1.war ができる


デプロイは glassfish の管理コマンドで作成された war を指定

asadmin deploy target/webapp001-0.1.war


http://localhost:8080/webapp001-0.1/index.jsp にアクセスすると以下が表示される


サーブレットの作成

src/main/java/etc9 配下に SampleServlet.java を作成

package etc9;

import java.io.PrintWriter;
import java.io.IOException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns={"/servlet/SampleServlet"})
public class SampleServlet extends HttpServlet {
    
    public void doGet(HttpServletRequest req,
            HttpServletResponse res) throws IOException {  
        PrintWriter pw = res.getWriter();  
        pw.println("This is Servlet3.0");
    } 
}
  • @WebServlet アノテーションでコンテナに Servlet として登録指示
  • HttpServlet を継承して GET のハンドラ記載
  • これだけで web.xml も無しでサーブレットとなる
mvn package

でwar作成。先ほどデプロイ済みなので、アンデプロイしてから再度デプロイ。

asadmin undeploy webapp001-0.1.war
asadmin deploy target/webapp001-0.1.war


http://localhost:8080/webapp001-0.1/servlet/SampleServlet でアクセスすると


blog1.mammb.com