为什么项目中事件已经被调用,但监听器却没有反应,也没有报错?

这是服务端插件配置:

EventPlugin plugin = new EventPlugin();
plugin.async();
plugin.scanPackage("com.meservice.code.listener");
plugin.setRmiServer(1888);
me.add(plugin);

这是事件:

public class LoginEvent extends ApplicationEvent {
	private static final long serialVersionUID = 1L;
	public LoginEvent(Object source) {
		super(source);
		System.out.println("this's event:" + source.toString());
	}
}

这是监听器:

@Listener(order = 1, enableAsync = true)
public class BeginLoginListener implements ApplicationListener<LoginEvent> {

	@Override
	public void onApplicationEvent(LoginEvent event) {
		System.out.println("this's listener");
	}

}

这是客户端调用:

Login login = new Login();
login.setUname("i am jackey");
Object obj = login;
LoginEvent event = new LoginEvent(obj);
EventKit.postRemote(event);
Thread.sleep(1000);

项目运行后,console只打印出事件的响应:this's event,但监听器却没有反应,也没有报错的,请问这是什么引起的呢?


评论区

Dreamlu

2017-09-11 14:59

plugin.setRmiServer(1888); 是正对 服务端和客户端模式的,你在一个系统里面的话,不需要 使用RmiServer和postRemote

begin_game

2017-09-11 15:50

是的,我是服务端和客户端模式的,event和listener都在服务端,但只有event被调用了

begin_game

2017-09-11 15:52

项目只打印了 this's event,但listener的 this's listener 没有调用,另外刚刚也试过加上tag了,也是无效

Dreamlu

2017-09-11 18:21

客户端 和 服务端用同一个event,包名都得相同,另外基于Rmi有满多局限,这个Rmi远程启动顺序还有关系,建议使用 redis 的 sub/pub

热门反馈

扫码入社