`
wwwxxx286
  • 浏览: 50400 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Commonj Timer 使用

阅读更多
Java 定时器之commonj timer,jms & mdb驱动,servlet 初始化:

Business:
package com.wxs.simple.ejb;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.naming.InitialContext;

import com.wx.simple.listener.ScheduleTaskListener;

import commonj.timers.Timer;
import commonj.timers.TimerListener;
import commonj.timers.TimerManager;

@Stateless(name = "ScheduleBean_stateless", mappedName = "ScheduleBean")
@Remote(ScheduleBeanRemote.class)
public class ScheduleBean implements ScheduleBeanRemote {
	Timer timer = null;

	@PostConstruct
	public void init() {
		System.out
				.println("service() entering try block to intialize the timer from JNDI");
		try {
			System.out.println("In ScheduleBean -> scheduleService method");
			InitialContext ic = new InitialContext();
			TimerManager jobScheduler = (TimerManager) ic
					.lookup("weblogic.JobScheduler");
			System.out.println("jobScheduler reference " + jobScheduler);
			TimerListener timerListener = new ScheduleTaskListener();
			System.out.println("timerListener reference " + timerListener);
			timer = jobScheduler.schedule(timerListener, 0, 30 * 1000);

			// execute this job every 5 seconds
			System.out.println("service() started the timer");
		} catch (Throwable t) {
			System.out
					.println("service() error initializing timer manager with JNDI name weblogic.JobScheduler "
							+ t);
		}
	}
	
	@PreDestroy
	public void clearTimer(){
		System.out.println("Begin stop timer!");
		timer.cancel();
		System.out.println("End stop timer!");
	}

	public void scheduleService() {
		System.out
				.println("In ScheduleBean ->scheduleService method, do Task... ");
	}
}



jms:
package com.wx.simple.listener;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import commonj.timers.Timer;
import commonj.timers.TimerListener;

public class ScheduleTaskListener implements Serializable, TimerListener {

	private static final long serialVersionUID = 8313912206357147939L;

	public void timerExpired(Timer timer) {
		SimpleDateFormat sdf = new SimpleDateFormat();
		System.out.println("In ScheduleTaskListener-> timerExpired method"
				+ sdf.format(new Date()));
		try {
			InitialContext iniCtx = new InitialContext(System.getProperties());
			TopicConnectionFactory factory = (TopicConnectionFactory) iniCtx
					.lookup("javax.jms.TopicConnectionFactory");
			TopicConnection con = factory.createTopicConnection();
			TopicSession session = con.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
			Topic topic = (Topic)iniCtx.lookup("jms/Topic");
			TopicPublisher pub = session.createPublisher(topic);
			TextMessage tmsg = session.createTextMessage();
			tmsg.setText("Schedule for batch distribution...");
			System.out.println("Begin send message...");
			pub.send(tmsg);
			System.out.println("End send message....");
			pub.close();
			System.out.println("End ScheduleTaskListener-> timerExpired method");
		} catch (NamingException e) {
			e.printStackTrace();
		} catch (JMSException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
}


mdb:

package com.wx.simple.ejb;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;

@MessageDriven(activationConfig = {
		@ActivationConfigProperty(propertyName="destinationType",
				propertyValue="javax.jms.Topic")
})
public class DoBatchBusiness implements MessageListener{

	public void onMessage(Message msg) {
		System.out.println("In method onMessage");
		if (null != msg) {
			System.out.println("received message from schedule task listener:"+msg);
		}
	}

}

0
4
分享到:
评论

相关推荐

    commonj Timer

    commonj.timers.Timer.class commonj.timers.TimerListener.class commonj.timers.TimerManager.class commonj.work.RemoteWorkItem.class commonj.work.Work.class commonj.work.WorkCompletedException.class ...

    commonj系列包

    commonj.timers.Timer.java commonj.timers.TimerListener.java commonj.timers.TimerManager.java commonj/work/package.html commonj.work.RemoteWorkItem.java commonj.work.Work.java commonj.work....

    commonj.sdo-2.1.1

    META-INF/MANIFEST.MF commonj.sdo.ChangeSummary.class commonj.sdo.DataGraph.class commonj.sdo.DataObject.class commonj.sdo.helper.CopyHelper.class commonj.sdo.helper.DataFactory.class commonj.sdo....

    commonj.sdo

    commonj.sdo.ChangeSummary.class commonj.sdo.DataGraph.class commonj.sdo.DataObject.class commonj.sdo.helper.CopyHelper.class commonj.sdo.helper.DataFactory.class commonj.sdo.helper.DataHelper.class ...

    commonj.sdo.jar

    5. **Helper Classes**:在"commonj.sdo.jar"中,可能包含了一些帮助类,这些类提供了一组方法来简化SDO的使用,例如创建、修改和查询数据对象。 6. **Version Compatibility**:使用特定版本的库(如2.1.1)时,...

    commonj-twm

    commonj-twm.jar 包,包含timers和work两部分

    sdo-2.1.1-edr-spec.zipsdo-2.1.1-edr-spec.zip

    2. **commonj** - 这可能是一个目录或文件,指的是CommonJ,这是一个Java平台上的开源项目,提供了多线程和任务编程的API。在SDO上下文中,这可能与数据服务如何利用多线程处理和并发性有关,或者CommonJ可能被用作...

    Jboss Commonj Service-开源

    基于myFoo实现的Commonj Jboss服务。 当您要在jboss下运行WorkManager和Timer时,此mbean很有用。 (例如,将应用程序从ibm或bea移植到jboss)。 使用Foo-CommonJ作为JSR 237实现

    quartz-2.1.6.zip

    quartz-commonj-2.1.6.jar 支持CommonJ的Timer服务,这使得Quartz可以与支持CommonJ的应用服务器无缝集成,如WebLogic或JBOSS。 LICENSE.txt 文件是Quartz的许可协议,详细说明了使用Quartz的法律条款和限制。 在...

    搬运 方案一 - 副本.zip_TCS34725_commonj3s_搬运小车_搬运机器人;步进电机_步进电机方案

    基于步进电机开发的双层搬运小车,能搬运圆柱形物体,采用TCS34725颜色识别传感器

    quartz1.8.6数据库持久化

    `com.springsource.commonj-sources-1.1.0.jar`是Spring对CommonJ接口的支持,CommonJ是一个标准,提供了对工作管理(Work Manager)和同步点(Sync Point)的支持,虽然Quartz本身并不直接依赖于CommonJ,但在某些...

    Java常用的Jar包

    2. **commonj**: `commonj`是IBM提供的一个开源项目,它提供了一组API,用于实现工作管理(Work Manager)和定时器服务(Timer Service),这些在分布式系统和企业级应用中非常有用,能够简化多线程和异步任务的管理...

    spring 1jar包

    这个JAR包在早期的Java开发中被广泛使用,尤其对于学习和理解Spring框架的基础概念至关重要。让我们详细探讨一下其中涉及到的关键知识点。 1. **Spring框架**: Spring是一个开源的Java平台,它简化了企业级应用的...

    spring TaskExecutor.docx

    7. **WorkManagerTaskExecutor**:依赖于CommonJ WorkManager,适用于BEA和IBM的应用服务器。 在实际项目中,选择合适的TaskExecutor实现取决于具体的需求。例如,如果需要一个简单的线程池且不关心线程重用,可以...

    Service Data Objects (SDO) Programmer Guide

    - `commonj.sdo`:包含了 SDO 的核心类库。 - `org.eclipse.emf.ecore.sdo.*`:涉及 EMF 实现 SDO 的各个方面。 - **常见问题解答 (FAQ)**:解答了开发者在使用 SDO 过程中可能遇到的问题。 #### 五、总结 通过...

    Eos命名Sql调用总结定义.pdf

    - 使用`commonj.sdo.DataObject`作为参数类,允许你传递SDO(Service Data Objects)数据对象,这是一个标准接口,用于封装业务数据。在示例中,它被用来表示组织对象(`com.hebbo.test.emporg.emporg.Org`),可能...

    templating:可扩展HTML模板引擎,支持数据绑定,自定义元素,附加行为等

    模板 ... 要了解最新信息,请访问并订阅和。 我们还邀请您上。 如果您有任何疑问,请浏览我们的,与我们的聊天,或使用。... 您可以在dist文件夹中找到已编译的代码,可以使用以下三种模块格式:AMD,CommonJ

    gulp-traceur:Traceur是当今JavaScript编译器之后JavaScript。

    不推荐使用 不推荐使用Traceur,因为不需要维护。 请改用 。 口水 是当今JavaScript编译器之后JavaScript。 输出的问题应在Traceur上报告。 安装 $ npm install --save-dev gulp-...类型: string 默认值: commonj

    一文详解Spring任务执行和调度(小结)

    7. **WorkManagerTaskExecutor**:利用CommonJ的`WorkManager`,适合在CommonJ环境下使用。 **使用TaskExecutor示例**: ```java public class TaskExecutorExample { private TaskExecutor taskExecutor; ...

Global site tag (gtag.js) - Google Analytics