在@BalusC的帮助下,我的EJB方法使用在EE8上运行的JSF 2.3在JBoss WildFly 12.0.0.Final(MacOS)上触发事件:
beanManager.fireEvent("updateNotifications" );
POJO:
@Inject
@Push(channel = "testChannel")
private PushContext pushContext;
public void onPersist(@Observes String notification) {
logger.info("***** onPersist notification = {}", notification);
pushContext.send("updateNotifications");
}
收到&打印消息;
16:03:36,682 INFO [com.notifywell.ejb.FoodsCosmeticsMedicinesEJB] (默认任务-3)>>>>> insertFoodsCosmeticsMedicinesEJB beanManager = Weld BeanManager for NOTiFYwell.ear / NOTiFYwellJAR.jar / [bean count = 39]
16:03:36,695 INFO [com.notifywell.push.PushBean](默认任务-3) ***** onPersist notification = updateNotifications
我无法通过Push Send与XHTML进行通信。我试过OmniFaces 3.1& JBoss WildFly 12 JSF 2.3并没有重新渲染(此处未显示XHTML代码)。使用OmniFaces 3.1时,我无法显示onmessage:
<h:form>
<o:socket channel="testChannel" onmessage="socketListener"/>
<h:outputScript>
function socketListener(message, channel, event) {
console.log(message);
}
</h:outputScript>
</h:form>
如果我在Chrome中打开控制台日志它是空的,那就没有“消息”。
在WireShark中,我看到了:
2601 9.810264 :: 1 :: 1 HTTP 997 GET /NOTiFYwell/omnifaces.push/testChannel?a1ef3363-dc5a-4153-a4c7-73b0e183713d HTTP / 1.1
好像是
pushContext.send(notification);
没有被执行。
答案 0 :(得分:0)
我与Wildfly 14的情况完全相同。
要解决此问题,我必须:
现在它可以工作了,但是如果我没有执行步骤1-4进行部署,就不会再工作了。 (也许没有必要执行步骤3,但我这样做是因为我遇到了很多其他错误)