当前位置:编程学习 > JAVA >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,