- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个小型Java项目,这是我想要实现的基本想法:我在netty-socketio上有一个层,它接受来自浏览器的socket.io请求,并且我使用JPA 2.1/hibernate 将请求的更改持久保存到数据库中。不同的是,我也有流请求的概念,因为用户将请求集合的当前状态和所有 future 的更新。为了从数据库获取实时更新,我使用实体监听器。我正在寻找一种将实体监听器方法连接到 socketio 连接顶部的处理程序的可靠方法,即当流处理程序感兴趣的数据发生更改时,应该通知它,以便它可以将更新发送到管道中。我试图想出一种单例主持人,实体监听器可以向其发布更新,订阅的处理程序可以使用它,所有这些都基于 String topic
,非常像一个 pubsub。我遇到的问题是:让我们以 POJO User
为例。 。当新的user
插入后,UserEntityListener#PostInsert
启动后,它会转发 user
到Notifier
通过.publish
称呼。 Notifier
使用<?>
对于数据类型,它通过 Callable
调用感兴趣的各方类似界面:
public interface Notifiable {
public <T> void onEvent(T data);
}
所以现在在正确的处理程序中调用它的实现,但它具有通用类型,我必须手动转换它(处理程序知道它应该接收的类型)。我的问题是,我可以在没有显式强制转换的情况下做到这一点吗?是否有一个好的框架可以让所有这些低级的修改变得毫无用处?我想要一个集中的解决方案来弥合差距,否则所有的样板都会杀了我。
编辑添加了相关来源。
通知程序类:
class Subscriber {
public String topic;
public Notifiable notifiable;
public Subscriber(String topic, Notifiable n) {
this.topic = topic;
this.notifiable = n;
}
}
public class Notifier {
private static Notifier instance = null;
private List<Subscriber> subscribers = new ArrayList<Subscriber>();
public Notifier() {};
public void subscribe(String topic, Notifiable n) {
if (!this.hasSubscriber(topic, n)) {
this.subscribers.add(new Subscriber(topic, n));
}
}
public <T> void publish(String topic, T data) {
for (Subscriber s : this.subscribers) {
if (s.topic.equals(topic)) {
s.notifiable.onEvent(data);
}
}
}
public Boolean hasSubscriber (String topic, Notifiable n) {
for (Subscriber s : this.subscribers) {
if (s.topic.equals(topic) && s.notifiable == n) {
return true;
}
}
return false;
}
public static Notifier getInstance() {
if (instance == null) {
instance = new Notifier();
}
return instance;
}
}
实体监听器:
@PostPersist
public void PostInsert(User u) {
Notifier.getInstance().publish("user/new", u);
}
Socketio 处理程序:
Notifier.getInstance().subscribe("user/new", (new Notifiable() {
@Override
public <T> void onEvent(T data) {
User u = (User) data;
logger.info("User name: " + u.getUsername());
}
}));
最佳答案
如果您想避免显式转换,请进行以下更改:
一,使您的 Notabilized 界面变得通用:
public interface Notifiable<T> {
public void onEvent(T data);
}
二,使 Subscriber 类也通用:
public class Subscriber<T> {
public String topic;
public Notifiable<T> notifiable;
public Subscriber(String topic, Notifiable<T> n) {
...
}
}
三、适配Notifier类
public class Notifier {
private static Notifier instance = null;
@SuppressWarnings("rawtypes")
private List<Subscriber> subscribers = new ArrayList<Subscriber>();
public Notifier() {};
public <T> void subscribe(String topic, Notifiable<T> n) {
if (!this.hasSubscriber(topic, n)) {
this.subscribers.add(new Subscriber<T>(topic, n));
}
}
@SuppressWarnings("unchecked")
public <T> void publish(String topic, T data) {
for (Subscriber<T> s : this.subscribers) {
if (s.topic.equals(topic)) {
s.notifiable.onEvent(data);
}
}
}
@SuppressWarnings("unchecked")
public <T> Boolean hasSubscriber (String topic, Notifiable<T> n) {
for (Subscriber<T> s : this.subscribers) {
/* XXX: Beware, is safe to compare two notifiable
* instances by their memory addresses??
*/
if (s.topic.equals(topic) && s.notifiable == n) {
return true;
}
}
return false;
}
public static Notifier getInstance() {
if (instance == null) {
instance = new Notifier();
}
return instance;
}
}
四、Socketio Handler:
Notifier.getInstance().subscribe("user/new", (new Notifiable<User>() {
@Override
public void onEvent(User data) {
logger.info("User name: " + u.getUsername());
}
}));
关于java - Hibernate 实体监听器和 netty-socketio 之间的中介,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38708622/
我试图了解 ESB Mediation是,确切地说(具体例子),并且正在撞墙。 根据维基百科,数据中介重定向到 Data Transformation文章,唯一提到调解是模糊和神秘的: When th
我似乎有 admob 调解工作正常。我宁愿先使用 iAd,然后再使用 admob 填充。问题是我在 iTunes 连接中收到的 iAd 请求为零。我什至将百分比设置为 100%。我启用了它,一切都在
我有一个带有 ID、NAME、DATE 的 MySql 数据库我想通过使用 dblookup 介体来获取这些行,似乎不起作用,有人可以检查我的代理定义吗?
我正在尝试设置我的 Android 应用程序以显示来自中介网络的广告(顺便说一句,在任何地方都没有很好的解释),这是我到目前为止所做的: 1) 我已将发布商 ID 复制到将显示广告的 xml View
我的 AdMob 中介正在运行,它可以很好地提供 AdMob 广告,但是当我输入 MMedia 或 MobFox 的有效 ID 时,我收到请求,但填充数为 0。有谁知道这是为什么吗? 最佳答案 您还需
.h #import #import #import "GADBannerView.h" @interface MasterTableViewController : UITableViewCon
开门见山: 我了解什么是 mediationID 及其用途,但我无法在 admob 上获取 mediationID工具。 Mediation ad network guide看起来像这样: 但现实是我
我无法在 Android 应用程序中调解 admob 和 Facebook 受众网络 (FAN)。该应用仅转换来自 Admob 网络的广告。 Admob 和 FAN 之间的中介不起作用。以下是我遵循的
我目前在我的应用程序中使用 AdMob,我想集成 StartApp 但我想通过 AdMob 中介来管理它,有什么方法可以做到这一点(到目前为止我找不到任何文档,他们的支持也没有回答这个问题)? 最佳答
我正在尝试使用 InMobi 实现 AdMob 中介,但广告不会显示。我关注 their documentation我已经添加了 SDK 和 AndroidX: implementation 'com
有人知道如何使用 adMob 中介来管理 MMedia 的插页式广告吗? 我实际上使用 1) adMob Floor 2)MMedia(ID 横幅广告)3)admob“标准”。 想法? 在此先感谢您的
我想知道 Admob 中介的正确范例是什么。 到目前为止,我得到了一个普通的 AdView 横幅。 这就是它应该如何工作: onFailedToReceiveAd - 捕获此事件,这意味着 admob
背景 我们有一个相当复杂的 Silverlight 客户端,我们正在用 HTML/Javascript/CSS 重写它,构建在相同的 Web 服务之上。实际上,我们正在移植两个 Silverlight
是否有程序化方式来判断 AdMob 中介是展示 iAd 还是 AdMob 广告? 我的 GADBannerView 的父 View 必须根据正在展示的广告做一些特别的事情...... 最佳答案 您可以
我在使用 Applovin 和 Chartboost 实现 AdMob 奖励视频中介时被困了 3 天,代码完全找到了,但是当我启动应用程序时,它说“onRewardedVideoAdFailedToL
为此,我正在尝试将 iAds 集成到 Admob 中介 SDK 中,我从 Mediation website Download Link 下载了 iAdListAdapter并将其添加到我的 xcod
我是跟着Google的Admob/iAd mediation一步一步来的。我只会得到一个错误。这是确切的错误。我从 Xcode 复制并粘贴。 Ld /Users/RobShi/Desktop/Robf
我正在与多个第三方网络实现 AdMob 中介。我想测试这些网络中的每一个的调解是否得到很好的实现(广告很好地展示)。 我想强制显示来自定义网络的广告以测试其实现,然后快速切换到另一个网络。 执行此操作
我正在尝试通过 MoPub 调解 Facebook Audience Network,但我没有任何原生广告设置。我只想调解横幅广告和插页式广告。在 MoPub 文档中,没有关于横幅广告和插页式广告的说
假设我有一个 std::set , 我想知道它是否包含字符串 "name": #include #include using namespace std; bool has_name(const
我是一名优秀的程序员,十分优秀!