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