最近接手一个新项目,用到JBoss,今天发现修改了jsp页面的内容之后,刷新页面没有任何效果。擦!!!
问题探索过程:
1.打开JBOSS的部署文件夹(deploy),发现JSP文件已经被部署过来了。嗯?部署成功了为什么没有效果呢 ?难道是是缓存?于是清理项目,重新部署,清理浏览器缓存,重启服务器.....结果问题依旧。我*&……%¥%&%%……&
2.好吧,看来不是缓存的问题。再打开work文件夹,这里放的是编译好的文件,也就是说,浏览器其实访问的是这里面的页面。打开这个文件夹后,发现文件都没有更新。。。。这什么情况?百思不得其解啊!问问度娘去~
3.嗯。度娘告诉我这其实是热部署没有配置好。于是看到某君A的答案是酱紫的:
修改
server/default/deploy/jboss-web.deployer/context.xml 文件(红色的部分)
<Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true" > <Manager pathname=""/> <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener> </Context>你以为这样问题就解决了?Too Young !!! 我又看到某君B的说要把上面那两个地方的值设置为 false ! 我.......到底是想闹哪样?!于是去了解了下,这部分的代码意思是这样的:
antiResourceLocking:
如果这个参数为true,那么将组织任何文件锁。这将明显的影响应用的启动时间,但允许webapps,可能发生锁的平台和配置下,支持完整的热部署和热卸载。如果不配置,默认值是false;
如果设置为true,有一些副作用,包括屏蔽了JSP文件在运行服务器上的重新加载。
如果设置为true,且部署在Host的AppBase目录外面(默认是webapps),在Tomcat关闭的时候将导致应用被删除。
antiJARLocking:
加这个配置的原因是,某些程序自己带的JAR包,如日志,驱动等,TOMCAT会锁定这些JAR,这样无法服务器运行时卸载程序。加上这个配置后,就可以了。
也就是说,如果想让JSP页面动态部署,上面两个地方的值就应该设置成false. 另外需要注意的是,上面两个地方设置为true后,tomcat(Jboss集成了tomcat)是用了副本缓存的,所以Jsp页面一致不能及时更新。
完整JBOSS热部署配置过程:
1.修改路径:server\default\deploy\jboss-web.deployer\server.xml
修改内容:<Host name="localhost" autoDeploy="true" deployOnStartup="false" deployXML="false"
configClass="org.jboss.web.tomcat.security.config.JBossContextConfig" >
2.修改路径:server\default\deploy\jboss-web.deployer\context.xml
修改内容:<Context cookies="true" crossContext="true" reloadable="true" >
<Manager pathname="" />
<InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceLis tener>
</Context>
3.修改路径:server\default\conf\jboss-service.xml
修改内容: <attribute name="ScanEnabled">true</attribute>
修改内容:<Host name="localhost" autoDeploy="true" deployOnStartup="false" deployXML="false"
configClass="org.jboss.web.tomcat.security.config.JBossContextConfig" >
2.修改路径:server\default\deploy\jboss-web.deployer\context.xml
修改内容:<Context cookies="true" crossContext="true" reloadable="true" >
<Manager pathname="" />
<InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceLis tener>
</Context>
3.修改路径:server\default\conf\jboss-service.xml
修改内容: <attribute name="ScanEnabled">true</attribute>
修改完成后,清理deploy下面部署的项目,删除work文件夹,删除deploy文件夹下面和项目名一样的.ear文件夹,例如项目名是demo,则删除 demo.ear文件夹。然后在myeclipse中清理项目,重新构建、部署。
最后,启动服务即可看到效果啦。
看到困扰了半天的问题被解决掉真好开森有木有!!!
