[英]Listen database changes made by a different layer with Java EE
我有2个独立的模块(服务和Web)。 他们唯一的共同点是数据库。
Web模块通过Websocket连接连接到客户端浏览器。 然后,它可以随时发送消息。 但是我希望该客户端获取有关Service层所做的每个数据库更改的实时日志。
___ Service Layer
/
DATABASE
\___ Web module <--> Client browser
我看到这个解决方案 ,但第一, beanManager
仍null
当使用
@Inject
要么
CDI.current().getBeanManager().fireEvent(new MenuChangeEvent(menu))
其次,在下面的代码中,我应该在哪里调用@Observes
更改的函数?
@ServerEndpoint("/dashboard") // ws://localhost/app/dashboard
public class DashboardController extends EmptyInterceptor {
private static Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
@OnOpen
public void onOpen(Session session) {
sessions.add(session);
}
@OnClose
public void onClose(Session session) {
sessions.remove(session);
}
public void sendMessage(String message) {
for (Session session : sessions) {
session.getAsyncRemote().sendText(message);
}
}
}
还是你们还有其他解决方案? (我想避免使用数据库触发器)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.