- - PR -
致命的: サーブレット EmployeeServlet に例外を割り当てます
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-18 13:56
勉強中で理解できていない部分が沢山ありますが、どうしても致命的なエラーが出てしまってから、Tomcat6が正常に動作しません。
知識不足で、説明等が不十分かもしれませんがご容赦いただきまして、お力をお貸しいただければと思います。 Servletのフィルタ機能を学習するためにWeb.xmlファイルに以下を追加する予定でした。 <<<web.xmlのfilter追加内容>>>============================================ <filter> <filter-name> AuthenticationFilter </filter-name> <filter-class> jspfilter.AuthenticationFilter </filter-class> <init-param> <param-name>loginPage</param-name> <param-value> /view/chap12_webapp/sec04/authenticationLogin.jsp </param-value> </init-param> </filter> <filter-mapping> <filter-name> AuthenticationFilter </filter-name> <url-pattern> /jsp/secret/* </url-pattern> </filter-mapping> ============================================================================= しかしながら、</init-param>の部分を</init-parm>のようにスペルの記述ミスをしてしまいTomcat6を起動させたところ、致命的なエラーが表示されました。 (この時点のエラー内容はわからなくなってしまいました。) Tomcatを停止し、web.xmlを修正し起動しなおしましたが、「以前のエラーのためにコンテキストの起動が失敗しました」と表示されるようになりました。 それ以降はこのエラーが表示されるようになってしまったため、Tomcatのフォルダを削除しインストールしなおしや、web.xmlを新しいファイルにしたりしましたが改善されません。 現在は、web.xmlファイルからfilterの項目をなくしたのですが、web.xmlに登録してあるマッピングパスを使用して、ブラウザに「http://localhost:8080/jspBook/employee」を入力し、employee呼び出すjspの画面がブラウザに本来呼び出されるはずなのですが、同じくマッピングパスで登録しているdaoexerciseを呼び出すためのjspの画面が表示されてしまいます。 <<<web.xmlのservlet登録部分抜粋>>>====================================== <servlet> <servlet-name>CertificationExerciseServlet</servlet-name> <servlet-class>chap09_servlet.sec04.CertificationExerciseServlet</servlet-class> <servlet-name>EmployeeServlet</servlet-name> <servlet-class>chap11_database.sec03.EmployeeServlet</servlet-class> <servlet-name>DaoExerciseServlet</servlet-name> <servlet-class>chap11_database.sec03.DaoExerciseServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CertificationExerciseServlet</servlet-name> <url-pattern>/certificationExerciseServlet</url-pattern> <servlet-name>EmployeeServlet</servlet-name> <url-pattern>/employee</url-pattern> <servlet-name>DaoExerciseServlet</servlet-name> <url-pattern>/daoexercise</url-pattern> </servlet-mapping> ============================================================================== web.xmlよりdaoexercise関連項目をなくした状態で、「http://localhost:8080/jspBook/employee」にて呼びだそうとしても呼び出すことができません。 以下の項目が出てしまいます。 <<<ブラウザのエラー内容>>>============================================== HTTPステータス 500 - -------------------------------------------------------------------------------- type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 javax.servlet.ServletException: サーブレット EmployeeServlet のServlet.init()が例外を投げました org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) java.lang.Thread.run(Thread.java:619) 原因 java.lang.NullPointerException chap11_database.sec03.EmployeeDAO.findAll(EmployeeDAO.java:54) chap11_database.sec03.EmployeeServlet.init(EmployeeServlet.java:13) javax.servlet.GenericServlet.init(GenericServlet.java:212) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) java.lang.Thread.run(Thread.java:619) 注意 原因のすべてのスタックトレースは、Apache Tomcat/6.0.16のログに記録されています =============================================================================== このようになってしまいどのようにすれば、改善できるのか途方にくれてしまっております。 以下が環境となりますので、ご助言をよろしくお願い致します。 <環境> OS:Window XP Professional SP2 JAVA:1.6.0_05-b13 Tomcat:6.0.16 | ||||
|
投稿日時: 2008-04-18 14:57
の部分、つまりEmployeeDAO.javaの54行目でNullPointerExceptionが 発生しているようなので、何がnullなのか調べて対策しましょう。 まずはエラーメッセージを読むこと。 見てのとおり、そのまんま答えが書かれているわけです。 |
1