Tomcat7 はウンコードが動作しない
日頃、人類が書いたとは思えないウンコードシステムを保守する仕事をしているのだが、Tomcat を 5 から 7 に変更したところ、表示できない JSP ページが続出した。
コンソールには、以下のサイトで紹介されているものと同じ、Attribute qualified names must be unique within an element
だったり、The JSP specification requires that an attribute name is preceded by whitespace
といったメッセージが出てきていた。
XML の仕様で、1つの要素に同じ属性名が2回登場するとエラーとしたり、属性と属性の間にスペースがなかったりすると出る。
要するに汚ねぇソースはコンパイルしてやんねえぞ、ということで、普段「コンパイルエラー」というものがない静的な HTML とは違って、JSP のコンパイル時にこうしたウンコードをはじくようになったようだ。
個人的に綺麗なコードに保ちたい時には良いチェック機能になると思うし良いのだが、今回は「なるべくソースに手をかけずに環境だけ新しくしたい」という要件なので、できればこのチェックを緩和させて、Tomcat 5 で動作していた挙動を再現させたいんだけど、Tomcat 7 ではそうした JSP のコンパイル方法を変更するオプションは見当たらなかった。
ちなみに同モジュールは WebLogic 9.2 で運用しており、実際は WebLogic 12c で動作させるように変更するのだが (Tomcat は開発環境で動作チェック時に使用)、WebLogic 12c だと同 JSP でコンパイルエラーが発生しなかった。Tomcat と WebLogic で JSP のパーサーが違うっぽい。