1.实验环境
2.一个预编译命令实例及weblogic.jspc参数说明
3.WebLogic编译总结
背景:每次全量更新环境后,访问系统时WL都要重新编译各Jsp,速度奇慢无比。故做此预编译实验,并对WL编译Jsp特性有了进一步了解。
一、实验环境:
WebLogic: V8.1.6
操作系统: WinXP SP3
二、一个预编译命令实例及weblogic.jspc参数说明
1.weblogic.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.1//EN" "http://www.bea.com/servers/wls610/dtd/weblogic-web-jar.dtd">
- <weblogic-web-app>
- <jsp-descriptor>
- <jsp-param>
- <param-name>compileCommand</param-name>
- <param-value>javac</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>verbose</param-name>
- <param-value>true</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>keepgenerated</param-name>
- <param-value>true</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>pageCheckSeconds</param-name>
- <param-value>-1</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>packagePrefix</param-name>
- <param-value>jsp_servlet</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>noTryBlocks</param-name>
- <param-value>false</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>precompile</param-name>
- <param-value>false</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>compilerSupportsEncoding</param-name>
- <param-value>true</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>superclass</param-name>
- <param-value>weblogic.servlet.jsp.JspBase</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>encoding</param-name>
- <param-value>GBK</param-value>
- </jsp-param>
- <jsp-param>
- <param-name>workingDir</param-name>
- <param-value>./app_workingDir</param-value>
- </jsp-param>
- </jsp-descriptor>
- <context-root>/</context-root>
- </weblogic-web-app>
2.创建一个CMD:
- set HOME=%CD%/
- set WL_JAR=%HOME%../../../weblogic81/server/lib/weblogic.jar
- set WEBAPP_PATH=/Application/modules_s/webapps_pre
- set OUTPUT_PATH=./app_workingDir
- java -classpath %WL_JAR% weblogic.jspc -encoding GBK -verboseJspc -linenumbers -noImplicitTlds -webapp %WEBAPP_PATH% -d %OUTPUT_PATH% -keepgenerated -k
- pause
weblogic.jspc参数解释:
-classpath:指定weblogic.jspc路径(我把这个cmd放在了domain目录下,所以路径如上)
-encoding GBK:编译字符集(实际编译中有些页面显示使用GB2312,还没研究怎么回事)
-verboseJspc:强制产生编译详细清单
-linenumbers:编译后的JAVA文件中显示JSP代码行号
-noImplicitTlds:禁止查找或注册implicit Tlds(implicit怎么翻译才好?)
(加上这个参数,如果某些tld没有在web.xml注册,而引用这个tld的JSP编译会失败).
-webapp %WEBAPP_PATH%:web应用所在路径
-d %OUTPUT_PATH%:生成的文件输出路径
-keepgenerated:保留生成的JAVA文件
-k:持续编译,即使有编译错误发生
三、WebLogic编译总结
经做各试验,得以下结论
1.WebLogic根据时间戳是否变化来决定Jsp是否需要重新编译;
a.内容不变,Jsp更新时间>其对应生成的Java文件更新时间 重新编译
b.内容变化,Jsp更新时间<其对应生成的Java文件更新时间 不重新编译
2.pageCheckSeconds设置为-1(永不重新检验)时,WL服务重新启动后仅校验一次(规则同第1条)。之后Jsp无论怎样变化,WL不再重新编译。