大家好,又见面了,我是你们的朋友全栈君。
1、为什么要热部署
大家在进行web开发的时候,都希望自己修改的内容在不手动编译、不重启服务的时候立即生效,这样可以极大的方便开发和调试。这个就是我今天要讲的weblogic的热部署。
一.Weblogic热部署相关配置项
Weblogic能实现热部署功能,而且有自己的热部署机制,一般的应用在Weblogic的控制台中有如下三个配置项:
servlet-reload-check-secs
resource-reload-check-secs
JSP page-check-seconds
xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>compileFlags</param-name>
<param-value>-g</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-descriptor>
<container-descriptor>
<servlet-reload-check-secs>1</servlet-reload-check-secs>
<resource-reload-check-secs>1</resource-reload-check-secs>
<!-- weblogic优先使用web程序自带的类库 -->
<prefer-web-inf-classes>false</prefer-web-inf-classes>
</container-descriptor>
<context-root>StrutsDemoApp</context-root>
</weblogic-web-app>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
下面对weblogic.xml的这三个设置选项的介绍:
1.servlet-reload-check-secs
元素定义 WebLogic Server是否执行 servlet检查以查看 servlet是否已更改,如果已更改,是否重新加载。
值-1:表示永不检查 servlet。该值为生产环境中的默认值。
值0:表示总是检查 servlet。
值1:表示每秒检查一次 servlet。该值为开发环境中的默认值。
2.resource-reload-check-secs
使用 元素针对 Web应用程序范围内资源路径中发现的缓存资源执行元数据缓存。该参数标识 WebLogic Server检查资源是否发生修改的频率,如果已修改,则重新加载。
值-1:表示元数据进行缓存,但从不对磁盘进行检查以便找出所做的更改。建议在生产环境中使用该值,以提升性能。
值0:表示不执行元数据缓存。持续更改文件的客户必须将该参数设置为大于或等于 0的一个值。
值1:表示每秒重新加载一次。该值为开发环境中的默认值。
3.JSP page-check-seconds
设置 WebLogic Server检查 JSP文件的时间间隔(秒),以便查看 JSP文件是否已更改以及是否需要重新编译。如果已发生更改,还会检查依赖关系并递归重新加载。
值-1:表示永不检查页面。该值为生产环境中的默认值。
值0:表示总是检查页面。
值1:表示每秒检查一次页面。该值为开发环境中的默认值。
所以分别配置Servlet、Resource和Jsp的来控制对应三类所控制的内容的热部署时间间隔,如果设置为-1的话那么这一项就不支持热部署。当值配置为1的话就可以支持热部署。
二.配置热部署步骤
为了实现程序的热部署,我们需要以下几个步骤:
1.修改weblogic的启动参数
使用domain中的startWebLogic.cmd来启动weblogic的话,则在domain/bin下的setDomainEnv.cmd中将该参数配置上,在该文件最后添加设置参数命令:set JAVA_OPTIONS=%JAVA_OPTIONS% -Dorg.apache.tapestry.disable-caching=true -Dorg.apache.tapestry.enable-reset-service=true,如下图所示:
2.检查weblogic.xml配置文件
其中如果有:
xml代码:
<container-descriptor>
<servlet-reload-check-secs>0</servlet-reload-check-secs>
<resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>
<jsp-descriptor>
<jsp-param>
<param-name>pageCheckSeconds</param-name>
<param-value>0</param-value>
</jsp-param>
</jsp-descriptor>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
请将上述数值都修改为0。
3.配置Eclipse中的工程自动编译
检查Eclipse中工程配置的默认编译输出路径是否为projectHome/web/WEB-INF/classes。
修改步骤为:在Package Explorer视图中的工程上右键–>属性(properties)–>Java构件路径(Java Build Path)–>源代码(Source)–>默认输出路径(Default output folder)。这里修改为web/WEB-INF/classes即可。可以通过右边的浏览(Browse)按钮来选择。 确保 project->build automatically已经被选上。
4. 检查ie选项中是否设置了每次访问本页时检查最新
设置方法:工具–>Internet选项–>常规–>浏览历史记录中的设置,在弹出框中设置(针对ie7,8),如下所示:
三.生产环境配置
对于生产环境,需对系统配置JSP和Servlet的pageCheckSeconds为-1,以禁止jsp和servlet的重新destroy和init,以提高系统可用率。
具体需在各应用WAR包的weblogic.xml增加如下配置:
1.对于jsp文件,设置pageCheckSeconds为-1,禁止重新编译
xml:
<jsp-descriptor>
<param-name>pageCheckSeconds</param-name>
<param-value>-1</param-value>
</jsp-descriptor>
- 1
- 2
- 3
- 4
2.对于servlet,设置servlet-reload-check-secs的值为-1,禁止servlet重新destory和init
Xml代码
<container-descriptor>
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
</container-descriptor
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143443.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...