问题标签 [openwebbeans]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1340 浏览

jsf - OmniFaces 在 2.0 之后无法将 OpenWebBean 识别为 CDI

我使用的是 Tomcat 8 (8.0.30)、OpenWebBeans 1.6.2、JSF Mojarra 2.2.12 和 OmniFaces 1.8。我决定将 OmniFaces 升级到更高版本。在 2.0 之后,它似乎需要 CDI,但是在启动 Tomcat(使用 OmniFaces 2.2)时,出现以下错误。根据 OmniFaces 的兼容性矩阵,Tomcat+Mojarra+OWB 应该适用于 8.0.30+2.2.12+1.6.2。

我也尝试过 2.0,但同样的错误。在 2.1 中我遇到了另一个问题,但我只是假设它在 2.2 中是固定的,因为那里的行为与 2.0 中的相同。我对 2.3-RC1 也有同样的问题。

是否需要做一些具体的事情才能让 OmniFaces 识别我正在运行 CDI?这可能是 OmniFaces 中的错误吗?

我创建了一个非常小的示例应用程序来复制这个问题,所以我确信我们的主应用程序中没有其他任何干扰。

这是我正在使用的 pom.xml:

0 投票
2 回答
1162 浏览

java - OpenWebBeans + MyFaces + Tomcat = IllegalStateException

我正在尝试让 OWB(使用 MyFaces 和 Primefaces)在 Tomcat 8.0.33 上工作。似乎无论我如何配置,我都会收到此错误...

...随后是此堆栈跟踪:

根据我在此处此处此处(以及大约 5 个其他地方)所读到的内容,我已经使用Tomcat 插件依赖项、中指定的 OWB 侦听器web.xml,甚至两者都进行了尝试。看起来,无论我做什么,我似乎都无法说服 OWB 在 MyFaces 介入并开始做它的事情之前做它的事情。我错过了一些非常明显的东西吗?

0 投票
0 回答
211 浏览

java - cdi @produces 方法在获取迭代器时给出无限循环

再会。我试图使用生产者方法来获取适当的 bean 进行注入。当我打电话时它工作正常

其中 HttpAmClientTransport.class 是注入 bean 的本地接口,但如果我想在实例上调用迭代器

这会导致递归工厂类创建(使用执行@Produces 方法)
,这里有讨论,Brian Blonski Java CDI 的回答是:Dynamicly selection an implementation based on qualifier?

但在我的情况下,当我获得迭代器时出现递归,而不是通过 .next() 获得 bean 实例

我也需要你的建议。事实上,我有几个具有自己本地接口的传输 Bean 和几个客户端 bean,我必须在其中注入特定的传输。客户端类型(rest soap 或 db)和传输限定符(安全与否)将在配置文件中给出,并且可能会更改。我认为我可以在带有枚举变量的注释中硬编码一些客户端配置约束和必要的映射,这将包含传输接口类。这些接口(每个客户端 bean 一个)将由传输 bean 实现(并且可能是某些客户端实现了适合每个客户端的所有接口),但这是一些问题。如果我更改,我如何过滤掉在生产者方法中实现该客户端特定接口的所有传输 bean

我有 isUnsatisfied() 属性真值(空实例),但如果我将它们更改为

比所有检查都是错误的,但是 get() 方法导致整个生产者类的递归创建我知道我错过了一些关于继承的东西,但是什么?

我会很感激你能给我的任何建议。

代码部分

restfullclient bean

生产者豆

AmClientTransport 接口只是接口

扩展 AmClientTransport 的客户端特定传输接口

}

本地特定传输 Bean 接口

特定的传输 Bean 实现

0 投票
2 回答
155 浏览

cdi - 部署在 WebSphere 7 (Java EE 5) 上的 OmniFaces CDI @ViewScoped bean 将所有注入 @EJB 的 EJB 清空:NPE/NullPointerException

我有一个简单的 OmniFaces 1.8.3 视图范围 bean以及 OpenWebBeans 1.2.8(和 Mojarra 2.1.27 BTW)成功部署在 WebSphere 7(7.0.50)上:

然而,当打开 bean 的视图时,bean 被初始化,运行@PostConstruct加载所有实体(只有少数)的方法,但这会失败并NullPointerException在 loadViewData() 中出现。返回的服务是空的......这基本上得到了我还找到该行的日志的确认

