スポンサーリンク

mvn-jetty-pluginによるServlet Webアプリケーション

スポンサーリンク

MavenによるWeb Applicationの作成

上記のarchetypeを選択することでWebアプリケーションに必要なフォルダ類を一括して作成することが可能です.なお,src以下についてはjavaのパッケージが容易されていないため,src/main/javaを作製します.

なお,この時に作成したJavaファイルがIntelijにおいてJavaファイルとして認識されない場合は,フォルダの設定を以下でSource Directoryに変更する必要があります

pluginにjetty,dependencyにjavaxを追加します.作成場所はplugins,dependencies内です.それぞれ正しく移動させてください.

        <plugin>
          <groupId>org.mortbay.jetty</groupId>
          <artifactId>maven-jetty-plugin</artifactId>
          <version>6.1.10</version>
          <configuration>
            <scanIntervalSeconds>10</scanIntervalSeconds>
            <connectors>
              <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <port>8080</port>
                <maxIdleTime>60000</maxIdleTime>
              </connector>
            </connectors>
          </configuration>
        </plugin>

     <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
             <version>3.1.0</version>
         </dependency>

mvn installを実行した後に,mvn jetty:runを実行します.これでlocalhost:8080/にアクセスするとHello Worldを表示されます.今後新しいファイルを追加するたびにinstallを実行し直します.

注意事項

mvn jetty:runにおいてはjavax.servlet.annotation.WebServletを認識してくれません.
そのため,以下のようなServletファイルを作製してもそれだけではアクセスできません.

package chapter3;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

@WebServlet(urlPatterns={"/hello"})
public class Hello extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("hello");
writer.println(new Date());
}
}

上記では/{contextpath}/helloでアクセスしても404 Not Foundが返答されると思います.jetty:runでは,web.xmlを正しく設定してやる必要があります.Hello.javaがsrc/main/java/Hello.javaに位置している場合で表記します.

<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
</web-app>

この後に再度jetty:runを実行すれば,localhost:8080/helloでアクセスすることが可能です.自分はここに中々気づけず時間を浪費してしまったので,誰かの助けになれば幸いです.

公式ドキュメントは以下に用意されています.ご覧ください.

Using Maven
タイトルとURLをコピーしました