linux下Quartz被调度2次问题
最近写了一些定时任务,由于任务比较多,采用了Quartz来实现,但是在windows环境下测试的时候一切正常,但是放到linux服务器上的时候就出现了2次任务调度的情况,一个任务被执行了2次,无赖中的时候在javaeye上居然发现了解决方案:http://www.javaeye.com/post/575262?page=1
当我们吧项目发布到tomcat下的时候,windows下的tomcat的config下的service.xml文件中有段内容如下:
<Host name="localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"></Host>但是在linux下则不同
<Host name="localhost" appBase="webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
<Context path="" docBase="object1" /></Host>解决方案是:把linux 下的appBase="webapps"修改为appBase=""
多出了一行 <Context path="" docBase="you object name" />,这两段的区别是第二段去除了appBase="webapps"中的webapps变成了appBase="",因为web应用程序都是放在webapps这个目录下的,如果不把“webapps“去掉,这里会调用一次quartz的任务调度,在接下来的“<Context path”中又会调用一次quartz的任务调度,所以就重复了2次
通过以上修改后变成:
<Host name="localhost" appBase=""
unpackWARs="true"autoDeploy="true"
xmlValidation="false"xmlNamespaceAware="false">
<Context path="" docBase="webapps/object1" /></Host>这个时候tomcat默认路径http://localhost:8080/默认访问object工程,但是这个时候系统启动报错说找不到manmager和host-manager文件。于是有修改为以下2个Host:
<Host name="127.0.0.1" appBase=""
unpackWARs="true"autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"><!--这个可以加访问路径别名/域名或本机IP-->
<Alias>www.aaa.com</Alias>
<Alias>www.bbb.com</Alias>
<Alias>192.16.18.23</Alias>
<Context path="" docBase="webapps/object1" />
<!--如果有多个工程可以加这里-->
<Context path="/object2" docBase="webapps/object2" />
<Context path="/object3" docBase="webapps/object3" />
</Host>
<Host name="localhost" appBase="server/webapps"
unpackWARs="true"autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"></Host>但是会这样后我们的tomcat管理页面又无法登陆了。并且访问工程要通过127.0.0.1访问。localhost将无法访问。
----------------------------------------------------------------------------------------------------------------------------------
刚刚解压版的Tomcat5.0.12,启动setup.bat后,通过浏览器访问:http://127.0.0.1:8080/admin
后续继续测试更新中……
在登录界面输入用户名 both 和密码 tomcat 后出现下面的错误提示:
HTTP Status 403 - Access to the requested resource has been denied
问题原因:
D:\Tomcat5.0\conf 目录下的
tomcat-users.xml 文件内容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<rolerolename="tomcat"/>
<rolerolename="role1"/>
<userusername="tomcat"password="tomcat"roles="tomcat"/>
<userusername="role1"password="tomcat"roles="role1"/>
<userusername="both"password="tomcat"roles="tomcat,role1"/>
</tomcat-users>问题修改:将tomcat-users.xml 文件内容改为
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<rolerolename="tomcat"/>
<rolerolename="role1"/>
<rolerolename="manager"/>
<rolerolename="admin"/>
<userusername="admin"password="admin"roles="admin,manager"/>
<userusername="tomcat"password="tomcat"roles="tomcat"/>
<userusername="role1"password="tomcat"roles="role1"/>
<userusername="both"password="tomcat"roles="tomcat,role1"/>
</tomcat-users>重新启动Tomcat ,在登录时使用 用户名admin 密码 admin 登录即可。