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>
?? <role rolename="tomcat"/>
?? <role rolename="role1"/>
?? <user username="tomcat" password="tomcat" roles="tomcat"/>
?? <user username="role1" password="tomcat" roles="role1"/>
?? <user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
问题修改:将tomcat-users.xml 文件内容改为
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
?? <role rolename="tomcat"/>
?? <role rolename="role1"/>
?? <role rolename="manager"/>
?? <role rolename="admin"/>
?? <user username="admin" password="admin" roles="admin,manager"/>
?? <user username="tomcat" password="tomcat" roles="tomcat"/>
?? <user username="role1" password="tomcat" roles="role1"/>
?? <user username="both" password="tomcat" roles="tomcat,role1"/>?
</tomcat-users>
重新启动Tomcat ,在登录时使用 用户名admin 密码 admin 登录即可。