听起来像WebSockets的任务。它是Java EE 7的一部分,因此Glassfish应该是最早支持它的AS之一。
要拦截数据库访问,可以使用@PostUpdate
和@PostPersist
。这是相关的问题。
编辑:在Java世界中,有两个框架是在即开即用的情况下实现服务器推送(反向Ajax)的。如果您熟悉GWT,我建议您Errai。其他选择是Atmospere。Atmospere的缺点是,它需要独立的运行过程,该过程位于Web应用程序旁边的常规应用程序服务器旁边。我一年前就在玩它,所以从那以后可能已经改变了。
通常,很难为您提供具体的代码,因为这取决于您选择的框架。我对 很熟悉,因此这里有一个例子:
@ApplicationScoped
public class TickerService {
@Inject
private Event<Tick> tickEvent;
private void sendTick() {
tickEvent.fire(new Tick());
}
}
@EntryPoint
public class TickerClient {
public void tickHappened(@Observes Tick tick) {
// update the UI with the new data
}
}
使用Errai的其他好处是可以直接在服务器和客户端上使用 ,另一件事很好,那就是使用Web套接字(如果受支持),如果没有支持的话,可以使用其他解决方案。
无论您选择什么,它都应该适合您现有的基础结构和客户端UI框架。