最近写了一些定时任务,由于任务比较多,采用了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 登录即可。
分享到:
相关推荐
2. **CronTrigger**:CronTrigger允许使用类似于Linux crontab的表达式来定义任务的执行时间。例如,“0 0/5 * * * ?”表示每5分钟执行一次。这种触发器非常灵活,可以满足复杂的时间调度需求。 3. **SimpleTrigger...
Quartz作业调度框架是Java开发中的一个强大工具,用于实现定时任务和工作流管理。它以其灵活性、可扩展性和稳定性而被广泛应用。本学习笔记主要围绕Quartz的使用,特别是如何利用corn表达式来设置定时任务。 Quartz...
Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行定时任务。在Java开发环境中,Quartz被广泛用于实现应用程序的自动化任务执行,比如数据清理、定期发送邮件、执行统计分析等。本示例"quartz作业调度...
Quartz调度引擎是一款开源的Java定时任务框架,广泛应用于企业级应用系统中,用于执行定时任务,例如数据备份、报表生成、系统维护等。它的核心功能是根据预定义的规则和时间表,自动触发和执行作业(Job)。 1. **...
Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。它提供了丰富的 API 和配置选项,使得开发者可以方便地创建、管理和执行定时任务。Quartz 的核心特性包括可持久化的作业存储、...
一个纯 Java 实现的作业调度工具,相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。版本1.5.2,内附中文帮助文档
最后,启动Quartz调度器`scheduler.start()`,这样`DailySay`作业就会按照设定的cron表达式开始执行。 Quartz还支持集群和持久化,这意味着多个Quartz实例可以在分布式环境中协作调度任务,而且任务的状态和计划...
2. **Quartz调度器**:Quartz是Java平台上的任务调度库,可以定义作业(Job)和触发器(Trigger)。作业是执行的任务,触发器则规定了何时执行这些任务。理解Job接口和Trigger类,以及如何通过Scheduler来安排和管理...
Quartz是Java领域一款广泛应用的开源任务调度框架,它的主要功能是实现定时任务的管理和执行。版本2.2.1是对该框架的一次更新,它可能包含了一些性能优化、bug修复以及新特性的添加。在"quartz2.2.1定时任务相关jar....
6. **并发与线程管理**:Quartz在多线程环境下运行,分析`org.quartz.core.QuartzSchedulerThread`,了解其内部调度机制。 7. **插件系统**:Quartz有一个强大的插件系统,如`org.quartz.plugins.history....
Quartz是Java平台上的一款强大的任务调度框架,它允许开发者创建、调度和管理作业与触发器。这个API文档详细地介绍了如何使用Quartz进行任务的定时执行。Quartz的核心概念包括Job(作业)、Trigger(触发器)和...
Quartz.NET是一款强大的开源任务调度框架,专门为.NET平台设计,特别是在C#环境下有着广泛的应用。它的主要功能是在指定的时间执行预定的任务,与Windows操作系统中的定时器(Timer)相比,Quartz.NET提供了更复杂、...
Quartz.NET是一个强大的开源任务调度库,专门为.NET Framework设计,同时也支持.NET Core。它提供了高度可配置和可扩展性,使开发人员能够轻松地在应用程序中实现定时任务。Quartz.NET的核心理念是允许开发者定义...
2. **持久性**:Quartz.NET支持将作业和触发器存储在数据库中,确保即使在服务重启后也能恢复调度信息。 3. **集群支持**:Quartz.NET可以配置为集群模式,允许多个服务器共享调度工作负载,提高系统的可用性和容错...
Quartz是一款功能强大的Java作业调度框架,用于在Java应用程序中安排和执行周期性任务。它提供了灵活的时间表定义,使得开发者能够轻松地控制任务的触发时间。本案例将通过两个Job(作业)和14个Trigger(触发器)来...
8. **Web应用集成**:在Web环境中,可以通过Servlet上下文监听器(ServletContextListener)来启动和停止Quartz调度器,使其与Web应用的生命周期同步。 9. **实战示例**:博客文章可能包括创建一个简单的定时任务,...
2. **可持久化**:Quartz支持将任务和触发器存储在数据库中,这意味着即使应用程序关闭,已经安排的任务也会在下次启动时继续执行,确保了任务调度的连续性。 3. **并发控制**:Quartz可以同时处理多个任务,有效地...
这个`.tar`文件是一种常见的Linux/Unix平台下的归档文件格式,用于打包多个文件和目录,便于存储、传输和分发。在你提供的文件列表中,`._quartz-1.8.6`可能是Mac OS X系统下的元数据文件,而`quartz-1.8.6`则包含了...
相当于数据库中的 Job、Windows 的计划任务、Unix/Linux 下的 Cron,但 Quartz 可以把排程控制的更精细。把一系列任务自动安置到一个作业中,然后再为这个作业创建一个调度器,到时这个作业就会自动执行了