`
LiYunpeng
  • 浏览: 952657 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Tomcat不影响启动时间 启动完成后执行一个操作的实现方法

阅读更多
关于Tomcat启动后台服务时候,在不影响启动时间的情况下,启动完成执行一个操作

主要思路是对后台进行一些初始化操作
但是,有可能初始化操作的时间长度是不可控的,甚至可能是在循环的操作
所以试过了如下方法是不太合适的
如:
1.配置一个Servlet默认自动启动
2.配置一个Listener来启动
3.实现Spring的InitializingBean接口
但是,这三种方法,都是伴随着Tomcat来启动的,也就是占用Tomcat的启动时间

以上是伴随启动的方法
以下是不影响Tomcat启动的并行方法

其实考虑到伴随启动,就想到了Flex开发通常用到的异步调用
无非就是新创建了一个线程来单独执行,这样Tomcat执行到相应的操作就可以直接继续下去了,不会处于等待的状态,避免了启动超时

具体思路如下
1.创建新的线程去执行(本方法没有实际实验,本文记录的是第二种方法,使用Quartz)
2.使用Quartz来配置一个任务执行
具体配置如下
实现Job接口的任务实现类
public class InitJob implements Job {

	@Override
	public void execute(JobExecutionContext arg0) throws JobExecutionException {
		// TODO Auto-generated method stub
	}
	
	public void executeA() throws JobExecutionException {
		// TODO Auto-generated method stub
		.........
	}

Spring配置文件中配置的任务
<bean id="initJob" class="com.xxx.services.InitJob" />
<!--定时器任务配置(开始)-->	 
	<!--配置JOB-->
	<bean id="initJobDetail"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="initJob" />
		<property name="targetMethod" value="executeA" />
<!-- 		<property name="arguments" /> -->
	</bean>
	<!--配置Trigger-->
	<bean id="initTrigger"  
	    class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
	    <property name="jobDetail" ref="initJobDetail" />  
	    <property name="startDelay" value="1000" />
	    <property name="repeatInterval" value="0" />
	    <property name="repeatCount" value="0" />
	</bean>
	<!--配置Scheduler-->
	<bean id="schedulerFactory"  
	    class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">  
	    <property name="triggers">  
	        <list>  
	            <ref bean="initTrigger" />  
	        </list>  
	    </property>  
	    <property name="autoStartup" value="true"/>
	</bean>
	<!--定时器任务配置(结束)-->

以上的配置不详细说明了,不明白意思的属性可以去API文档中查询
http://www.quartz-scheduler.org/api/1.8.5/

这里需要注意的一点就是Job的实现,是必须重写execute方法的,可是我反复实验,在targetMethod的value中写execute,就会报错,找不到execute方法,后来想了想,可能是参数的问题
copy了原来的方法,于是去掉了参数,就好用了
----------------------------

另外,再记录一个关于Quartz两种配置JobDetail的方法,直接在代码中创建JobDetail,会无法注入相应的接口实现,在稍后的博客中介绍
分享到:
评论

相关推荐

    tomcat启动执行java自定义方法

    tomcat启动时执行java自定义方法,一般用于启动时赋值情况。

    quartz 随tomcat启动执行一次

    ### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...

    tomcat启动时,在后台自动执行一线程

    要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加代码来创建一个后台线程。`init()`方法是Servlet生命周期中的初始化阶段,当Servlet被加载时,Tomcat会调用这个方法。我们可以在`...

    tomcat设置开机自启动.docx

    在本文中,我们将设置 Tomcat 的自动启动时间为“每次开机后”,以便在系统启动时自动启动 Tomcat 服务。 知识点 4: 设置 Tomcat 的启动文件 在设置 Tomcat 的自动启动时,需要指定 Tomcat 的启动文件 bat。用户...

    tomcat启动时定时循环执行内容(action)

    标题中的“tomcat启动时定时循环执行内容(action)”指的是在Tomcat服务器启动过程中,通过配置或者自定义代码实现一个定时任务,使得该任务在Tomcat启动后能够周期性地自动执行。这种机制常用于需要定期检查、更新...

    centos设置tomcat开机自启动

    完成上述配置后,可以通过以下步骤验证Tomcat是否能够成功在系统启动时自动启动: 1. **重启系统**: ```bash sudo reboot ``` 2. **检查Tomcat状态**: - 如果使用的是`rc.local`方法,则可以直接检查Tomcat...

    tomcat不能启动的原因总结

    **问题描述**:系统环境变量配置不当导致Tomcat启动失败。 **解决方法**:检查并确认`JAVA_HOME`和`CATALINA_HOME`等环境变量是否正确配置。确保指向正确的JDK和Tomcat安装路径。 ##### 4. 多个Tomcat版本共存 **...

    Tomcat开机自启动

    "Tomcat开机自启动" ...Tomcat 开机自启动可以通过创建自启动脚本、赋予权限、启动服务和设置开机自启动来实现。在本文中,我们介绍了 Tomcat 开机自启动的步骤和相关知识点,为读者提供了一个详细的指南。

    tomcat启动管理工具

    "Tomcat启动管理工具"指的是用于控制和监控Tomcat服务器的一系列方法和工具。 【描述】:Tomcat启动管理工具涵盖了启动、停止、监控以及配置Tomcat服务器的过程。这些工具可以帮助开发者有效地管理他们的应用服务,...

    tomcat启动|退出执行事件

    tomcat启动|退出执行事件类: import java.io.File; import java.io.FileWriter; import java.io.IOException; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import ...

    命令行启动关闭tomcat而不显示cmd界面

    标题中的“命令行启动关闭tomcat而不显示cmd界面”指的是在Windows操作系统中,通过命令行启动和关闭Apache Tomcat服务器,但不希望看到通常伴随命令行执行而出现的CMD窗口。这种方式可以使得桌面更加整洁,同时也...

    java 定时器任务timer 随tomcat启动而启动 同步启动

    我们通常写的timer都是用main方法写的定时器,但同样我们...不过有个致命伤就是集群方面跟quartz不能比,此方法代码做参考不错,如果要用,那么这个方法在一台服务器上执行就行了,其他服务器注释掉web中的监听就行了。

    tomcat6开机启动

    这里`Tomcat6`是服务名,`binPath`是Tomcat启动脚本的路径。 3. 设置服务启动类型,使其开机自动启动: ``` sc config Tomcat6 start= auto ``` 4. 启动服务: ``` net start Tomcat6 ``` **Linux/Unix系统...

    tomcat启动服务运行servlet

    标题“Tomcat启动服务运行Servlet”涉及到的是Java Web开发中的核心概念,主要涵盖Tomcat服务器的启动过程以及Servlet的执行机制。Tomcat是一款开源、免费的Web应用服务器,广泛用于部署Java Servlet和JavaServer ...

    tomcat自启动

    然而,默认情况下,Tomcat并不会随着系统启动而自动运行,这对于服务器管理和运维来说是一个不便。因此,实现Tomcat的自启动成为许多开发者和运维人员追求的目标。本文将详细阐述如何让解压缩版的Tomcat在系统启动时...

    Tomcat启动顺序

    【标题】:Tomcat启动顺序 【描述】:Tomcat作为Apache软件基金会的开源Java Servlet容器,其启动过程是理解其工作原理的关键部分。Tomcat的启动顺序涉及到多个层次的加载,从Bootstrap类开始,逐步加载系统配置、...

    Windows 启动tomcat服务bat 可执行脚本

    Windows系统下 启动tomcat服务bat 可执行脚本,当开发人员想要通过在java中开发一个启动Windows系统下tomcat的脚本文件时,就可以使用我这个

    Tomcat停止与启动shell

    标题 "Tomcat停止与启动shell" 指的是一个用于管理Tomcat服务器的脚本,通常这个`restart.sh`文件是用来自动化Tomcat服务的启动和停止操作的。Tomcat是Apache软件基金会的一个开源项目,是一个广泛使用的Java ...

    Linux操作系统下两种自动启动Tomcat的方法

    然而,这种方法的缺点在于它不能指定启动Tomcat服务的用户,可能导致Tomcat以root用户运行,这是一个严重的安全风险,因为如果Tomcat被攻击,攻击者将拥有root权限。 为了克服上述问题,我们需要采用更复杂但专业的...

    tomcat设置开机自启动介绍

    完成环境变量的配置后,接下来是创建Windows服务,使Tomcat能够作为一项系统服务运行,从而实现开机自启动。操作方法如下: 1. 打开命令提示符(cmd),切换到Tomcat的bin目录下,通常路径为`%CATALINA_HOME%\bin`...

Global site tag (gtag.js) - Google Analytics