问题标签 [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.
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:
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 实现
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
接口用 注释,实现@Local
用CashValueCalculationServiceBean
注释@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
?
你怎么可能治愈这个?可以做到吗?
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但似乎没有任何效果。
谁能帮我搞定这个工作?
jsf - 如何使用 JSF 2.3 和 TomEE 注入 FacesContext?
我一直在尝试将 JSF 2.3 与 TomEE 服务器一起使用,但在使用对象的@Inject
注释时遇到了问题FacesContext
。
当我使用它时,在启动我的 TomEE 服务器时出现以下异常:
我错过了什么吗?谢谢。
jax-rs - ContainerRequestFilter 被调用两次
我有一个带有 ContainerRequestFilter 的简单 Apache Meecrowave 1.2.1 (OWB+CXF) 应用程序:
AppInstanceAndSecurityFilter 类在 Application 子类的 getClasses() 方法中返回。
问题是过滤器被调用了两次,并且有两个过滤器实例——一个是所有成功解析的@Inject 和@Context 引用,一个是所有@Inject 引用为空并且所有@Context 引用都成功解析。
为什么有两个过滤器实例,一个带有空 @Inject 引用?
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 中工作,我很好奇这是否只是规范中的疏忽。谢谢!
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 的东西?
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。在原始代码中它不是,但行为是相同的。)
.
.
.