- PR -

tomcat+apacheでユーザーディレクトリでのサーブレット実行

1
投稿者投稿内容
Candy
会議室デビュー日: 2005/04/19
投稿数: 2
投稿日時: 2005-04-19 15:14
お世話になります。
Java初心者で基本的な質問で申し訳ありません。
現在、JDK5.0及びtomcat5.5.7、jakarta-tomcat-connectors-1.2.8はインストール済で正常に動作しております。
apacheドキュメントルートでもservlet-example/では正常に動作確認しております。
今回ユーザーディレクトリーでもサーブレットを動作させようと思い、
以下のファイルを編集しました。
mod_jk.confに
kMount /admin ajp13
JkMount /admin/* ajp13

JkMount /examples ajp13
JkMount /examples/* ajp13"

JkMount /home/*/public_html/WEB-INF/* ajp13
JkMount /home/*/public_html/*.jsp ajp13

<Location "/WEB-INF/">
   AllowOverride None
   deny from all
</Location>
またhttpd.confに下記の

############JAVA#######################
LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /var/log/httpd/mod_jk.log
JkLogLevel /info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /servlets-examples/* ajp13
JkMount /jsp-examples/* ajp13
include /usr/local/tomcat/conf/mod_jk.conf
######################################
としてtomcat,apacheの順に再起動をしました。
しかし、apacheドキュメントルートではサーブレット、jspともに
正常にどうさしますが、
xxxx.com/~user/WEB-INF/以下のサーブレットは動作しません。
と言いますかページが存在しませんとなります。
ただ、ユーザーディレクトリでもjspは正常に動作します。
申し訳ございませんが、ご教授の程お願い申し上げます。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-04-19 15:27
まず、Apacheを連携させずにTomcatに直接アクセスするのであれば動くのでしょうか。
「WEB-INF以下のサーブレットが動作しない」と書かれているのを見ると、何か勘違いされて
いるように思えるのですが、どのようなURLで呼び出しているのでしょうか。少なくとも
WEB-INF以下のファイルは直接外部から呼び出すことができないのですが。
Candy
会議室デビュー日: 2005/04/19
投稿数: 2
投稿日時: 2005-04-19 16:30
uk様有難うございます。
記述で意味が不明な点がございましたらお許し下さい。
まず、apacheのドキュメントルート
http://www.xxx.net/servlet-example/でのサンプルの動作は正常に動作します。
次に/usr/local/tomcat/webapps/servlet-example以下のファイルを
home/user1/public_html/WEB-INF/以下にコピーすると
Jkmountに指定してある
http://www.xxx.net/~user1/WEB-INF/servlet/サンプルサーブレット
でエラーが表示してしまいます。
apacheと連携しない時でもhttp://www.xxx.net:8080ポートでは動作しました。
また、以前に作成した血圧測定値を表で出力するサーブレットも
/usr/local/tomcat/webapps/servlet-example/classes/以下に配置すると
http://www.xxx.net/servlet-example/サーブレット名で実行できます。
同じファイルを/home/user1/public_html/WEB-INF/classes/以下に配置すると
しかし、http://www.xxx.net/~WEB-INF/サーブレット名では実行できません。
tomcatのドキュメントルートへの配置では動作しますが、ユーザーディレクトリー
では動作しません。
ユーザーディレクトリーへ配置したものを実行するのに何か他に設定が必要なので
しょうか。
宜しくお願い申し上げます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-04-19 17:13
既に指摘されていますが、WEB-INF 以下のリソースに直接アクセスすることはできません。
「基本的に」サーブレットは web.xml にて呼び出すパスを指定しないと起動できません。
クラスをコピーするだけで起動できたのは直にクラスを検索して起動するServletServlet が登録されていたからではないでしょうか。これはちょっとしたテスト用に利用するもので本格的な開発や運用には適しません。
まず、Apache との連携以前のような気がするので Tomcat 単体でちゃんとサーブレットが動作するか確認してみましょう。

[ メッセージ編集済み 編集者: インギ 編集日時 2005-04-19 17:16 ]
1

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