繁体   English   中英

使用Java EE监听不同层所做的数据库更改

[英]Listen database changes made by a different layer with Java EE

我有2个独立的模块(服务和Web)。 他们唯一的共同点是数据库。

Web模块通过Websocket连接连接到客户端浏览器。 然后,它可以随时发送消息。 但是我希望该客户端获取有关Service层所做的每个数据库更改的实时日志。

         ___  Service Layer
        /
DATABASE
        \___  Web module <--> Client browser

我看到这个解决方案 ,但第一, beanManagernull当使用

@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM