【发布时间】:2018-09-26 08:19:50
【问题描述】:
当文档(行)已插入 MongoDB 集合时,尝试让 EJB 通知我的 XHTML JSF 页面。
感谢对我之前问题的回答,让 JSF 2.3 正常工作:
但是,在将服务器端代码添加到我的 EJB 并尝试将我的 EAR 部署到 WildFly 12.0.0.Final 之后,我得到了 PushContext 的 java.lang.ClassNotFoundException:
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class com.notifywell.ejb.FoodsCosmeticsMedicinesEJB with ClassLoader ModuleClassLoader for Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
... 13 more
Caused by: java.lang.ClassNotFoundException: javax.faces.push.PushContext from [Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:199)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
... 18 more
在 EJB 中使用:
@Inject
@Push
private PushContext push;
包含在:
jboss-jsf-api_2.3_spec-2.3.3.SP1.jar
当我将@Inject 添加到@Push 时会发生这种情况。
WildFly 12 和/或 JSF 2.3 中的 CDI 是否存在任何问题?
【问题讨论】:
-
ejb 层(后端)应该对推送(前端)一无所知。使用 ejb 中的 cdi 事件)和前端的观察者来通信两层。见stackoverflow.com/questions/25947790/…
-
我在这里关注 BalusC 的 JSF 2.3+ 示例:stackoverflow.com/questions/3787514/…。
-
正确,但是如果仔细观察,您会看到前端 cdi bean(在战争中)中使用的推送,它也有一个事件观察器,并且事件被抛出在无状态 ejb . EJB 中没有“推送”。
标签: wildfly cdi weld jboss-weld jsf-2.3