- - PR -
Servlet.init()の例外が発生
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-30 18:55
tomcat起動時に呼びたいサーブレットである「MainController.java」という
ソースファイルがありまして、web.xmlに<load-on-startup>を追加したのですが、 javax.servlet.ServletException: サーブレット MainController のServlet.init()が例外を投げました org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164) org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:211) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:805) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:696) org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:605) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:677) java.lang.Thread.run(Thread.java:534) このようなエラーが発生してしまいます。EclipseでMainController.javaをコンパイル しましたが、エラーは発生しませんでした。ローカルホストアドレスでアクセスすると このようなエラーとなります。原因お解りの方がおられましたらご教示お願いいたします。 「MainController.javaより抜粋」 public class MainController extends HttpServlet{ public void init() throws ServletException{ ItemCollection collection=new ItemDAO().findAll(); ServletContext application=getServletContext(); application.setAttribute("collection",collection); } init()部分のみ抜粋しました。 「web.xmlより抜粋」 <servlet> <servlet-name>MainController</servlet-name> <servlet-class>ecsite.MainController</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MainController</servlet-name> <url-pattern>/mainController</url-pattern> </servlet-mapping> | ||||
|
投稿日時: 2004-08-30 21:17
出ている例外はServletExceptionですが、そもそもServletExceptionを起こした "根本的な"例外が何かあると思います。 init()メソッド内にログ出力文(System.out.println(...) もしくはお使いのロギングAPIで) を入れてみて、具体的な例外をさぐってはどうでしょう? もしくは、Eclipseを利用されているようなので、Tomcatをリモートデバッグし、 init()内にブレイクポイント置くなどしすればより原因特定しやすいと思います。 リモートデバッグについては、こちらが参考になります。 http://www.eclipsewiki.net/eclipse/?%A5%EA%A5%E2%A1%BC%A5%C8%A5%C7%A5%D0%A5%C3%A5%B0 | ||||
|
投稿日時: 2004-08-31 00:48
ご返答ありがとうございました。問題は解決いたしました。今後、同じようなエラー
が出た方の為に私が行った解決方法を記述しておきます。 Eclipseでtomcatプロジェクトを作成する場合、[File]→[new]→[project]と 進んで新規tomcatプロジェクトを選択するのが一般的な方法だと思うのですが、 この方法で作成した場合、Tomcatフォルダ/conf内のserver.xmlには、 <Context path="/jspapp" reloadable="true" docBase="C:\eclipse\workspace\jspExample" workDir="C:\eclipse\workspace\jspExample\work"/> このような記述が追加されます。ぱっとみたところ何が悪いんだ?と思いますが、 一番最後の /> が悪さの原因でした。ここは、 <Context path="/jspapp" reloadable="true" docBase="C:\eclipse\workspace\jspExample" workDir="C:\eclipse\workspace\jspExample\work"> </Context> としなければ、<load-on-startup>が認識してくれないようです。(タグの記述 的にも間違っていると思うのですが、tomcatはちゃんと起動するので、server.xmlは 合っていると思い込んでいました。) 自動作成機能に頼ってばかりではいけないな、と実感しました。 | ||||
|
投稿日時: 2004-08-31 04:10
タグの記述はどちらでもOKのはずだと思うんですけど。 実際に、Tomcatプラグインで自動生成したやつをいつも使ってますが問題ないですよ。 ちょっと考えにくいバグなので、原因は別にあるんじゃないかと思うんですが、 どうなんでしょう。 | ||||
|
投稿日時: 2004-08-31 14:55
もう一度タグを<Context>〜</Context>から<Context〜</>>に直して実行してみたのですが、やはりエラーが発生しました。
私はデータベースの接続の際にデータソースを利用していて、server.xmlに<Resource>タグを追記する必要があるのですが、この<Resource>タグを<Context>〜<Context>内に記述しなければならないようなのです。 本文の中でデータベース使っていますと書き込むのを忘れていました 数々のご指摘ありがとうございます。 | ||||
|
投稿日時: 2004-09-01 12:20
ResourceLink 要素だと、どうでしょうか。 あと、<Context ...... (改行) /> とか書き方を変えてみるとか。 ひょっとすると Tomcat5 or Digester のバグ ? バグレポートを調べてみると良いかもしれません。 | ||||
1
