linux下Quartz被调度2次问题

RuifengZeng 2012-02-22

最近写了一些定时任务,由于任务比较多,采用了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 登录即可。

相关推荐