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);
}
}
}
分享到:
相关推荐
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.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....
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.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 ...
5. **Helper Classes**:在"commonj.sdo.jar"中,可能包含了一些帮助类,这些类提供了一组方法来简化SDO的使用,例如创建、修改和查询数据对象。 6. **Version Compatibility**:使用特定版本的库(如2.1.1)时,...
commonj-twm.jar 包,包含timers和work两部分
2. **commonj** - 这可能是一个目录或文件,指的是CommonJ,这是一个Java平台上的开源项目,提供了多线程和任务编程的API。在SDO上下文中,这可能与数据服务如何利用多线程处理和并发性有关,或者CommonJ可能被用作...
基于myFoo实现的Commonj Jboss服务。 当您要在jboss下运行WorkManager和Timer时,此mbean很有用。 (例如,将应用程序从ibm或bea移植到jboss)。 使用Foo-CommonJ作为JSR 237实现
quartz-commonj-2.1.6.jar 支持CommonJ的Timer服务,这使得Quartz可以与支持CommonJ的应用服务器无缝集成,如WebLogic或JBOSS。 LICENSE.txt 文件是Quartz的许可协议,详细说明了使用Quartz的法律条款和限制。 在...
基于步进电机开发的双层搬运小车,能搬运圆柱形物体,采用TCS34725颜色识别传感器
`com.springsource.commonj-sources-1.1.0.jar`是Spring对CommonJ接口的支持,CommonJ是一个标准,提供了对工作管理(Work Manager)和同步点(Sync Point)的支持,虽然Quartz本身并不直接依赖于CommonJ,但在某些...
2. **commonj**: `commonj`是IBM提供的一个开源项目,它提供了一组API,用于实现工作管理(Work Manager)和定时器服务(Timer Service),这些在分布式系统和企业级应用中非常有用,能够简化多线程和异步任务的管理...
这个JAR包在早期的Java开发中被广泛使用,尤其对于学习和理解Spring框架的基础概念至关重要。让我们详细探讨一下其中涉及到的关键知识点。 1. **Spring框架**: Spring是一个开源的Java平台,它简化了企业级应用的...
7. **WorkManagerTaskExecutor**:依赖于CommonJ WorkManager,适用于BEA和IBM的应用服务器。 在实际项目中,选择合适的TaskExecutor实现取决于具体的需求。例如,如果需要一个简单的线程池且不关心线程重用,可以...
- `commonj.sdo`:包含了 SDO 的核心类库。 - `org.eclipse.emf.ecore.sdo.*`:涉及 EMF 实现 SDO 的各个方面。 - **常见问题解答 (FAQ)**:解答了开发者在使用 SDO 过程中可能遇到的问题。 #### 五、总结 通过...
- 使用`commonj.sdo.DataObject`作为参数类,允许你传递SDO(Service Data Objects)数据对象,这是一个标准接口,用于封装业务数据。在示例中,它被用来表示组织对象(`com.hebbo.test.emporg.emporg.Org`),可能...
模板 ... 要了解最新信息,请访问并订阅和。 我们还邀请您上。 如果您有任何疑问,请浏览我们的,与我们的聊天,或使用。... 您可以在dist文件夹中找到已编译的代码,可以使用以下三种模块格式:AMD,CommonJ
不推荐使用 不推荐使用Traceur,因为不需要维护。 请改用 。 口水 是当今JavaScript编译器之后JavaScript。 输出的问题应在Traceur上报告。 安装 $ npm install --save-dev gulp-...类型: string 默认值: commonj
7. **WorkManagerTaskExecutor**:利用CommonJ的`WorkManager`,适合在CommonJ环境下使用。 **使用TaskExecutor示例**: ```java public class TaskExecutorExample { private TaskExecutor taskExecutor; ...