かつのりの日記2

わんくまでは珍しいJavaを中心とした日記です

目次

Blog 利用状況

書庫

日記カテゴリ

いろいろリンク

Tomcatの仕様が変わってる・・・

今までTomcatの5.5.23で開発していたのですが、Tomcatの5.5.25にバージョンアップしたら動かない・・・。お客さんにリビジョン違いで動作しないのは、アプリのバグです。と言い切ってしまったので調査しました。

今までずっと放置されていた、<jsp:include>でファイルが存在しない場合に何もしないバグ?に対処したらしいです。リリースノートはキチンと読まないとダメですね。今までファイルが存在しない場合に何も行われない事に期待したコードだったので、これは致命的でした。

Tomcatは常にコードもセットで落とすようにしているので該当箇所(org.apache.jasper.servlet.JspServlet)を見ると、やはりエラーの処理が追加されていました。%CATALINA_HOME%common/classesに5.5.23のクラスを入れると問題なく動くのですが、そもそもJSPの仕様として正しいのかを調査すると、ファイルが存在しない場合の挙動が明記されていないっぽいのです。・・・コンテナ依存かよ・・・。

結局は、ひとまず5.5.23のクラスを抜き出してパッチとして5.5.25に入れる事に。そして暇を見て空っぽのインクルード対象のファイルを作成することで落ち着きそうです。

いやぁ・・・たまにこういう罠があるのですね。重要なのは、

  • オープンソースならAPサーバ、フレームワーク等のコードくらいは読む
  • リリースノートを読む
  • 公式の仕様書を読む

「何かよくわかんないけど、うまく動かないっす・・・やっぱオープンソースはダメっすね。」とか安易に言っちゃいけません。

投稿日時 : 2007年11月29日 2:05

Feedback

# re: Tomcatの仕様が変わってる・・・ 2007/11/29 11:58 凪瀬

それはまたイレギュラーなケースだなぁ…
5.5.25のように対象がない場合に例外を出す設計のほうが綺麗な設計とは思いますけどね。

リリースノートはバージョンアップ時の事前調査として読むけども、
ソースコードは何かがあった場合の調査でしか基本的に読まないですね。
というか、莫大な量のソースになるので読んでられない。

動きが胡散臭いところは仕様を確認するように習慣付けるようにしています。
調べようと思ったときに調べることができるところがオープンソースのいいところですね。

タイトル
名前
Url
コメント