Apache Tomcat 8.0.0 のリリースが近い(かな?)

TomcatのWebページを偏執狂のようによくアクセスしてるんだけど、今日見たら何やら左メニューがいつもと違う気がする。

なんだろう……あっ! Tomcat 8.0へのリンクが追加されている!!!

さっそく見てみると、8.0.0-RC1が公開されていた。モノ自体はもうちっと前からあったと思うけど、Webページに公開したということは、Tomcat 8.0の正式リリースも近いということだろう。

Tomcat 8.0.0の特徴

公式ページに書いてあるのでその引き写しになるけど……意訳するとこうか。

  • Java Servlet 3.1, JavaServer Pages 2.3, Java Unified Expression Language 3.0をサポートしたよ。そしてTomcat 7までは実験的対応だったJava WebSocket 1.0は、とうとう正式対応だ!
  • AJPなんかのコネクタはNIO(Java non-blocking implementation)がデフォルトになったよ
  • 今までのAliases, VirtualLoader, VirtualDirContext, JAR resourceを統合した新しい仕組みを導入したよ

Apache Tomcat 8.0.0-RC1の起動

さっそく試そうとしてみると、java.lang.UnsupportedClassVersionError でエラーが出て起動しない。おや?

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

む、もしかしてと思い RUNNING.txt を確認したら、案の定以下のように書いてあった。

Apache Tomcat 8.0 requires a Java Standard Edition Runtime
Environment (JRE) version 7 or later.

というわけで、Tomcat 8.0からはJava 6は非サポート(起動すらしない)となり、Java 7以上となったようです。まぁ妥当ですね。

てば、Java 7を使うようにしてっと。

まだドキュメント類にTomcat 7へのリンクが大量に残ってたりとRC1な感じですが、とりあえず起動まで確認しました。さてと、いろいろいじってみるか。

Tomcatへの開発寄与

ちなみに、Tomcatへのバグレポートを、過去に2回送ったことがある。もっともその両方ともドキュメントの記載ミスの指摘で、しかもひとつは単なるtypoの指摘なので全然たいしたことじゃないんだけど……。

ひとつめは本当にtypoで、theが2つあったのを指摘しただけ。

ふたつめは、autoBindでリトライする際、ポート番号は初期値+autoBind値「以下」までリトライされる……とドキュメントに書かれているのに、実際に試してソースも確認したところ「未満」までしかリトライしない、のが正しい動きだった。そのためドキュメントの誤りを指摘したもの。これはTomcat 7.0.40で修正してもらえた。

まぁ些細なことだけど、自分の名前が有名プロジェクトのどこかに載るのは嬉しいことですね