- PR -

TomcatでTLDの起動エラー

1
投稿者投稿内容
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2008-06-24 18:18
Tomcat4.1.31
j2dk1.4.2
で、Tomcatを起動したときに「TLDを処理中の例外です」が発生します。
例外の内容に、
Resolve entity failed-//Sun Microsystems, Inc.//TD JSP Tag Library 1.1//EN http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd
とあるので、TLDに記述してあるDTDが取得できなくてエラーになっているのだと思います。
確かに、このサーバからインターネットに繋がらないのですが、
このエラーを回避する方法はないのでしょうか?
よろしくお願い致します。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2008-06-25 15:12
実際の*.tldファイルの位置と、
web.xmlに記述されている*.tldのパスが違っていたりしませんか。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-06-25 15:58
tomcatの実行環境から

http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd

にアクセスできないのではないですか。
るーさん
常連さん
会議室デビュー日: 2003/12/14
投稿数: 28
投稿日時: 2008-06-25 17:10
Edossonさん
tldのパスは正しいです。
もしパスが間違っているとしたら、DTDのエラー事態発生しえないと思うのですが。


progmanさん
Tomcatからは、インターネットは繋がりません。
その上でのご相談です。
質問に書かせて頂きましたが、意図は伝わらなかったでしょうか。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-06-25 17:13
ああ、tomcatから見えないのはハッキリしてるのですね。
すいません。勘違いなレスしてしまいました。

そのdtdをダウンロードして、tomcatから見える場所にコピーして、
http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd
の記述をtomcatからの見え方に変更すればいいでしょう。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-06-25 18:22
正しいPUBLIC IDは、
引用:

-//Sun Microsystems, Inc.//TD JSP Tag Library 1.1//EN


ではなく、
コード:
-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN


です。

JavaのAPIでDTDを使ったバリデーションを行う場合、
PUBLIC IDが予期していた値と同じであれば、内部リソースを利用し、
予期しない値であれば、指定のURLからHTTP経由でDTDを取得して利用することができます。
Tomcatは内部でDigesterを利用していますが、まさにこの方法でDTDを取得して、
XMLのバリデーションを行っています。
ですので、PUBLIC IDが違うためHTTP経由になってしまったということです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-06-25 18:31
ついでに、、、

よくDTD検証を利用する実装のパターンとして、
・クラスパス内にxxx/xxx.dtdを配置
・そのDTDファイルとPUBLIC IDの関連付けパース前に行う
というような実装のパターンが多いです。
(XMLReader#setEntityResolverを利用)

ですので、インターネットに接続されていない環境でも、
よっぽど行儀の悪いアプリでない限り、大抵は問題ないかと思います。
1

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