- - PR -
TomcatでTLDの起動エラー
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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が取得できなくてエラーになっているのだと思います。 確かに、このサーバからインターネットに繋がらないのですが、 このエラーを回避する方法はないのでしょうか? よろしくお願い致します。 | ||||||||
|
投稿日時: 2008-06-25 15:12
実際の*.tldファイルの位置と、
web.xmlに記述されている*.tldのパスが違っていたりしませんか。 | ||||||||
|
投稿日時: 2008-06-25 15:58
tomcatの実行環境から
http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd にアクセスできないのではないですか。 | ||||||||
|
投稿日時: 2008-06-25 17:10
Edossonさん
tldのパスは正しいです。 もしパスが間違っているとしたら、DTDのエラー事態発生しえないと思うのですが。 progmanさん Tomcatからは、インターネットは繋がりません。 その上でのご相談です。 質問に書かせて頂きましたが、意図は伝わらなかったでしょうか。 | ||||||||
|
投稿日時: 2008-06-25 17:13
ああ、tomcatから見えないのはハッキリしてるのですね。
すいません。勘違いなレスしてしまいました。 そのdtdをダウンロードして、tomcatから見える場所にコピーして、 http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd の記述をtomcatからの見え方に変更すればいいでしょう。 | ||||||||
|
投稿日時: 2008-06-25 18:22
正しいPUBLIC IDは、
ではなく、
です。 JavaのAPIでDTDを使ったバリデーションを行う場合、 PUBLIC IDが予期していた値と同じであれば、内部リソースを利用し、 予期しない値であれば、指定のURLからHTTP経由でDTDを取得して利用することができます。 Tomcatは内部でDigesterを利用していますが、まさにこの方法でDTDを取得して、 XMLのバリデーションを行っています。 ですので、PUBLIC IDが違うためHTTP経由になってしまったということです。 | ||||||||
|
投稿日時: 2008-06-25 18:31
ついでに、、、
よくDTD検証を利用する実装のパターンとして、 ・クラスパス内にxxx/xxx.dtdを配置 ・そのDTDファイルとPUBLIC IDの関連付けパース前に行う というような実装のパターンが多いです。 (XMLReader#setEntityResolverを利用) ですので、インターネットに接続されていない環境でも、 よっぽど行儀の悪いアプリでない限り、大抵は問題ないかと思います。 |
1