Errai 似乎是一个非常巧妙的项目。我们刚刚开始使用它来将一些 GWT 堆栈移植到 erai。
使用 Bus(我猜是 Errai 中最著名的部分),我有一个非常快速的 Q。我们还没有引入 CDI。在完成一些核心重构之后,会在某个时候做。
这是Q:
对于我们的示例应用程序 - 我有一个客户端代码(下面的总线监听片段):
公共无效 onModuleLoad() {
bus = ErraiBus.get();
initEBus();
/.... then create the login panel with login button etc./
}
private void initEBus() {
// TODO Auto-generated method stub
System.out.println("initbus");
bus.subscribe("Login", new MessageCallback() {
public void callback(CommandMessage message) {
/**
* When a message arrives, extract the "text" field and
* do something with it
*/
System.out.println( message.get(String.class, "text"));
}
@Override
public void callback(Message message) {
// TODO Auto-generated method stub
}
});
}
在服务器端(按下登录按钮时通过 RPC 进行调用):
私有 MessageBus msgBus = ErraiBus.get();
@Override
public Boolean doLogin(String username, String password) {
// TODO Auto-generated method stub
System.out.println("dispatching message");
msgBus.send(MessageBuilder
.createMessage()
.toSubject("Login")
.with("text", "Hi There").done().getMessage());
return true;
}
当我运行它时,服务器似乎正在发送一条消息(我只能假设没有错误并且该方法确实成功返回 true),但客户端永远不会收到消息并且不打印任何内容。
我假设我们正在做一些非常愚蠢的事情或遗漏了一些事情......谁能告诉我我们做错了什么?
非常感谢,
麦克风,