Spring 事件广播监听的问题
最近将系统中某个功能改为spring事件的方式,测试的时候发现整个系统有时候会死掉,不知道是事件广播什么地方用的不正确,请大家指教。application_context.xml:
<bean id="applicationEventMulticaster" class="org.springframework.context.event.SimpleApplicationEventMulticaster">
<property name="taskExecutor" ref="cacheThreadPoolExecutor" />
</bean>
<bean id="cacheThreadPoolExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="queueCapacity" value="0" />
<property name="keepAliveSeconds" value="120" />
</bean>
MessageEvent.java:
package c;
import org.springframework.context.ApplicationEvent;
public class MessageEvent extends ApplicationEvent {
private static final long serialVersionUID = 7325055073045806732L;
public MessageEvent(Object source) {
super(source);
}
}
MessageListener.java:
package com.bluedon.ism.commons.event;
import javax.annotation.Resource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Service;
import c.MessageCenter;
import c.SendNoticeManagerService;
@Service
public class MessageListener implements ApplicationListener<MessageEvent> {
@Resource(name = "sendNoticeManagerService")
private SendNoticeManagerService sendNoticeManagerService;
@Override
public void onApplicationEvent(MessageEvent event) {
MessageCenter msgCenter = (MessageCenter) event.getSource();
//非空判断等省略,sendNotice()方法声明及主体省略
sendNoticeManagerService.sendNotice(msgCenter.getAccountId(), msgCenter.getNoticeData(), msgCenter.getRemark(),msgCenter.getNode() , msgCenter.getAudit());
}
public void setSendNoticeManagerService(
SendNoticeManagerService sendNoticeManagerService) {
this.sendNoticeManagerService = sendNoticeManagerService;
}
}
在需要调用sendNotice()方法的类中相关代码:
@Resource(name="applicationEventMulticaster")
private ApplicationEventMulticaster applicationEventMulticaster;
public void setApplicationEventMulticaster(
ApplicationEventMulticaster applicationEventMulticaster) {
this.applicationEventMulticaster = applicationEventMulticaster;
}
private void saves(){
NoticeData noticeData = new NoticeData(1, 2, "test", 1256, "221545121", 12);
MessageCenter msgCenter = new MessageCenter(noticeData, "user");
MessageEvent msgEvent = new MessageEvent(msgCenter);
applicationEventMulticaster.multicastEvent(msgEvent);
}
Spring Java 事件 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 顶起来顶起来 --------------------编程问答-------------------- 顶起来顶起来 --------------------编程问答-------------------- 就是说功能是正常的,只是有时候会死掉? --------------------编程问答-------------------- 是的,功能正常,一个时间段里调用5、6次就卡死了,卡住之后没管了,做其他事去了,几十分钟再来看还是卡在那。 --------------------编程问答-------------------- 除
补充:Java , Java EE