- - PR -
tomcatの仮想エイリアス設定(server.xml)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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 ] |
|
投稿日時: 2008-05-10 16:41
お疲れ様です。
普通にTomcatが稼働している環境であれば、Tomcatのディレクトリ配下のwebapps配下に、warファイルを入れるか、サーブレットが動作する環境(web.xmlなど)を入れてあげれば、server.xmlには何も記述なしで動作するはずですが、試してみましたか? 導入したいアプリケーションの配置場所をTomcatのWebapps配下にしたくなければ、Server.xmlに"Context path"を追記する必要があると思いますが・・・。 |
|
投稿日時: 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サーブレットが動作するはずなのですが、だめです。 |
|
投稿日時: 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