Weblogic9.2下的JSP预编译

原因:
JSP的延迟编译特性,应用程序在服务器上运行的时候,JSP在特定的客户端请求资源之前进行编译,这样实时的编译对系统的开销成为影响应用系统的性能的瓶颈问题。
解决思路:
在JSP资源被请求之前对所有的JSP进行编译
解决方法:
1.利用服务器启动和部署一个特定的Web应用程序的时候,设置参数进行预编译
步骤方法:
对于在WLS下公布的预编译,一个特定的Web应用程序能够被配置,因此所有的JSP在应用程序部署(服务器启动时)和重新部署(运行时)期间里被预编译。WEB-INF/ weblogic.xml文件利用<jsp-param/>指令将precompile参数设置为true,这样就可以进行预编译。
如:
<weblogic-web-app>

<jsp-descriptor>
<jsp-param>
<param-name>precompile</param-name>
<param-value>true</param-value>
</jsp-param>
</jsp-descriptor>

</weblogic-web-app>
2.利用命令行weblogic.jspc对jsp进行编译
前提:将Java_home设置为BEA自身带的,将与java相关的环境变量设置为相应的,将weblogic.jar、webservices.jar添加到classpath中,然后可以利用java weblogic.jspc –version查看jspc编译器的版本。
步骤方法:
(1) 利用批处理(方法比较笨)
1) 利用dos命令查询所有的jsp文件,将所有的查询结果导入特定的文件中
如:D:\*\for /r %a in (*.jsp) do @echo %a >>D:\ *\jsp.txt
2) 用EditPlus打开jsp.txt将对jsp进行编译的命令行放到对应的jsp文件前面
3) 将修改后的jsp.txt文件名修改为jsp.bat
4) 点击执行jsp.bat(要放到D:\bamboo_qhnew\下)就可以进行所有的jsp的编译了
注:weblogic.jspc虽然提供了对特定目录下的所有的jsp编译的参数-compileAll,但是对内存的消耗比较大,jspc的最大内存默认值的设置为128M,在编译的过程中严重不足。所以不建议使用该参数。
(2) 利用脚本
@echo off //不显示执行的命令行
set CLASSPATH=…..\weblogic.jar;…..\webservices.jar //将两个jar包放置到环境变量中
set WEBROOT=**** //应用程序所在的位置
for /R %WEBROOT%\WEB-INF\lib %%j IN (*.jar) do call setclasspath %%j //蒋编译所依赖的jar文件放入类路径中
for /R %WEBROOT%\ %%f IN (*.jsp) do java weblogic.jspc -webapp %WEBROOT% -compiler javac -forceGeneration -classpath %CLASSPATH% -d %WEBROOT%\WEB-INF\classes -k -keepgenerated %%f
// 遍历应用下的所有的jsp并对所有的jsp进行编译
将上述的语句写入一个*.bat文件,然后执行就可以了。
总结:
虽然JSP预编译的问题较多,但许多的途径可以解决。然而,考虑到上文所说的那些优点和缺点,应该较容易的看出经由weblogic.jspc预编译的程序方式是为克服JSP固有的缺点的一个灵活的选项。


Davide Wang
2008-5-22 9:00
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值