`
tangwenchao86
  • 浏览: 378738 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java轮询程序的实现

阅读更多
        有这样一项需求:自助建站产品到期之后,通过程序自己把它关闭了,然后待客户续费之后再重新开通,如果三个月客户一直不续费,则通过程序把当前自助建站产品删除了。要求是每三分钟执行一次。以下是实现过程。
一。首先写了一个LoopVZZJZ.java的类,里面包含两个方法:
a.loopServiceExpired()说明:检查服务是否进入续费期,就是说是否要调用关闭接口。
String sql = "select id, service_code,domain_name,website_id from SERVICE_VIRTUALHOST where ";
		sql += " service_state='" + AgentConstants.SERVICE_STATE_OPENED + "'";
		sql += " and taste_type='" + AgentConstants.TASTE_TYPE_NOT + "'";
		sql += " and to_char(service_end_date,'yyyy-MM-dd')<= '" + DateUtil.getCurrentDate() + "'";

说明:这个sql语句就是说要查询是否有自助建站商品到期时间小于当前时间并且服务状态还处在服务期的,查出来之后调用调子商务部的接口将其关闭,然后将其状态置为续费期。

b.loopDeleteService()说明:是否有三个月还没有续费的自助建站产品
String sql = "select service_code from SERVICE_VIRTUALHOST where ";
		sql += " service_state='" + AgentConstants.SERVICE_STATE_RENEWING + "'";
		sql += " and taste_type='" + AgentConstants.TASTE_TYPE_NOT + "'";
		sql += " and service_end_date+90 <= to_date('"+DateUtil.getCurrentDate()+" 23:59:59','yyyy-mm-dd hh24:mi:ss')";


二。配置loopVZZJZ.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >
<beans>

   <!-- update by tangwenchao 2010-08-26 自助建站轮循 -->

	<bean name="loopVZZJZManage" autowire="byName" class="com.sitechasia.xinnet.agent.serv.service.impl.LoopVZZJZ"></bean>

     <!-- 服务到期轮询 -->
    <!--定义定时执行testQuarz 这个bean中的sayHello()方法-->
    <bean id="loopServiceExpired_methodVH"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="loopVZZJZManage" />
        </property>
        <property name="targetMethod">
            <value>loopServiceExpired</value>
        </property>
    </bean>
    <!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是helloworldTask,即触发器去触发哪个bean..并且我们还定义了触发的时间:每三分钟一次--!>
    <bean id="loopServiceExpiredTimeVH"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="loopServiceExpired_methodVH" />
        </property>
        <property name="cronExpression">
            <!-- 关键在配置此表达式 -->
            <value>0 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * *  ? </value><!-- [color=red]从左到右分别是:秒(0-59) 分(0-59) 时(0-23) 日期(1-31) 月份(1-12) 星期(1-7) 空格为单位的分隔符,*代表所有的时间 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 代表没三分钟执行一次[/color]-->
        </property>
    </bean>
    
    
    
    <!-- 服务删除轮询 -->
    <!--定义定时执行testQuarz 这个bean中的sayHello()方法-->
    <bean id="loopServiceDelete_methodVH"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="loopVZZJZManage" />
        </property>
        <property name="targetMethod">
            <value>loopDeleteService</value>
        </property>
    </bean>
    <!--触发器的bean的设置,在这里我们设置了我们要触发的jobDetail是哪个。这里我们定义了要触发的jobDetail是helloworldTask,即触发器去触发哪个bean..并且我们还定义了触发的时间:每天5:17pm-->
    <bean id="loopServiceDeleteTimeVH"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="loopServiceDelete_methodVH" />
        </property>
        <property name="cronExpression">
            <!-- 关键在配置此表达式 -->
            <value>0 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * *  ? </value><!-- 从左到右分别是:秒(0-59) 分(0-59) 时(0-23) 日期(1-31) 月份(1-12) 星期(1-7) -->
        </property>
    </bean>

    

    <!--管理触发器的总设置,管理我们的触发器列表,可以在bean的list中放置多个触发器。
    -->
    <bean autowire="no"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                
               <!--   <ref local="loopRenewExpired_timeVH" />
               
                <ref local="loopTasteExpired_timeVH" />
                <ref local="loopSubProductExpired_timeVH" />
                <ref local="loopActivateExpired_timeVH" />
                <ref local="loopOpenTaste_timeVH" />
                <ref local="loopMessage_timeVH" />
                 <ref local="loopDeleteTransition_timeVH" />
                <ref local="loopTransitionVHostExpired_timeVH" />
                
                <ref local="loopUpgrade_timeVH" />-->
                
                <ref local="loopServiceDeleteTimeVH" />
                <ref local="loopServiceExpiredTimeVH" />
               
				
            </list>
        </property>
    </bean>
</beans>
分享到:
评论
6 楼 361010911 2013-02-27  
好乱!- - 
5 楼 wangjian95 2012-05-14  
哥,笑,而不语,飘过
4 楼 tangwenchao86 2010-11-16  
xuwenbo 写道
感觉有点乱...


我自己能明白,你要是不明白的话我可以给你讲讲。
3 楼 tangwenchao86 2010-11-16  
redsaga 写道
写这么乱,贴上来,自己都没理清楚吧,

我自己能看明白,你要是不明白我可以给你讲讲。
2 楼 redsaga 2010-11-13  
写这么乱,贴上来,自己都没理清楚吧,
1 楼 xuwenbo 2010-10-18  
感觉有点乱...

相关推荐

    一个轮询的java案例

    标题中的“一个轮询的Java...结合标签“java轮询”,我们可以理解这个案例是关于如何在Java程序中实现轮询机制的示例。通过分析这个有趣的降落伞问题,我们可以更好地理解轮询的概念,并将其应用于实际的编程场景中。

    Java播放本地声音,实现系统报警

    ### Java播放本地声音实现系统报警 #### 背景与目的 在开发应用程序时,有时候我们需要为用户添加声音反馈功能,比如系统报警提示。通过Java编程语言,我们可以轻松地实现这一功能。本篇文章将详细介绍如何利用...

    JAVA聊天程序(仿QQ)已附数据库

    【标题】:“JAVA聊天程序(仿QQ)已附数据库” 这个项目是一个基于JAVA语言开发的聊天应用程序,设计灵感来源于流行的即时通讯软件QQ。它旨在提供类似QQ的功能,如用户注册、登录、发送和接收消息、建立好友关系等...

    Java实现Socket长连接和短连接

    在Java编程中,Socket是网络通信的基础,它允许两个应用程序通过TCP/IP协议进行数据传输。Socket连接分为两种类型:长连接和短连接。这两种连接方式各有特点,适用于不同的应用场景。 **1. 短连接(Short ...

    Android两种轮询的实现方法

    Android 轮询机制是指在 Android 应用程序中,如何实现轮询的机制,以便在一定的时间间隔内,执行特定的任务或操作。在本文中,我们将详细介绍 Android 中两种常见的轮询机制的实现方法,并提供相应的示例代码。 一...

    polls-spring-boot:Spring Boot轮询应用程序的实现-注册,创建轮询和投票

    Spring Boot&Angular(6)轮询应用程序的实现-全栈应用程序的示例。 演示: 测试凭证: 用户名:“用户”或“管理员” 密码:“密码” 特征: 具有用户/管理员角色系统的JWT身份验证 如何捆绑Angular和Spring ...

    java实现scep源码

    总之,jscep是一个强大的Java库,它简化了SCEP协议的实现,使得开发者可以轻松地在各种设备和应用程序中集成证书注册功能。通过深入研究其源码,我们可以更好地理解SCEP协议的细节,以及如何在Java环境中实现PKI相关...

    Java编程入门(1.2)异步事件之轮询与中断Java开发

    在Java编程中,异步事件处理是提高程序性能和响应...总之,掌握Java的异步事件处理,特别是轮询和中断,对于编写高性能、响应迅速的程序至关重要。结合实践和学习资源,不断探索和优化,才能在Java开发领域更上一层楼。

    java实现服务器,android上客户端,实现聊天

    `MyServer`这个文件很可能就是一个简单的Java服务器程序,它监听特定的端口,等待来自客户端的连接请求。服务器端的主要任务是接收客户端发送的数据,进行必要的处理(如存储、解析等),然后将回应发送回客户端。...

    java后台实现支付宝支付接口和支付宝订单查询接口(前端为APP)

    Java后台实现支付宝支付接口和支付宝订单查询接口 本文主要介绍了Java后台实现支付宝支付接口和支付宝订单查询接口的详细过程,旨在帮助开发者快速实现支付宝支付功能。 一、申请公司企业账号并开通应用 首先,...

    java nio 实现socket

    ### Java NIO 实现Socket通信详解 #### 一、NIO与传统IO的区别及优势 在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O...

    在 Java 上实现的 Socket.IO 服务器 实时java框架

    该项目是Socket.IO服务器的开源 Java 实现。基于Netty服务器框架。 根据 Apache License 2.0 获得许可。 支持1.x - 4.x版本的Socket.IO 客户端 支持 xhr 轮询传输 支持websocket传输 支持命名空间和房间 支持ack...

    JAVA电子白板即时通信程序

    【JAVA电子白板即时通信程序】是一个基于JAVA编程语言实现的交互式应用程序,它整合了电子白板和即时通信的功能,使得用户可以在网络环境中进行实时的协作和沟通。这款程序的核心在于提供一个共享的虚拟空间,让参与...

    java实现监听数据库源码

    Java 6引入了一个新的特性——Java Database Change Notification,允许应用程序订阅数据库的改变。当数据库中的指定表发生变化时,JDBC驱动会通知订阅者。这是一个相对低级别的API,需要对数据库驱动有深入理解...

    java聊天程序

    Java聊天程序是一种基于Java编程语言实现的交互式通信软件,它可以允许用户通过网络进行实时的文字、语音甚至视频交流。在Java领域,开发聊天程序涉及到许多关键的技术点,这些技术包括但不限于网络编程、多线程、...

    JAVA+JSP实现模拟登录主动向用户推送

    每当服务器有新信息时,服务器端的Java程序可以通过WebSocket或轮询机制(如长轮询)来通知客户端。WebSocket是一种双向通信协议,可以实现实时推送,而长轮询则是客户端定期询问服务器是否有新信息,直到收到响应。...

    java使用ajax实现进度条

    ### Java使用Ajax实现进度条详解 在Web应用开发过程中,为用户提供实时的文件上传或处理状态反馈至关重要。本文将详细探讨如何使用Java结合Ajax技术来实现实时的进度条显示功能,以提升用户体验。 #### 一、理解...

    Java语言程序设计实验指导电子教案第08章PPT学习教案.pptx

    总之,Java的多线程编程是其强大之处,它使得程序能够高效地利用系统资源,实现并发处理,提升性能,同时提供了丰富的同步机制来保证程序的正确性。理解和掌握多线程编程对于Java开发者来说至关重要,它能够帮助编写...

    山寨版QQ--存Java实现!!

    数据库管理在Java中通常通过JDBC(Java Database Connectivity)来实现,允许程序与各种数据库系统进行交互。 登录功能是任何社交应用的基础,JavaQQ的登录模块可能包含用户身份验证和会话管理。在Java中,可以使用...

    即时通信系统(Java实现).

    6. **消息推送**:Java实现的即时通信系统中,可以采用发布/订阅模式或者长轮询机制来实现消息的实时推送。发布/订阅模式下,消息中心负责将消息分发给订阅了该主题的客户端;长轮询则是客户端保持一个持久的HTTP...

Global site tag (gtag.js) - Google Analytics