ITお絵かき修行

3歩歩いても忘れないために

Apache・Tomcat間のURL連携まとめ(5)

(1)~(4)ではApache-Tomcat間のURL連携に使用する定義のうち、Tomcat側の定義を「web.xml」で行っていたが、Servlet3.0からの機能 Annotation based configuration(以下アノテーション)を利用してみる。

【参考】

http://codezine.jp/article/detail/5920 

→@WebServletアノテーションを使う。

 

【今回の記事のゴール】

ApacheTomcat間のURL連携まとめ(2)で使用したソースを流用して、

クラス名とApacheTomcat間で使用するURLを変更して動く状態にする。

ただしTomcat側の変換定義は「web.xml」でなくアノテーションを使用する。

 

先にweb.xmlを使用した場合とアノテーションを使用した場合を絵で比べてみる。

 

「web.xmlを使用した場合」

f:id:hhhhhskw:20140504172126p:plain

アノテーションを使用した場合」

f:id:hhhhhskw:20140429140350p:plain

 

【編集する資産・手順】

1.[Apache]httpd-proxy.conf(またはhttpd.conf)を編集する。

今回ブラウザに入力するURLは「http://(サーバ名)/webservlet/200/」とする。

ファイル名:httpd-proxy.conf(またはhttpd.conf)

入力内容:

<Location /webservlet/200/>

    ProxyPass ajp://(サーバ名):8009/EchoServlet/WebServlet/1.0/200/

    →(サーバ名)はサーバ内のapacheの定義(httpd.conf)を参照する。だいたい「localhost」。

</Location>

 

 2.サーブレットクラスを用意する。今回用意するクラスは以下の通り。

クラス名:EchoServlet_WebServlet

クラス名に設定するアノテーション:@WebServlet(urlPatterns={"/WebServlet/1.0/200/"})

↑前後の「/」がないと使用する資産の指定位置が変わってしまうので忘れないようにする。自分はハマった。

 

資産をApache・Tomcat間のURL連携まとめ(2)で使用したプロジェクトに含めると以下のようになる。

f:id:hhhhhskw:20140429142924p:plain

 

3.Tomcatの設定は特に変更する必要はない。用意するべきは以下のコンテキストファイルのみ。

ファイル名:EchoServlet.xml

ファイル内容:

<Context path="/EchoServlet" />

 

 4.クライアントのブラウザより「http://(サーバ名)/webservlet/200/」にアクセスする。

→空白のページが表示されればOK。

Apache・Tomcat間のURL連携まとめ(4)のソースを使用した場合は、定数のURLを「http://(サーバ名)/webservlet/200/」へ変更することでアクセスできればOK。
 
アノテーションにURL変換の定義を書いた場合、ソースコード見ないとURL変換のアノテーション設定値が見れなくなる(classファイルになると基本わからなくなる)ので、トラブル時に困るかな、、と思った。少なくとも初心者はまずweb.xmlでの変換順序を知っておくべき。