PGを目指す修行マン

PG修行中・転職活動中の備忘録

サーバー開始に失敗

コンソールくん「重大:子コンテナの開始に失敗しました」

というわけでサーバーエラーでうんともすんとも言わなくなったTomcatさん。

正しくはこのときのプロジェクトに問題があったので、サーバー自体は正しく活動するし他のプロジェクトでなら大丈夫。

Tomcatのバージョン関係なく起こります。というか起こしてます。

ついでにこの後同様の理由でサーブレットへの遷移で404も起こしていました。

 

~解決~

いくつかのクラスでURLが正しく記述されていないことで起こっていました。

例えば./をつけ忘れていたとか。.jspつけていなかったとか。URLは間違っているはずがないとなぜか自信を持って思い込んでいたことがエラーでした。まさにヒューマンエラー!

この後、サーブレットの方はweb.xmlでURL管理することにしました。これまでは新規でサーブレットを作る際にURLパターンも記述していたのですが、やはり一括で確認できるほうが効率がよいので。

備忘録として書き方を残します。以下は例です。

<web-app~>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.stockmanage.userEdit.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
サーブレット名は希望の名前、クラス名はパッケージ名から記述、URLパターンは希望のパス名で。
web.xml書いたら各サーブレットの記述済みアノテーションは削除しておきましょう。
なお、このurlパターン通りにjspにURLを記述したらドツボにはまってしまったのですが、上の例で、/サーブレット名だとlocalhost~/Loginになってしまい、404になります。正しくはlocalhost~/プロジェクト名/Loginでないといけません。jspに記述するときはhref="Login"となるように記述しましょう。(/をつけると直接指定することになってしまうそうです。web.xml関係なくなりますが、./Loginとしてもキチンと実行されます。)
 
本記事は下記を参考にしました。