CashValueCalculationService接口用 注释,实现@LocalCashValueCalculationServiceBean注释@Stateless

豆:

在尝试 WebSphere 7 热潮中的 OmniFaces/CDI/OpenWebBeans 之前,我已成功地将其注入 JSF 托管 bean。

当应用程序部署在服务器上时,会出现以下日志条目:

参赛作品

出现在最有趣的人面前。

但它们实际上是什么意思?

当然,这有点清楚,servlet.api缺少课程。

(抱歉,这是 Ant/Ivy 语法)

但是,在登录时添加javax-servlet-api-2.5.jar到部署中会完全破坏应用程序,并说“FacesServlet 不是 Servlet 类”:

在 HTML 中:

我必须尽可能地翻译错误信息。WebSphere 7 BTW 是一个 Servlet 2.5 容器,所以问题可能与类加载器有关……?

大问题:

为什么此设置无法通过@EJB基本可用的场景(没有javax.servlet依赖关系)注入 EJB?bean 和 bean manager 似乎存在,那么为什么它不能通过注入@EJB

你怎么可能治愈这个?可以做到吗?

0 投票
1 回答
1066 浏览

apache - Apache OpenWebBeans(CDI)+ Servlet,注入不起作用

我试图让 CDI 在 tomcat 9.x 中工作。我按照以下链接进行操作,但 openwebbeans 容器仍然没有将资源注入 servlet

https://devlearnings.wordpress.com/2011/05/15/apache-openwebbeans-cdi-from-standalone-to-webapp/ https://dzone.com/articles/using-apache-openwebbeans http://openwebbeans .apache.org/owbsetup_ee.html

下面是我的servlet

下面是web.xml

在 server.xml 中添加了以下行

下面是我的 pom.xml

在tomcat lib下添加了以下jar

  • geronimo-annotation_1.3_spec-1.0
  • geronimo-atinject_1.0_spec-1.0
  • geronimo-interceptor_1.2_spec-1.0
  • geronimo-jcdi_2.0_spec-1.0
  • openwebbeans-el22-2.0.0
  • openwebbeans-impl-2.0.0
  • openwebbeans-spi-2.0.0
  • openwebbeans-tomcat7-2.0.0
  • openwebbeans-web-2.0.0
  • xbean-asm5-shaded-4.5
  • xbean-finder-shaded-4.5
  • javassist-3.21.0-GA

以下是部署我的战争后的服务器日志。从日志中可以清楚地看到打开的 web bean 容器已经启动

