Tomcatへのアプリケーションの配備(Deployment)

 

 


 


Tomcatへのアプリケーションの配備(Deployment

 

レストランのアプリケーションを、試験環境から実際のTomcatの環境に配置してみよう。今回のアプリケーションは次のクラスで構成されている。

classファイル名

RestaurantMaster.class

RestaurantChef.class

RestaurantWaitress.class

RestaurantMenu.class

RestaurantMenuItem.class

RestaurantMenuBusyFlag.class

 

これらのファイルはサーブレット仕様書(2.2版)の9章に準拠して、次のディレクトリに置かれる。

tomcatHome\webapps\RestaurantCresc\WEB-INF\classes\

つまり、各アプリケーションはtomcatHome\webapps\ディレクトリ内に置かれ、この場合はtomcatHome\webapps\RestaurantCresc\がこのアプリケーションのホームディレクトリである。これはまたドキュメント・ルート(document root)とも呼ばれ、index.htmlファイルなどスタティックなドキュメントが置かれる。このディレクトリにWEB-INFという特別なディレクトリがあり、そのアプリケーションに関する殆どがここに収容される。

\WEB-INF\web.xml

導入記述ファイル

\WEB-INF\classes\*

サーブレットやユーティリティのクラスで、エンジンのクラスローダがここからロードする

\WEB-INF\lib\*.jar

Javaアーカイブ・ファイルを収容。サーブレット、Beans、等のクラスを含む。このファイルは、エンジンのアプリケーション・ローダがロードして展開する。

 

それではまずエクスプローラを使って、tomcatHomeRestaurantCrescというディレクトリを作り、更にその下にWEB-INFWEB-INFの下にclassesというディレクトリを作ろう。次にclassesディレクトリに皆さんのツールを使って上記クラスファイルをエクスポートしよう。

 

次にディレクトリ上のサーブレットと要求パスとのマッピングをとらなければならない。最初にコンテキストのパスを「/RstaurantCresc」としよう。

パタン(pattern)

サーブレット(servlet)

/Dinner

RestaurantWaitress

/Master

RestaurantMaster

/Chef

RestaurantChef

 

そうするとweb.xmlファイルは次のようになる。

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<!DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

    "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

 

<web-app>

    <servlet>

        <servlet-name>

            Waitress

        </servlet-name>

        <servlet-class>

            RestaurantWaitress

        </servlet-class>

    </servlet>

    <servlet>

        <servlet-name>

            Chef

        </servlet-name>

        <servlet-class>

            RestaurantChef

        </servlet-class>

    </servlet>

    <servlet>

        <servlet-name>

            Master

        </servlet-name>

        <servlet-class>

            RestaurantMaster

        </servlet-class>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>

            Waitress

        </servlet-name>

        <url-pattern>

            /Dinner

        </url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>

            Chef

        </servlet-name>

        <url-pattern>

            /Chef

        </url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>

            Master

        </servlet-name>

        <url-pattern>

            /Master

        </url-pattern>

    </servlet-mapping>

</web-app>

 

これでこのアプリケーションの配備は終わりである。ディレクトリとマッピングについてお解り頂けたと思う。

 

なおこのドキュメント・ルートに次のようなindex.htmlファイルを置いておくと、http://localhost:8080/RestaurantCrescと入力するだけでウェイトレスのサーブレットが呼び出される。

<HTML><HEAD><META HTTP-EQUIV="refresh" CONTENT="0; URL=/RestaurantCresc/Dinner"></HED></HTML>

 

こうすると、3つのサーブレットは次のようなURLから呼び出せるはずである。

サーブレット

URL

RestaurantChef

http://localhost:8080/RestaurantCresc/Chef

http://127.0.0.1:8080/RestaurantCresc/Chef

http://localhost:8080/RestaurantCresc/servlet/Chef

http://127.0.0.1:8080/RestaurantCresc/servlet/Chef

RestaurantMaster

http://localhost:8080/RestaurantCresc/Master

http://127.0.0.1:8080/RestaurantCresc/Master

http://localhost:8080/RestaurantCresc/servlet/Master

http://127.0.0.1:8080/RestaurantCresc/servlet/Master

RestaurantWaitress

http://localhost:8080/RestaurantCresc

http://localhost:8080/RestaurantCresc/

http://127.0.0.1:8080/RestaurantCresc

http://127.0.0.1:8080/RestaurantCresc/

http://localhost:8080/RestaurantCresc/Dinner

http://127.0.0.1:8080/RestaurantCresc/Dinner

http://localhost:8080/RestaurantCresc/servlet/Dinner

http://127.0.0.1:8080/RestaurantCresc/servlet/Dinner

なお、127.0.0.1というプライベート・ループバック・アドレスは、プライベート・アドレスのクラスによって異なる。/servletというパス(プレフィックス)が追加されても同じサーブレットがアクセスされるのは、エンジンの設定ファイル(server.xml)に次のような要求インターセプタの記述があり、これをそのまま活かしているためである(詳細は添付資料参照のこと)。

 <RequestInterceptor

   className="org.apache.tomcat.request.InvokerInterceptor"

   debug="0"

   prefix="/servlet/"/>

RstaurantCrescだけでRestaurantWaitressが呼び出されるのは、index.htmlファイルで再ロードさせているからである。

 

 

前節     目次     次節