- PR -

tomcatの仮想エイリアス設定(server.xml)

1
投稿者投稿内容
GOGO
会議室デビュー日: 2008/04/05
投稿数: 6
投稿日時: 2008-05-10 05:15
vine linux3.2
j2sdk1.4.2_17
apache-tomcat-4.1.37 (apacheとはまだ連動させていません)
上記の環境です

設定参考URL 
http://www.miloweb.net/tomcat.html

------------------------[質問内容]--------------------------------
tomcatでの呼び出しURLを仮想エイリアスに変更しても
仮想エイリアスのURLでアクセスしてもサーブレットが動作しません。
http://サーバのアドレス:8080/examples/servlet/***(クラスファイル)は動作します
http://サーバのアドレス:8080/仮想エイリアス/servlet/***(クラスファイル)が
動作しません。
------------------------[設定内容]--------------------------------
tomcatのインストール先: /usr/local
j2sdkのインストール先: /usr/local
それぞれ、/usr/local に
/usr/local/tomcat (/usr/local/apache-tomcat-4.1.37へのリンク)
/usr/local/jdk (/usr/local/j2sdk1.4.2_17へのリンク)
を作成しています。


# /usr/local/tomcat/bin/startup.sh
としてtomcatを起動させ

ブラウザから
http://サーバのアドレス:8080/examples/servlet/HelloWorldExample にアクセス。
サーブレットが動作し、WEBページに 「Hello World!」と表示される。

呼び出しURLを http://サーバのアドレス:8080/myjava/servlet/HelloWorld
に仮想エイリアスを「myjava」と名前を変更するため、
# mkdir /usr/local/tomcat/webapps/mayjava
# mkdir /usr/local/tomcat/webapps/mayjava/WEB-INF
# mkdir /usr/local/tomcat/webapps/mayjava/WEB-INF/classes(←HelloWorld.classを配置)
をそれぞれ作成し

# vi /usr/local/tomcat/conf/server.xml
設定を編集。

-------server.xml--------
編集箇所(追加)
<Context path="/myjava"
docBase="myjava" ←絶対パスにしてもだめ
reloadable="true"
crossContext="true">
</Context>
--------------------------

その後
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh で
tomcatを再起動しまして
http://サーバのアドレス:8080/myjava/servlet/HelloWorld にアクセスすると

エラーページ
「HTTP Status 404 - /myjava/servlet/HelloWorld」
description The requested resource (/myjava/servlet/HelloWorld) is not available.

が表示され、サーブレットが動作していないようなのです。

なおパーミッションは/usr/local/tomcat/webapps以下はすべて
所有権:所有者 root:root 755です。777にしてもだめです。


パーミッションのせいなのか、tomcatのserver.xmlの設定がおかしいのか
分かりません。行き詰って困っています。
どなたかご指示、ご指導よろしくお願い致します。

[ メッセージ編集済み 編集者: GOGO 編集日時 2008-05-10 05:16 ]

[ メッセージ編集済み 編集者: GOGO 編集日時 2008-05-10 05:18 ]

[ メッセージ編集済み 編集者: GOGO 編集日時 2008-05-10 05:19 ]
Dr.Doraemon
ぬし
会議室デビュー日: 2002/03/23
投稿数: 265
投稿日時: 2008-05-10 16:41
お疲れ様です。

普通にTomcatが稼働している環境であれば、Tomcatのディレクトリ配下のwebapps配下に、warファイルを入れるか、サーブレットが動作する環境(web.xmlなど)を入れてあげれば、server.xmlには何も記述なしで動作するはずですが、試してみましたか?

導入したいアプリケーションの配置場所をTomcatのWebapps配下にしたくなければ、Server.xmlに"Context path"を追記する必要があると思いますが・・・。
GOGO
会議室デビュー日: 2008/04/05
投稿数: 6
投稿日時: 2008-05-10 19:05
Dr.Doraemonさん、ご回答ありがとうございます。

長々となりますが、やりたいことはデフォルトでアクセスできる/examplesから
仮想エイリアス/myjavaに変更してもアクセスできるようにしたいです。

>普通にTomcatが稼働している環境であれば、Tomcatのディレクトリ配下のwebapps配下に、warファイルを入れるか、サーブレットが動作する環境(web.xmlなど)を入れてあげれば、server.xmlには何も記述なしで動作するはずですが、試してみましたか?

デフォルトで/usr/local/tomcat/examples/WEB-INF/classesというディレクトリがあり
その中にHelloWorldExample.classというファイルが配置されており、
ブラウザから
http://サーバのアドレス:8080/examples/servlet/HelloWorldExample でアクセスでき
サーブレットが動作し、ページが表示されます。
これはserver.xmlがデフォルトでhttp://サーバのアドレス:8080/examplesを指定すると
物理エイリアスで/usr/local/tomcat/examples/WEB-INF/classesの中に配置されている
ファイルを見にいきなさいとなっているためだと思います。
なので今回は、そのデフォルトの仮想エイリアスの/examplesの部分を
/myjavaにするため
server.xmlの中にContext pathとして仮想エイリアス/myjavaと
物理エイリアス/usr/local/tomcat/webapps/myjava/WEB-INF/classesを
指定してやっています。
これで
http://サーバのアドレス:8080/myajava/servlet/JAVAのクラスファイルの.classを省いた奴 を指定すれば、 
エイリアス/usr/local/tomcat/webapps/myjava/WEB-INF/classesに配置してある
JAVAサーブレットが動作するはずなのですが、だめです。



Dr.Doraemon
ぬし
会議室デビュー日: 2002/03/23
投稿数: 265
投稿日時: 2008-05-11 16:18
お疲れ様です。

ちょっと内容がいまいちわからないのですが、
http://xxx/examples/
http://xxx/myjava/
とやったときに、両方同じコンテンツが出るようにしたいということでしょうか?

もし、そうであれば、Apacheでjkのマウント先を2つ作り、同じ場所をマウントしてあげればいけるような気がするのですが、それではだめなのでしょうか?

もっと簡単な方法を言えば、exampleと全く同じディレクトリとファイルをmyjavaというディレクトリにコピーしても同様の動きをすると思うのですが、それもなしなのでしょうか?

それでもだめというのであれば、ContextPathを定義すれば可能だと思います。
> <Context path="/myjava"
> docBase="myjava" ←絶対パスにしてもだめ
> reloadable="true"
> crossContext="true">
> </Context>
絶対パスにしてもだめと書いていますが、そんなことはないと思います。
記述した場所や設定後Tomcatの再起動を行いましたでしょうか?

どうも、他にも回避法がありそうですし、単純なことで引っかかっているような気が何となくします。焦らずにゆっくりと確認してみてください。
1

スキルアップ/キャリアアップ(JOB@IT)