weblogic 域编译问题

发布web应用到wl上去的时候,java类都已经被编译成class放到了war包里面的WEB-INF下面的classes目录下,所有Java类总是编译过的最新的,不存在预编译的问题,但是jsp页面 是直接被打包到war里面的,还没有被编译,所以就存在一个预编译的问题。



如果在WEB-INF下面的的weblogic.xml配置文件里配置了:

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

那么所有的JSP文件在部署的应用程序start或者服务器启动时及在不停掉server上的 应用直接update(重新部署)时会被预编译成最新的class。




也可以配置:
<jsp-descriptor>
    <page-check-seconds>1</page-check-seconds>
    <verbose>true</verbose>
</jsp-descriptor>

这样每隔1秒wl就会去检查jsp有没有改动,有就重新编译成class,没有就不重新编译。




如何没有配置任何<jsp-descriptor>,那么即使发布上去了,一般也不会将jsp编译成对应的class,而是在首次请求该jsp页面的时候

才动态编译产生class文件。


所以会导致一些jsp页面部署完了也没有被及时的编译成class文件。




如果修改weblogic.xml需要重启itsm,而通常的发布都是在itsm运行时进行update(重新部署),也就是hot deploy,没有重新启动itsm。

所以 最好不要改变weblogic.xml文件。 可以按照如下方法来将修改了的jsp编译成class。




部署后,wl会将war包里面的jsp文件放在


/opt/itsm/domains/itsmdomain/servers/itsmserver1/tmp/_WL_user/itsm/a2yn4z/war/itsm目录下,
对应的class文件放在
/opt/itsm/domains/itsmdomain/servers/itsmserver1/tmp/_WL_user/itsm/a2yn4z/jsp_servlet目录下,


首先删掉对应的class文件,然后touch对应的jsp文件,最好在页面上访问该jsp页面就可以生产最新的class文件。

你可能感兴趣的:(java,jsp,weblogic,servlet,server,Class)