如何在重新启动时让weblogic重新加载缓存的JSP

时间:2012-09-10 19:19:14

标签: weblogic weblogic11g

我们为weblogic(11g)部署新版app的方法是复制现有ear文件的顶部,然后停止并重新启动weblogic服务器。我们开始/停止weblogic而不是重新部署,因为已知的permgen问题(最终我们将耗尽perm gen并且必须退回weblogic服务器)。

但是,这种部署方法有一个缺点 - weblogic看不到新的JSP版本。为了解决这个问题,我们不得不在重启服务器之前清除tmp目录中维护已编译JSP缓存的内容。是否有一个设置可以告诉weblogic在启动备份时擦除缓存/重新加载/重新编译JSP?

2 个答案:

答案 0 :(得分:5)

更改JSP刷新计时器

标准解决方案是通过设置web.xmlweblogic.xml中的值来告诉Weblogic更频繁地检查JSP新鲜度。

在生产模式下,Weblogic不会检查新的JSP版本(默认值:-1 ),而它在开发模式下每秒执行一次(默认值:1 )。

修改web.xmlweblogic.xml之间的选择取决于您所针对的应用程序服务器,仅适用于WebLogic。

如果您想修改web.xml,请按如下方式为上下文参数weblogic.jsp.pageCheckSeconds设置一个值:

<context-param>
  <param-name>weblogic.jsp.pageCheckSeconds</param-name>
  <param-value>0</param-value>
</context-param>

如果您想修改weblogic.xml,请在page-check-seconds部分为参数jsp-descriptor设置一个值。以下是文档中的相关摘录:

  

设置WebLogic Server检查JSP文件是否已更改并需要重新编译的时间间隔(以秒为单位)。如果更改,也会检查依赖关系并以递归方式重新加载。   值-1表示从不检查页面。这是生产环境中的默认值。   值0表示始终检查页面。   值1表示每秒检查页面。这是开发环境中的默认值。   在对JSP的更改很少的生产环境中,请考虑根据您的调整要求将pageCheckSeconds的值更改为60或更高。

来源:http://docs.oracle.com/cd/E21764_01/web.1111/e13712/weblogic_xml.htm#i1038490

强制重新部署

重新启动Weblogic服务器不会强制它重新部署Web应用程序(特别是在生产模式下)。

解决方案 使用命令行显式触发“重新部署”生命周期操作:

java -cp weblogic.jar weblogic.Deployer -redeploy [-remote -adminurl t3://hostname:hostport] -username login -password password -name webapp.name [-upload -source webapp.war]
  • 请注意-redeploy-update安全得多,尤其是{{1}}。使用Weblogic&lt; = 10.x

  • 只有当服务器不是本地服务器时,才在[]之间保留第一个块。在这种情况下删除[]。

  • 如果要在同一步骤中组合 WAR文件,请在[]之间保留第二个块,这样更简单。在这种情况下删除[]。

答案 1 :(得分:1)

为避免这种情况,您应首先更新您的模块,然后重新启动服务器..这应该可以解决您的问题。

虽然提到的过程总是给出100%的正确性。但是你可以尝试上面提到的步骤。