SunのjavacでJSPコンパイル

玄箱PROのDebianで、Tomcat4+Jikes構成でJSPを表示しようとするとfork:Cannot allocate memoryが出てJSPがコンパイルできない現象が度々発生します。
エラーそのものは物理メモリを増やす、仮想メモリを増やす等で対応すべきものなのでしょうが、玄箱PROの環境を色々と調整するのは大変なので他プロセスへforkしないようにデフォルトのjavac(com.sun.tools.javac.Main)を使ってJSPをコンパイルさせるように変更します。

tools.jarの準備

Windowsなどのi386版のSunJDK1.4.2に付いているtools.jarをFTP等でコピーする
C:\java\j2sdk1.4.2_12\lib\tools.jar

/usr/lib/fjsdk/lib/tools.jar

※Tomcat4起動時に/usr/lib/fjsdk/lib/tools.jarにはパスが入っているため置くだけでよい
※他のtools.jarでもいけるとは思いますが試していません

JSPコンパイラの設定をjikesからjavacに戻す

JSPコンパイラにJikesを使わないようにコメントする
KUROBOX-PRO:~# vi /etc/default/tomcat4
#JSP_COMPILER=jikes

JSPコンパイラにJikesを使わないようにコメントする
KUROBOX-PRO:~# vi /etc/tomcat4/web.xml
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <!-- init-param>
            <param-name>compiler</param-name>
            <param-value>jikes</param-value>
        </init-param -->
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

Tomcat4を再起動する
KUROBOX-PRO:~# /etc/init.d/tomcat4 stop
Stopping Tomcat 4.1 servlet engine: .......................tomcat4.
KUROBOX-PRO:~# /etc/init.d/tomcat4 start
Starting Tomcat 4.1 servlet engine using Java from /usr/lib/fjsdk: tomcat4.

相変わらずTomcat4は起動が完了したかどうか分からないのでtopでモニタする
大抵、起動処理中は一番上にtomcat4ユーザでsablevmプロセスが居座るので、これが無くなれば起動完了。

問題になっていたJSPに対してアクセスしてみる
topでモニタして一度もjikesプロセスが登場せずにsablevmプロセスだけで頑張っていればtools.jar化成功。


最終更新日:2007-05-30
最終更新:2007年05月30日 15:53