オープンソースの各種ソフトウエアを提供するJakartaプロジェクトは2003年1月15日,Javaサーブレット・エンジン「Tomcat」の最新版v4.1.19-alphaを公開した。

 Tomcat 4.x(v4.1.18以前)では,JSP(JavaServer Pages)ファイルを大量にコンパイル(Javaサーブレットのコードに変換する処理)した際にメモリー・リークを引き起こす不具合が報告されていた(v4.1.18のリリース・ノート)。v4.1.19-alphaでは,このコンパイル処理をTomcat外部のJavaVMプロセス上で実行できるようにすることで問題を回避した(v4.1.19のリリース・ノート)。

 従来のメモリー・リークは,TomcatのJSPコンテナ「Jasper」の不具合によって発生する。そのため,大量のJSPファイルをコンパイルする環境では,JSPコマンドライン・コンパイラ (JSPC) などを利用し,事前にコンパイルしておく必要があった。最新版では,アプリケーション実行時にコンパイルする場合に,Tomcat外部のJavaVMプロセス上で処理することにより,Tomcatを実行しているJavaVMのメモリー消費に影響を与えないようにした。

 Tomcat v4.1.19-alphaでは,コンパイル処理をTomcat外部のJavaVMプロセスで実行させるかどうかを決める属性をJasperに追加。具体的には,設定ファイル「web.xml」に記述されている “org.apache.jasper.servlet.JspServlet”のサーブレット定義に“fork”を加えた。この属性に,“true”を指定すれば Tomcat外部のJavaVMプロセス上で,“false”を指定すれば Tomcatを実行しているJavaVMプロセス内部でコンパイルする。デフォルトは“true”が設定されている。

 Tomcat v4.1.19の安定版(Stable)の登場は,同プロジェクトの他製品と同様,コミッタによる品質評価を待つ必要がある。

(森山 徹=日経オープンシステム)