Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

OSによってTomcatの挙動

CentOS5とWindowsXP上で問題なく動作するサーブレットプログラムがあるのですが、それをSuSE Linux Enterprise 10 SP2で動作させようとしても動作しません。

HTTPステータス 404 The requested resource (/***) is not available.
になります。

WindowsXP、WindowsServer2003(R2)、CentOS5においては完全に動作しています。
しかし、SuSEで動かすと最初の起動のJSPのページは表示できるのですが、そこであるServletに移ろうとすると、HTTPステータス 404になります。


OSによって何か挙動が変わるのでしょうか?

詳細環境は
Apache 2.2.3
Tomcat 5.0.28
Java 1.5.0_12
MySQL 5.0.52
です。

動作する環境があるから、web.xmlが間違っているということはないと思うのですが・・・・
404エラーなのでJavaのプログラムより、Tomcatの何かしらの設定だとは思うのですが。

異なるOSにて動作試験して同症状になったような方おりませんか?
よろしくお願いします。

9

回答

6719

閲覧

9件の回答

評価

0

私エスパーじゃないから
どんな設定しているのかわからないので

クラスパスの区切り文字の問題とか?
環境に依存しているとこを間違えているんじゃないの?
くらいしか言えないわ。

評価

0

CentOS5とSuSE Linuxでは、tomcatの設定には、あまり違いがないと思いますが、

> HTTPステータス 404 The requested resource (/***) is not available.
が出ているなら、パス設定や、ファイルやディレクトリのアクセス権限
も確認してみてください。

後、CentOSでは、SuLinuxを無効にしていて、
SuSELinuxでは、SuLinuxを有効にしてたりするなら、
SuLinuxの設定でtomcatや、webアプリケーションのディレクトリに、
アクセス権限(SuLinux用)の設定が必要だったりしますよね。
こちらも、必要に応じて要確認です。

評価

0

お二方ヒントをありがとうございます。

クラスパスの区切り文字、パス設定や、ファイルやディレクトリのアクセス権限あたり確認してみます。

それにセキュアOSのことは頭に入ってませんでした。

ヒントをありがとうございました。週明けにでも確認させていただきます。

評価

0

とりあえず、SuSEのセキュアOS AppArmorを無効化しても症状は同じでした。

書き忘れてましたが、Tomcatのログにはヒントらしい情報は出力されていないようなのです。
しかし、Tomcatのサンプルページは動作しているようなので、CLASSPATHのミスでもなさそうなのです。

となるとコンテキスト(デフォルトだとwebappディレクトリ以下のそれぞれのフォルダ)の設定でしょうか?

このあたりの違いといえば、CentOSではwebapp以下のディレクトリを作ってプログラムをコピーしてやり、Tomcatを再起動すれば、管理ツールで勝手にコンテキストとして自動的に認識しました。

ところが、SuSEでは自動的に認識しなくて、管理ツールで新規にコンテキストを作成して、ようやくJSPページが表示されるようになりました。

このあたりの挙動の違いに何かヒントがありますでしょうか?

評価

0

新規コンテキストの設定間違いもあると思い、
動いているサーバー上(CentOS)での
$tomcat/conf/Catalina/localhost
配下の**.xmlをコピーして使っても、
JSPは表示できますが、サーブレットが404でした。

評価

0

web.xmlだけでなく、server.xmlにも違いが無いかとか確認してますよね?
と言うより、Tomcatをセットアップした人と
質問主(なぜじゃさん)は、同一人物ですか?

まさかとは思いますが、InvokerServletを使おうとかしてませんよね?
servletを使用する時は、web.xmlにサーブレットマッピングを記述する必要がある
と思いますよ。

評価

0

やんちさん。
ありがとうございます。
同一人物です。ただしTomcatをそんなに知っているわけではないです。

CentOSやWindowsでは、$tomcat/conf/server.xmlもいじらず、$tomcat/conf/Catalina/localhost配下のコンテキスト.xmlも勝手に生成され、なんとなく設定したら動いていたということになると思います。

コンテキスト/WEB-INF/web.xmlは、CentOSやWindowsでは問題なく動作しているため、サーブレットマッピングはできていると思っています。

評価

0

あああああああああああ。
皆さん、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい、ごめんなさい。

やっと原因がわかりました。ポカミスもいいところでした。

”WEB-INF”フォルダ名が・・・・・小文字でした。
これを大文字に修正したら、何事もなかったように動き出しました。小文字だったため、web.xmlが見つからなくて、404だったのですね。

皆さん、大変お騒がせして、申し訳ございませんでした。

評価

0

Tomcatの起動時に、「〜を配備しました」とかログが出なかったっけ?
web.xmlがなければ配備されなかったと思うが。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。