草庐IT

java - 将 Weld 与 Dropwizard 结合使用

我正在尝试使用Weld-SE在dropwizard应用程序中进行依赖注入(inject)。我可以像这样引导Weld并注入(inject)Application类:publicclassAppextendsApplication{@InjectNameServiceservice;@InjectRestResourceresource;publicstaticvoidmain(String[]args)throwsException{Weldweld=newWeld();WeldContainercontainer=weld.initialize();Appapp=container.i

java - CDI 缺少@ViewScoped 和@FlashScoped

为什么JavaEE6CDI缺少@ViewScoped和@FlashScoped注释?(尤其是前者让我很奇怪,因为CDI源于Seam世界,它已经知道非常相似的ScopeType.PAGE...)使用CDI时推荐的解决方法是什么?使用Seam3?谢谢 最佳答案 @ViewScoped特定于MVC框架JSF,而不是依赖注入(inject)框架CDI。只要您与同一个JSFView交互,View范围就会存在。CDI并没有真正的“View”概念。CDI的替代方案是@ConversationScoped它比请求范围长,但比session范围短。你

java - 为什么在生产者中使用 @Singleton 而不是 @ApplicationScoped?

LoggerProducer.java是一个用于生成要注入(inject)CDIbean中的记录器的类:@InjectLoggerLOG;完整代码:importjavax.ejb.Singleton;/***@authorrveldpau*/@SingletonpublicclassLoggerProducer{privateMaploggers=newHashMap();@ProducespublicLoggergetProducer(InjectionPointip){Stringkey=getKeyFromIp(ip);if(!loggers.containsKey(key)){

java - Spring 中是否有等效于 CDI 的 @Default 限定符?

在CDI中,我可以这样做://Qualifierannotation@Qualifier@intefaceSpecific{}interfaceA{}classDefaultImplimplementsA{}@SpecificclassSpecificImplimplementsA{}然后在类里面:@InjectAdefault;@Inject@SpecificAspecific;它的工作原理是因为@Default限定符自动分配给注入(inject)点而不指定任何限定符。但我正在使用Spring,但无法执行该操作。Causedby:org.springframework.beans.f

java - 如何将 @Named bean 注入(inject) Junit 测试

我正在尝试将@Namedbean注入(inject)到Junit测试中。这在我的ejb模块中有效,但在我的war模块中同样的方法失败了。我想知道为什么我得到org.apache.openejb.OpenEJBException:Creatingapplicationfailed:couldn'tstartowbcontext。我知道这看起来与IssuewithEJB3.1injectedwithCDIbeanwhilerunningJUnit中的问题相同,但它不能与在另一个模块中工作的相同。源代码在这里:https://github.com/Crydust/guestbook工作测试:

java - 了解多模块应用中的 CDI/Weld

我有一个打包在EAR中的应用程序,其中包含许多JAR(带有EJB、库、第3方库……)和一个WAR(同样包含一些其他JAR)。该应用程序部署在JEE7容器(Wildfly8.0.0.Final)中并使用CDI(Weld2.1.2.Final随Wildfly一起提供)。据我了解,Weld在应用程序范围内处于Activity状态,并且具有单一的应用程序范围View。因此,我想在何处使用CDI并不重要-它可以正常工作。但有一些迹象表明这不是真的。例如。toString-BeanManager的方法在不同的模块中显示不同的输出:在war中打包的某个模块中使用BeanManager时,我得到为te

java - CDI Weld 忽略排除项

我正在使用WeldSE在我的应用程序中使用CDI。由于某些库可能具有@Inject注释并且不想让Weld扫描所有库。因此我想排除beans.xml中的某些包前缀:但在执行时出现以下错误:2014-05-26T17:02:49.855-INFO-Version-WELD-000900:SNAPSHOT2014-05-26T17:02:50.340-WARN-Bootstrap-WELD-001208:Errorwhenvalidatingjar:file:/home/trichner/uepaa/uepaa-net/cloud/target/unet-cloud-0.1-SNAPSHOT

java - 从 EJB 无状态 session bean 调用 CDI session 范围的生产者方法

我想使用@Inject@CurrentUser跨所有层(即web层、EJB层)注入(inject)当前用户。为此,我有以下CDIProducer方法:@Named@SessionScopedpublicclassUserController{@ResourceSessionContextsessionContext;@EJBUserDaouserDao;@Produces@CurrentpublicUsergetCurrentUser(){Stringusername=sessionContext.getCallerPrincipal().getName();Useruser=user

java - 如果没有 Web 层并因此没有 HTTP session ,CDI 是否有意义?

新的JSR299“JavaEE的上下文和依赖注入(inject)”似乎是基于“作用域”的概念。创建bean并将其关联到受支持的范围之一:应用程序、session(映射到HTTPsession)、对话和请求。如果没有HTTPsession(例如,通过EJB远程处理公开功能的企业应用程序),使用CDI是否有意义,因为托管Bean不会关联到任何上下文(因为它们不存在)?在这种情况下甚至可以使用CDI吗?会给它带来哪些优势? 最佳答案 这让我想起了我之前问过的问题:Howdoes@SessionScopedworkwithEJB?IsCDI

java - 如何通过 BeanManager 创建和销毁 CDI (Weld) Managed Beans?

我正在尝试使用BeanManager而不是Instance.select().get()创建CDI托管bean的实例。这被建议作为解决我一直遇到的ApplicationScopedbean及其依赖项的垃圾收集问题的解决方法-请参阅CDIApplicationandDependentscopescanconspiretoimpactgarbagecollection?对于背景和这个建议的解决方法。如果您在ApplicationScopedbean上使用Instance编程查找方法,则Instance对象和您从中获得的任何bean最终都依赖于ApplicationScopedbean,因此