1.配置web.xml

  在web.xml配置使用springmvc框架,其他配置略。

     <display-name>xxx.com</display-name>

     <!-- 配置Spring MVC DispatcherServlet -->
<servlet>
<servlet-name>MVC DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数 -->
<init-param>
<!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
<param-name>contextConfigLocation</param-name>
<!-- 下面这个参数是指定springmvc的配置文件所在 -->
<param-value>classpath:com/jieli/config/springmvc-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <!-- 配置DispatcherServlet所需要拦截的 url -->
<servlet-mapping>
<servlet-name>MVC DispatcherServlet</servlet-name>
<!-- <url-pattern>/</url-pattern> 这样配置的话,所有页面都会进入拦截器
这个在springmvc 的配置文件里还有对其进行再次配置-->
<url-pattern>/</url-pattern>
</servlet-mapping>

2.配置springmvc-context.xml

  根据web.xml里面的指定配置springmvc 核心代码在第18-19行和第85-92行进行配置。

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd" > <!-- ==============基础配置 开始============= -->
<!-- 开启controller注解支持 -->
<!-- use-default-filters="false" 只扫描指定的注解 -->
<context:component-scan base-package="com.jieli.controller" use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan> <!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean> <!-- 如果当前请求为"/"时,则转发到"index" -->
<mvc:view-controller path="/" view-name="forward:index"/> <!-- 默认的注解映射的支持 -->
<mvc:annotation-driven /> <!-- 静态资源映射 不经过controller-->
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" />
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" />
<mvc:resources mapping="/fonts/**" location="/WEB-INF/fonts/" />
<mvc:resources mapping="/plugins/**" location="/WEB-INF/plugins/" />
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" />
<mvc:resources mapping="/html/**" location="/WEB-INF/html/" />
<mvc:resources mapping="/jsp/**" location="/WEB-INF/jsp/" />
<!-- 当上面要访问的静态资源不包括在上面的配置中时,则根据此配置来访问 -->
<mvc:default-servlet-handler/> <!-- 自定义拦截器 准备用于权限管理 -->
<!-- <mvc:interceptors> -->
<!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 -->
<!-- <bean class="com.demo.web.auth.AuthInterceptor"></bean> -->
<!-- <mvc:interceptor> -->
<!-- <mvc:mapping path="/secure/*"/> -->
<!-- <bean class="*****.***Interceptor"></bean> -->
<!-- </mvc:interceptor> -->
<!-- </mvc:interceptors> --> <!-- ==============基础配置 结束============= --> <!-- =========下面的配置是一些插件化配置====== -->
<!-- 支持上传文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为1MB -->
<property name="maxUploadSize">
<value>2048576</value>
</property>
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean> <!-- 权限控制, 作用是让所有的请求动通过拦截器 -->
<mvc:interceptors>
<!-- 如果不定义 mvc:mapping path 将拦截所有的URL请求 -->
<bean class="com.jieli.interceptor.AuthInterceptor"></bean>
</mvc:interceptors> <!-- 增加定时任务插件 -->
<context:annotation-config></context:annotation-config>
<!-- spring 扫描注解配置 -->
<context:component-scan base-package="com.jieli.plugins.timetask">
</context:component-scan>
<!-- 开启这个配置 spring才能识别@Scheduled注解 -->
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
<task:scheduler id="qbScheduler" pool-size="10"/> <!-- 增加邮件 -->
</beans>

3.使用注解方式

 package com.jieli.plugins.timetask;

 import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; @Component("taskJob")
public class TestEverySecond {
@Scheduled(cron = "1/5 * * * * ?")
public void testTask(){
System.out.println(System.currentTimeMillis());
}
}

  这样就可以了,就会每5秒进行一次任务。一般做一些定时通知,定时备份,定时清理等任务。

4.出现问题及解决

  这样配置完成后,发现启动服务后,这个testTask任务,都是执行两次的。查看tomcat打印的日志,发现定时任务的启动两次的,或者说整个web服务是启动两次的。以前没有这个定时任务,由于启动时日志太多,也没有报错,所以一直没有太注意。web容器启动了两次服务,就产生了两个定时器实例。经上网查询,是有两种可能,一个是spring配置出错,一个是tomcat配置出错。关于配置出错,请参看这篇文章: http://blog.csdn.net/chaijunkun/article/details/6925889 。

  我是tomcat配置出错。具体出现问题如下:

  默认tomcat配置文件conf/server.xml 里面Host段是这个样子的

       <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>

  我们把在eclipse下的项目部署到webapps文件目录下后,启动服务后,在浏览器中访问的地址是 Http://127.0.0.1:8080/<项目名称>/  这样子进行访问。当我们不要项目名称作为访问路径,想通过ip、端口直接进行访问时,配置如下:

       <Host name="localhost"  appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/JieLiERP" debug="0" reloadable="true" /> </Host>

  增加context段,进行配置。就这样一直无事,直到最近增加定时任务功能,才发现原来这样配置会出现项目启动两次的情况。也是导致定时任务被调用两次的原因。我的解决办法是 配置如下:

       <Host name="localhost"  appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="/webapps/JieLiERP" debug="0" reloadable="true" /> </Host>

  就这样解决问题。 还有Context段,tomcat 6.0 和 tomcat 7.0及以上的配置有点区别

 <!-- tomcat 6.0 -->
