J88*_*888 9 mysql notifications hibernate struts2 java-ee
我将实现类似于Facebook通知和本网站的内容(StackOverflow的通知,如果有人为我们的问题撰写评论/答案等,则通知我们).请注意,用户将使用我的应用程序作为网站而不是移动应用程序.
我遇到了以下获取结果的答案,但我需要推送结果而不是获取.
根据建议,我在我的实体类中创建了一个简单的方法并添加了@PostPersist但它没有工作,基于这个答案我添加了persistence.xml文件来定义监听器但是在session.save(user)之后aftersave方法不会被触发.
User.java
@Entity
public class User{
.....
@PostPersist
public void aftersave(){
System.err.println("*****this is post persist method****");
}
}
Run Code Online (Sandbox Code Playgroud)
persistence.xml中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<property name="hibernate.ejb.event.pre-insert" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-update" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.pre-delete" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-insert" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-update" value="my.hibernate.events.listeners.Listener" />
<property name="hibernate.ejb.event.post-delete" value="my.hibernate.events.listeners.Listener" />
Run Code Online (Sandbox Code Playgroud)
的pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.1.Final</version>
<type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)
Jir*_*ser 13
听起来像WebSockets的任务.它是Java EE 7的一部分,因此Glassfish应该是第一个支持它的AS之一.
要拦截数据库访问,您可以使用@PostUpdate和@PostPersist.这是相关的问题.
有许多方法可以执行所谓的服务器推送以通知连接的客户端:
编辑:在Java世界中,有几个框架,其中服务器推送(反向ajax)是开箱即用的.如果您熟悉GWT,我会建议Errai.另一种选择是Atmospere.Atmospere的缺点是它需要使用您的Web应用程序在常规应用程序服务器旁边的独立运行过程.一年前我正在玩它,所以从那时起可能已经改变了.
通常,很难为您提供具体的代码,因为它取决于您将选择的框架.我熟悉Errai,所以这里有一个例子:
服务器端:
@ApplicationScoped
public class TickerService {
@Inject
private Event<Tick> tickEvent;
private void sendTick() {
tickEvent.fire(new Tick());
}
}
Run Code Online (Sandbox Code Playgroud)
客户端:
@EntryPoint
public class TickerClient {
public void tickHappened(@Observes Tick tick) {
// update the UI with the new data
}
}
Run Code Online (Sandbox Code Playgroud)
使用Errai的其他好处是将CDI放在服务器上和开箱即用的客户端上,另一件好事就是使用支持下的网络套接字,如果支持则退回到其他解决方案,否则.
无论您选择什么,它都应该适合您现有的基础架构和客户端UI框架.
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |