- PR -

致命的: サーブレット EmployeeServlet に例外を割り当てます

1
投稿者投稿内容
hisao
会議室デビュー日: 2008/04/17
投稿数: 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
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-04-18 14:57
コード:
原因

java.lang.NullPointerException
chap11_database.sec03.EmployeeDAO.findAll(EmployeeDAO.java:54) 


の部分、つまりEmployeeDAO.javaの54行目でNullPointerExceptionが
発生しているようなので、何がnullなのか調べて対策しましょう。

まずはエラーメッセージを読むこと。
見てのとおり、そのまんま答えが書かれているわけです。
1

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