- PR -

web.xmlについて

1
投稿者投稿内容
Lucy
会議室デビュー日: 2002/12/29
投稿数: 17
投稿日時: 2004-05-21 18:49
 お世話になります。
 デプロイメントディスクリプタの構文規則についてわからない点があるので質問します。
 Tomcat 4.1.27を起動すると、

致命的: Parse Error at line 48 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".

 といった、構文エラーが出るのですが、この理由がよくわからないのです。
 web.xmlには、

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>

<servlet>
<servlet-name>CertificationExerciseServlet</servlet-name>
<servlet-class>servletbasic.CertificationExerciseServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>

<servlet>
<servlet-name>SelfInfoServlet</servlet-name>
<servlet-class>servletbasic.SelfInfoServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>CertificationExerciseServlet</servlet-name>
<url-pattern>/CertificationExerciseServlet</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>SelfInfoServlet</servlet-name>
<url-pattern>/SelfInfoServlet</url-pattern>
</servlet-mapping>

</web-app>

 とだけ記述しています。
 サーブレット2.3のデプロイメントディスクリプタのDTDでは、いくつかのelementは、使わないのなら定義しなくてもいいように書いてあると思うのですが・・・。
 エラー情報に書かれているelementは必須なんでしょうか?
 それとも、別に気にしなくても良いのでしょうか?

 どなたかご教授願います。

Windows2000 + SP4(最新状態)
Tomcat 4.1.27
j2sdk1.4.2_04
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-05-21 18:58
えーと、DTDの読み方はご存知でしょうか?
web-appの下には必須項目はありませんが、

引用:

(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)



カンマで区切られている要素は、この順番を守る必要があります。
つまり、servlet要素の前にwelcome-file-listやerror-pageが書かれているためにエラーに
なっているのです。
Lucy
会議室デビュー日: 2002/12/29
投稿数: 17
投稿日時: 2004-05-21 20:52
回答ありがとうございます。

引用:

ukさんの書き込み (2004-05-21 18:58) より:
えーと、DTDの読み方はご存知でしょうか?




必須があったように見えましたが、見間違いだったようです。すみません。
# +が1回以上で、?が0回以上で、何も書いていないのが必須、
# パーティカルバーで区切られているのがどちらかを、で良いのですよね?
また、順番があったとは知りませんでした。

手元の書籍を確認すると、ちゃんと順番を守れと書いてありました。
以後、気を付けます。

ありがとうございました。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-05-21 21:02
引用:

Lucyさんの書き込み (2004-05-21 20:52) より:
# +が1回以上で、?が0回以上で、何も書いていないのが必須、


0回以上は*、?は0か1です。何も書いてないのは必須というか1。
Lucy
会議室デビュー日: 2002/12/29
投稿数: 17
投稿日時: 2004-05-21 22:00
たびたび済みません。
# さすが私・・・。
しっかり覚えておきます。
ありがとうございました。
1

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