`
vortexchoo
  • 浏览: 66059 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

定时器第二集

    博客分类:
  • java
 
阅读更多

前天的时候写了定时器监控网站的文章,当时理解的是找台机器放上去把main运行了就OK了,谁知领导说你做一个能挂服务器上的,到时候做个webservice接口,调用短信平台,如果网站无法登陆就直接发短信给用户。

于是就有了下面的东西:

先说jar包:spring.jar,quartz-all-1.8.5.jar,log4j-1.2.15.jar,axis.jar

先导包, 然后建立package创建类,我这里创建的类名为:QuartzJob,类中创建一个名为work的方法

之后再WEB-INF下简历一个xml文件,applicationContext_quartz.xml

具体内容为:

<?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:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">


        <!-- 要调用的工作类 -->
        <bean id="quartzJob" class="你的类的路径"></bean>
        <!-- 定义调用对象和调用对象的方法 -->
         <bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 调用的类 -->
            <property name="targetObject">
                <ref bean="quartzJob"/>
            </property>
            <!-- 调用类中的方法 -->
            <property name="targetMethod">
                <value>此定时器执行的类中的方法名</value>
            </property>
        </bean>

        <!-- 定义触发时间 -->
        <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
            <property name="jobDetail">
                <ref bean="jobTask"/>
            </property>
            <!-- cron表达式 -->
            <property name="cronExpression">
                <!-- 每隔10秒执行一次-->
                <value>0/10 * * * * ?</value>
            </property>
        </bean>
        <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
        <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="doTime"/>
                </list>
            </property>
        </bean>
</beans>

最后需要做的就是配置web.xml文件

具体内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 加载spring -->
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>
    /WEB-INF/applicationContext*.xml
   </param-value>
</context-param>
<servlet>
   <servlet-name>context</servlet-name>
   <servlet-class>
    org.springframework.web.context.ContextLoaderServlet
   </servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
</web-app>

-----至此一个定时器就做好了,具体的方法体我就不写了。

下来来说webserice远程调用

 package com.foresee.ws;

import java.rmi.RemoteException;

import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class WsUtil {
 
 private WsUtil(){}
 
  private static WsUtil instance = null;
 
 public static WsUtil getInstance(){
  if(instance==null){
   instance = new WsUtil();
  }
  return instance;
 }
 
 static String URL = "http://具体暴露接口的URL?wsdl";//这里涉及公司隐私就不写了
 public static String invokeWs(String sid, String xml){
  String returnXml = null;
  Service service = new Service();
  Call call = null;
  
  try {
   call = (Call) service.createCall();
   call.setTargetEndpointAddress(URL);
   call.setTimeout(new Integer("400"));
   call.setOperationName(new QName(URL,"invoke"));
   returnXml = (String) call.invoke(new Object[]{sid, xml});
  } catch (ServiceException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (RemoteException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return returnXml;
 }
}

上面把这个类加工成了单例模式,因为是挂在定时服务上的,所以没必要每次都去实例化。

返回的是一个XML文件,因为webservice是用xml文件来进行数据交互的。如果有必要可以将xml文件中的内容解析出来,google上现成的解析代码是有的。

至此搞定了。酷

 

分享到:
评论

相关推荐

    单片机中断定时器定时器定时器

    第二节 MCS-51系列单片机的中断系统: MCS-51系列单片机的中断系统由多个寄存器组成,如TCON、IE、IP等。TCON是中断控制寄存器,用于控制中断请求的标志和触发方式。IE是中断允许控制寄存器,用于控制中断的允许和...

    【STM32】HAL库-使用一个定时器使能另一个定时器-主定时器触发模式demo

    如果先初始化从模式定时器3,定时器3工作在触发模式下,TRGI信号来源为定时器2的TRGO,而定时器2还未初始化,故TRGO信号来源默认是UG位,故在定时器2初始化过程中会置位UG位,从而触发定时器3的从模式触发模式,导致...

    辅助软件 定时器计算器 辅助软件 定时器计算器

    辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 ...

    555定时器555定时器

    #### 二、555定时器的分类与结构 ##### 2.1 定时器分类 555定时器根据内部元件的不同可分为双极型(TTL型)和单极型两种类型。双极型定时器内部使用晶体管作为核心元件,而单极型则采用场效应管。此外,根据单片...

    MFC定时器的使用 MFC定时器的使用

    2. **窗口定时器(CTimer)** - CTimer类提供了更面向对象的定时器处理方式,不需要处理WM_TIMER消息。 - 创建CTimer对象时,可以指定一个时间间隔和一个成员函数作为回调,当定时器触发时,这个成员函数会被调用...

    STM32 定时器级联

    2. 设置主定时器的计数模式和预分频器,以决定计数的频率和范围。 3. 配置从定时器的同步模式,通常选择更新事件同步(TIM_SlaveConfig函数中的TIM_SlaveMode_Update)。 4. 启用定时器的中断和DMA请求,如果需要的...

    fzTThreadTimer_delphi定时器_delphi_线程定时器_

    2. **线程安全**:由于定时器操作可能与主线程或其他线程并发执行,因此必须确保所有共享数据访问都是线程安全的,通常通过同步原语(如CriticalSection或Mutex)来实现。 3. **事件驱动编程**:fzTThreadTimer会...

    ACE完整牛逼定时器

    2. **定义回调**:创建一个继承自`ACE_Event_Handler`的类,重写`handle_timeout()`方法来定义定时器到期后的行为。 3. **添加定时器**:使用`ACE_Timer_Queue::schedule()`方法添加定时器,传入`ACE_Time_Value`、...

    定时器0和定时器1 ARM PROTEUS

    2. 计数器预装载寄存器:在启动定时器之前,需要将期望的计数值写入预装载寄存器。当计数器计数达到这个值时,就会触发中断或者复位计数器。 3. 中断设置:每个定时器都可能有自己的中断标志位,当计数器达到预设值...

    ESP32-S2,硬件定时器

    2. 初始化定时器:调用`timer_init()`函数,指定定时器编号和工作模式。 3. 设置计数器值:使用`timer_set_counter_value()`设定初始计数值或预设阈值。 4. 配置中断:通过`timer_enable_intr()`开启中断,并使用`...

    js 封装定时器解决多次调用定时器叠加问题及定时器无法清除的问题

    在JavaScript编程中,定时器(Timer)是常用于实现异步操作的重要工具,例如延迟执行、周期性执行任务。然而,如果不妥善管理,定时器可能会引发一些问题,比如多次调用定时器导致叠加,以及定时器无法清除。本文将...

    555集成定时器 555集成定时器 555集成定时器

    555集成定时器是一种非常常见的电子元器件,其在电子设计中扮演着重要的角色,广泛应用在各种电子设备中,如电子控制、检测、仪表、家电、音响、报警系统、玩具等。555定时器的独特之处在于它结合了模拟电路和数字...

    51单片机定时器C语言程序

    ### 二、定时器的基本概念 定时器是一种可以实现定时或计数功能的硬件模块。在51单片机中,有两个16位的定时器/计数器,即定时器0(Timer0)和定时器1(Timer1)。这两个定时器既可以作为定时器使用,也可以作为...

    51定时器计算工具

    2. **定时时间计算**:输入所需的时间周期或频率,工具会自动计算出对应的定时器初值。这涵盖了定时器的预分频器设置和定时寄存器的数值,帮助开发者快速配置定时器。 3. **计数次数计算**:在计数器模式下,可以...

    多定时器复用一个硬件定时器

    在嵌入式系统或者实时操作系统(RTOS)的开发中,定时器是不可或缺的组件,用于实现各种时间相关的功能,如任务调度、事件触发、超时检测等。标题提到的“多定时器复用一个硬件定时器”是一种高效利用硬件资源的技术...

    C#调用多媒体定时器

    2. 创建接口:为了让C#代码能够访问C++类,我们需要定义一个匹配的.NET接口。这个接口将包含C++类中的方法声明,例如启动定时器、停止定时器等。 3. 实例化并调用:在C#代码中,我们通过接口实例化C++/CLR封装的...

    STM32定时器计算工具

    2. **主频**:STM32微控制器的主频是指其处理器运行的时钟频率,通常以MHz为单位。它是计算定时器周期的基础,因为定时器的计数值是相对于主频来确定的。 3. **预分频器**:预分频器(Prescaler)用于降低系统时钟...

    MFC高精度定时器,多媒体定时器,VS2019,C++

    2. `timesetDlg.cpp` 和 `timesetDlg.h`:分别包含了对话框类的实现和声明,对话框是MFC应用程序中用户交互的主要界面。 3. `timeset.cpp` 和 `timeset.h`:这是主应用程序类的实现和声明,其中会包含初始化、消息...

    TMS320F2812 定时器1和定时器2的使用

    在不依赖BIOS(板级支持包)的情况下,我们可以直接利用其内部的硬件资源,如定时器1和定时器2进行系统定时和中断处理。这两个定时器与定时器0在功能上相似,但提供了额外的灵活性,以满足不同的应用需求。 定时器1...

    uni-app定时器实例

    2. uni-app中的定时器使用: - 在uni-app中,我们同样可以直接使用JavaScript的定时器API。例如,要在5秒后执行某个函数,可以这样写: ```javascript setTimeout(function() { console.log('定时器触发'); }, ...

Global site tag (gtag.js) - Google Analytics