<Context path="" docBase="/webapps/JieLiERP" debug="0" reloadable="true" /> <!-- tomcat 7.0及以上 -->
<Context path="/" docBase="webapps/JieLiERP" debug="0" reloadable="true" />

  本文地址: http://www.cnblogs.com/wunaozai/p/5026765.html

JavaWEB springmvc 使用定时任务的更多相关文章

  1. SpringMVC中定时任务配置

    在项目中使用定时任务是常有的事,比如每天定时进行数据同步或者备份等等. 以前在从事C语言开发的时候,定时任务都是通过写个shell脚本,然后添加到linux定时任务中进行调度的. 现在使用Spring ...

  2. springmvc添加定时任务

    springmvc.xml文件中添加如下配置 <bean id="ClearTempRoomLogTask" class="com.test.listener.St ...

  3. springMvc 添加定时任务

    1.创建定时类 import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stere ...

  4. Springmvc配置定时任务注解开发

    1.添加命名空间和xsd约束 xmlns:task="http://www.springframework.org/schema/task" http://www.springfr ...

  5. springMVC定时任务总是执行两次

    情况: springmvc的定时任务在本机上测试的时候没有问题,但是放到测试服务器上的时候总是执行两次: 探索:(网上搜索) 一.spring注入的时候实例化了多次,说是spring-servlet. ...

  6. springmvc 学习笔记

    @Autowired,@RequestMapping,@RequestParam 使用该注解,引入对象时, 可以省略setter getter.减少代码显示. @AutowiredSimService ...

  7. spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务

    spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务 >>>>>>>>>>>> ...

  8. javaweb项目-医者天下 (Spring+SpringMVC+MyBatis)

    项目下载地址:http://download.csdn.net/detail/qq_33599520/9826683 项目完整结构图: 项目简介: 医者天下项目是一个基于Spring+SpringMV ...

  9. Java SpringMVC 定时任务

    1.web.xml 2.spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

随机推荐

  1. ppt整体配色方案

        背景色建议以灰色或者被色为主.       在百度云盘也有大量的ppt模板,还是非常不错的.http://pan.baidu.com/s/1bpDf7Fh    

  2. django之创建第7-3个项目-在站点blog下单独创建urls.py文件

    1.在站点blog下单独创建urls.py文件 # -*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url ...

  3. 纪念品分组(NOIP2007)

    纪念品分组(NOIP2007)[题目描述] 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作. 为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把 购来的纪念品根据价格进行分组,但每组最多只 ...

  4. Python是解释性语言吗? 直到看到有 python py、pyc、pyo、pyd 文件

    py是源文件,pyc是源文件编译后的文件,pyo是源文件优化编译后的文件,pyd是其他语言写的python库 1. Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去, ...

  5. asiHttpRequst 超时代码判断

    - (void)requestFailed:(ASIHTTPRequest *)request{ NSDictionary *userInfo = [request userInfo]; id del ...

  6. [转]GFS架构分析

    Google文件系统(Google File System,GFS)是构建在廉价的服务器之上的大型分布式系统.它将服务器故障视为正常现象,通过软件的方式自动容错,在保证系统可靠性和可用性的同时,大大减 ...

  7. null的数据类型

    Oracle的NULL代表的含义是不确定,那么不确定的东西也会有确定的数据类型吗?或者换个说法,NULL在Oracle中的默认数据类型是什么,下面就来探讨这个问题. 首先公布答案,NULL的默认类型是 ...

  8. ACM经验分享[转]

    明确规则 规则:以最少的时间过题 (这意味着0ms与1000ms是一样的) 了解规则,善用规则 虽然这个题我不会但是AC是没有问题的 --ACRush 大力出奇迹 学会对拍数据,准备好对拍脚本:测试很 ...

  9. 自动化运维之Cobbler自动化部署安装操作系统

    Cobbler概述: Cobbler可以用来快速建立 Linux 网络安装环境,它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会. 在生产环境中,经常批 ...

  10. java结合XPATH解析XML

    做自动化测试的人,都应该对XPATH很熟悉了,但是在用JAVA解析XML时,我们通常是一层层的遍历进去,这样的代码的局限性很大,也不方便,于是我们结合一下XPATH,来解决这个问题. 所需要的JAR包 ...