2017 年 7 月 20 日 10:06:08.315 信息 [http-nio-8080-exec-5] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 [D:\krishna\apache-tomcat-9.0.0 .M22\webapps\openwebbeans-beginner.war] 20-Jul-2017 10:06:08.904 信息 [http-nio-8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans 容器正在启动.. . 20-Jul-2017 10:06:09.229 INFO [http-nio-8080-exec-5] org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication OpenWebBeans Container 已启动,耗时 [325] 毫秒。2017 年 7 月 20 日 10:06:09.235 信息 [http-nio-8080-exec-5] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 [D:\krishna\apache-tomcat-9.0. 0.M22\webapps\openwebbeans-beginner.war] 已在 [920] 毫秒内完成

此外,我在 META-INF/openwebbeans 下创建了 openwebbeans.properties 并添加了org.apache.webbeans.spi.ContainerLifecycle=org.apache.webbeans.lifecycle.StandaloneLifeCycle。但它仍然不起作用

我也尝试了org.apache.webbeans.spi.ContainerLifecycle=org.apache.webbeans.web.lifecycle.WebContainerLifecycle但似乎没有任何效果。

谁能帮我搞定这个工作?

0 投票
1 回答
1108 浏览

jsf - 如何使用 JSF 2.3 和 TomEE 注入 FacesContext?

我一直在尝试将 JSF 2.3 与 TomEE 服务器一起使用,但在使用对象的@Inject注释时遇到了问题FacesContext

当我使用它时,在启动我的 TomEE 服务器时出现以下异常:

我错过了什么吗?谢谢。

0 投票
0 回答
229 浏览

jax-rs - ContainerRequestFilter 被调用两次

我有一个带有 ContainerRequestFilter 的简单 Apache Meecrowave 1.2.1 (OWB+CXF) 应用程序:

AppInstanceAndSecurityFilter 类在 Application 子类的 getClasses() 方法中返回。

问题是过滤器被调用了两次,并且有两个过滤器实例——一个是所有成功解析的@Inject 和@Context 引用,一个是所有@Inject 引用为空并且所有@Context 引用都成功解析。

为什么有两个过滤器实例,一个带有空 @Inject 引用?

0 投票
2 回答
667 浏览

java - CDI 1.1:@Observes @Initialized(TransactionScoped.class) 应该工作吗?

CDI 1.1:@Observes @Initialized(TransactionScoped.class)应该工作吗?

这是 CDI 1.1 中的标准范围,但这里的列表中明显缺少它:

http://www.next-presso.com/2014/06/you-think-you-know-everything-about-cdi-events-think-again/

我似乎无法让它在 TomEE 7.0.5/OpenWebBeans 中工作,我很好奇这是否只是规范中的疏忽。谢谢!

0 投票
1 回答
64 浏览

java - EclipseLink:如何在没有 JEE/CDI 的情况下启用 Bean 验证?(又名在 SE 中启用)

我们有一个测试扩展,它为我们的测试创建一个 EntityManager:

Map<String, String> properties = new HashMap<String, String>(); properties.put(PersistenceUnitProperties.JDBC_DRIVER, DRIVER_NAME); properties.put(PersistenceUnitProperties.JDBC_URL, createUrl(testInstance)); properties.put(PersistenceUnitProperties.JDBC_USER, DB_USER); properties.put(PersistenceUnitProperties.COORDINATION_PROTOCOL, null); emf = Persistence.createEntityManagerFactory(PU_NAME, properties); ... EntityManager em = emf.createEntityManager();

尽管我们注意到在 pre-persist 或 pre-update 时没有触发 BeanValidator,尽管我们的其他验证器触发得很好。这是有道理的,在 JEE 容器中,Bean Validation 库是由容器本身提供的。

如果我们将它包含在测试类路径中,是否有可能让 EclipseLink 调用类似 OpenWebBeans 的东西?

0 投票
0 回答
59 浏览

jsf - 使旧的 httpsession 失效会丢弃当前 httpsession 的上下文

我的应用程序使用 a 处理登录@ViewScoped LoginBean,其中注入了@SessionScoped SessionBean存储用户信息和当前 HttpSession 的 a。这个应用程序允许一个用户N个单独的会话。达到该限制后,用户只能通过杀死最旧的来创建另一个。这是LoginBean通过询问UserSessionManager最旧的非托管SessionBean,然后使其无效来完成的HttpSession

因此,使用会话“A”登录,我们使会话“B”无效。这一切都按计划进行。但是,在剩余的 JSF 阶段的某个时候,我们也会丢失SessionBean会话“A”。追溯 CDI 代码,似乎会话“A”的会话上下文正在被破坏,因此当重新显示完成时,我们拥有所有新的会话 bean。

我们正在使用 MyFaces 2.3.6、OpenWebBeans 2.0.16、OpenJDK 11

这是 OWB 中的错误,还是预期的行为?

我也想知道我是否有一个基本的误解。如果我SessionBean在 my 中保存 a 并在不同UserSessionManager的会话期间检索它,它应该保留其原始状态还是在新的上下文中重新评估?我一直发现调试很困难,因为我的对象实际上似乎是代理,并且 UI 和调试器有时会显示不同的值。SessionScoped

20 年 4 月 27日更新:@SessionScoped SessionBean org.apache.webbeans.web.context.WebContextsService#destroyRequestContext() 正在销毁“PropagatedSessionContext”。这个 PropagatedSessionContext 由 WebContextsService#destroySessionContext() 设置,它指定要销毁的本地会话,尽管被赋予了不同的特定会话。这就是我想知道它是否是OWB中的错误的地方。

这是代码的简化示例:

(在此测试代码中,我将 SessionManager 设为 @ApplicationScoped bean。在原始代码中它不是,但行为是相同的。)

.

.

.