草庐IT

java - 通过 CDI 动态注入(inject)实例

在带有CDI的JavaEE平台中,可以注入(inject)POJO类的实例。以非常简单的方式,我们需要使用@Inject注释来注入(inject)某个接口(interface)的默认实例。我们也可以使用限定符将具体类注入(inject)我们的领域。但这些解决方案是相当静态的。我需要一些更动态的注入(inject)东西模型。介绍一下我的问题:假设我们有接口(interface)Animal和实现该接口(interface)的三个类:Ant、Dog、Elephant。我想动态注入(inject)这三个类之一的实例,它取决于一些变量,如字符串(动物名称)。在JavaSE中,我会这样做:Map

java - 如何将注释作为参数传递?

CDI类BeanManager有几个方法接受Annotation类型的参数或Annotation....例如BeanManager.getBeans(...).我想知道我应该如何将我的注释作为参数传递给这些方法。我试过了BeanManager.getBeans(MyBean.class,MyAnnotation.class),但它不是那样工作的。我见过Class.isAnnotation(),但没有什么比Class.asAnnotation()将其检索为Annotation类型。都不是BeanManager.getBeans(MyBean.class,@MyAnnotation)工作,

java - Weld 未正确初始化

我正在搭建学习JavaEE7中CDI的基础环境。我有以下用于启动Weld的代码。只是启动和关闭。packagecom.anshbansal;importorg.jboss.weld.environment.se.Weld;importorg.jboss.weld.environment.se.WeldContainer;publicclassMain{publicstaticvoidmain(String[]args){Weldweld=newWeld();WeldContainercontainer=weld.initialize();weld.shutdown();}}我正在关注我

java - CDI 是否适用于常规 Java 应用程序?

我有一个包含三个类的简单Maven项目。在我的META-INF中,我有空的beans.xml。每次我运行Main.java时,我都会得到一个NullPointerException。Exceptioninthread"main"java.lang.NullPointerExceptionathom.World.helloWorld(World.java:12)athom.Main.main(Main.java:6)我想要完成的事情是否超出了CDI的预期范围?你好.javapackagehom;importjavax.enterprise.inject.Default;@Defaultp

java - 如何更改设计以使实体不使用注入(inject)?

我已经阅读并意识到自己带有注入(inject)的实体(数据对象-对于JPA或序列化)是一个坏主意。这是我当前的设计(所有适当的字段都有getter和setter,以及serialVersionUID,为了简洁起见,我放弃了)。这是父对象,它是实体组合图的头部。这是我序列化的对象。publicclassStateimplementsSerializable{Listcars=newArrayList();Listplanes=newArrayList();//otherobjectssimilartoAbstractPlaneasshownbelow}AbstractPlane它的子类只

java - 如何在 beans.xml 中指定 @Alternative 生产者方法?

假设我有:publicinterfaceFoo{...}publicclassAltProducer{privateFooaltFoo;@Produces@AlternativepublicFoogetAltFoo(){returnaltFoo;}}我需要在beans.xml中放入什么才能调用我的AltProducer的@Produces方法,而不是注入(inject)Bar? 最佳答案 找到了-您可以只指定整个生产者类作为替代。@AlternativepublicclassAltProducer{...}beans.xml:com

java - 泽西 (REST) 子资源 CDI

我正在从事一个企业项目,该项目有一个EJB模块和一个在GlassFishv3.1、Weldv1.1和Jersey上运行的Web项目。在EJB中,我定义了一个实体类Manufacturer并生成了一个session外观ManufacturerFacade。在Web项目中,我希望通过REST公开Manufacturer实例。为此,我创建了以下资源:ManufacturersResource是一个容器资源,它返回存储在数据库中的所有制造商的列表。它通过注入(inject)ManufacturerFacade并调用findAll()方法来实现。缩略代码:@RequestScoped@Path(

java - jetty 8 + EJB 3.1 + JTA + CDI + JPA 2 堆栈?

谁能告诉我目前是否可以通过Jetty将部分JavaEE6Web配置文件“粘合在一起”?我找到了很多关于将独立的EJB3容器、JTA提供程序等与较旧的Jetty版本集成的文章,所以我想知道是否可以让它们一起工作。我想组装一个Servlet3.0+CDI+EJB3.1+JTA(如果需要,我真正想要的是声明式事务管理)+JPA2环境,而不是Jetty8(如果没有可用的Jetty替代品,则为Tomcat7)。我的问题是:可以做到吗?有没有人设法做到这一点?有没有关于让OpenEJB、Atomikos、Weld、EclipseLink和Jetty(或任何其他类似堆栈)协同工作的文章?那里有任何神

java - EJB 的 CDI 注入(inject)导致 NullPointerException

我是JavaEE6和CDI的新手。我已经阅读了一些教程和焊接文档。然而,根据我的理解,一些应该起作用的东西并没有起作用,所以我需要帮助。我有以下情况。我使用IDE提供的maven原型(prototype)使用​​NetBeans7.0.1创建了一个JavaEE6应用程序,我部署到同样由IDE提供的GlassFish3.1。beans.xml位于我的EJBjar的META-INF目录中。我创建了一个类,它仅作为我的EJB工件(和EntityManager)的生产者类@StatelesspublicclassEjbArtifactProducer{@PersistenceContext(u

java - CDI : @alternative vs @Qualifiers

作为CDI的新手,我想知道替代方案和替代方案之间的实际区别限定词。在Weldreference,它指出:4.3.QualifierannotationsIfwehavemorethanonebeanthatimplementsaparticularbeantype,theinjectionpointcanspecifyexactlywhichbeanshouldbeinjectedusingaqualifierannotation.但是在解释替代方案时,据说:4.7.AlternativesAlternativesarebeanswhoseimplementationisspecifi