jjzjj

java - 打包为 EAR 时是否可以在 WAR 中观察 CDI 事件

我有一个企业应用程序存档(EAR),其中包含多个后端模块(EJB)以及一些Web模块(WAR)。事件在后端模块之一内触发:@InjectprivateEventmyEvent;...publicvoidfireEvent(){myEvent.fire(newMyEvent());}...可以在任何其他后端模块中使用如下代码观察到它:publicvoidlistener(@ObservesMyEventmyEvent){..}但我无法检索WAR中的事件。这是因为类加载器的可见性(来自WAR的类对EJB不可见)还是应该由CDI处理?如果CDI不能用于应用程序范围的事件,有哪些替代方案?JM

java - 如何使用 CDI 从外部库注入(inject) bean?

如何使用JSR-299CDI从外部库注入(inject)(未注释)bean?例子:接口(interface)X及其实现来自第三方库。我如何决定使用哪个实现?classA{@InjectprivateXx;}如果我有几个使用X接口(interface)但实现不同的类怎么办?classA{@InjectprivateXx;//shouldbeXDefaultImpl}classB{@InjectprivateXx;//shouldbeXSpecialImpl} 最佳答案 使用生产者:publicclassClassInABeanArch

java - CDI 可以减少到 Java SE 吗?

JSR-330依赖注入(inject)可以应用于JavaSE和JavaEE环境,而JSR-299的标题是“JavaEE平台的上下文和依赖注入(inject)”。除了严格面向JavaEE的功能外,哪些CDI功能对JavaSE也有意义?有可用的例子吗?谢谢![修订]这是WeldonJSE. 最佳答案 ExceptstrictlyJavaEE-orientedfeatures,whatCDIfeaturesmakesenseonJavaSEaswell?Anyexamplesavailable?Thanks!嗯,焊接文档中提到的那个:18

java - 使用 CDI 注入(inject)命名字符串

我想以这种方式注入(inject)一个配置参数:publicclassMyManagedBean{@InjectpublicMyManagedBean(@Named("user")Stringuser){....}}所以我尝试以这种方式实现生产者方法:@ApplicationScopedpublicclassMyConfiguration{privatePropertiesloadProperties(){Propertiesproperties=newProperties();try{properties.load(getClass().getResourceAsStream("us

java - 具有非托管对象的 CDI

假设我有两个类,第一个类没有任何属性、字段或注释:publicclassB{}还有一个被B注入(inject)的类,像这样:publicclassA{@InjectprivateBb;publicBgetB(){returnb;}}现在A类在我们使用它之前是毫无用处的,所以有两个选择:@注入(inject)它使用可信赖的“newA()”手动构建它如果A被注入(inject),CDI会管理它并且足够友好地注入(inject)具有@Dependent隐式范围的B。太棒了,正是我想要的。但是,如果我手动构造A(比如说在工厂或构建器中),CDI会完全忽略我的对象,不会注入(inject)类型B

java - EJB 与 CDI 和 "Entity Boundary Control"模式

我正在努力了解CDI和EJB以及实体边界控制(ECB)模式。我对ECB模式的理解是Boundary是事务边界的起点和终点。此外,CDI不像EJB那样提供事务支持。所以如果我想成功的实现ECB模式,那么以下是正确的;我可以使用EJB(即@stateless、@stateful、@singleton)实现边界部分,并使用CDI或EJB实现控制层。我可以使用CDI实现边界和控制部分,但在类似于(http://smokeandice.blogspot.com/2009/12/cdi-and-declarative-transactions.html)的边界中实现事务支持我无法使用CDI实现边界

java - 为什么 CDI bean 不支持 final方法

我刚刚在GlassFish服务器下遇到了臭名昭著的JavaEECDI错误:org.glassfish.deployment.common.DeploymentException:CDIdeploymentfailure:ExceptionListwith2exceptions:Exception0:org.jboss.weld.exceptions.DeploymentException:WELD-001437NormalscopedbeanclassASControllerisnotproxyablebecausethetypeisfinaloritcontainsafinalmet

java - Hibernate 使 Weld 不在 Java SE 中初始化

因此,我有一个使用Weld1.2进行依赖注入(inject)的基本JavaSE程序。一切正常,直到我将Hibernate与以下pom.xml依赖项一起使用:javaxjavaee-api7.0org.jboss.weld.seweld-se2.2.4.Finalorg.hibernatehibernate-core4.3.6.FinalHibernate是添加的依赖项,使其中断。这是我的入门课:publicclassEntryPoint{publicstaticvoidmain(String[]ARGV){Weldweld=newWeld();WeldContainercontaine

java - DefaultWindowContextQuotaHandler 和 JsfWindowContextQuotaHandler 之间的 DeltaSpike 模糊依赖

我正在使用部署在JBoss7.1.1上的DeltaSpike1.7.1和CDI1.0(Weld1.1.5)。这是一个遗留项目,我无法更改我们正在使用的技术。只有当我部署多个WAR文件时才会出现问题(我知道CDI在一个EAR中有多个WAR文件的问题,但我没有在EAR外部的JBOSS实例中找到任何关于多个WAR文件的信息文件。请注意,该问题不会在每次部署项目时都发生,通常会在我要求Jenkins一次构建和部署多个项目时发生,并且我收到此错误消息:WELD-001318无法解决[ManagedBean[classorg.apache.deltaspike.core.impl.scope.wi

java - 为什么不能注入(inject)泛型类?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭9年前。Improvethisquestion我有一个通用的抽象模板类。我想如果我创建特定类型的生产者,我可以直接在通用类中注入(inject)一些DAO服务。但我不能。为什么?我该如何解决这个问题?abstractclassMyView{@InjectMyDaodao;//somemoretemplatemethodsthatmakeuseofthedaovoidsomeMethod(){dao.use();}}classCustomerV