我正在使用Weld作为CDI实现。 当我在src/test/java/META-INF/beans.xml有空的beans.xml时,我的集成testing试图组装对象图实例化Weld容器。 这是简单的testing: public class WeldIntegrationTest { @Test public void testInjector() { new Weld().initialize(); // shouldn't throw exception } } 现在当我运行mvn clean install ,我总是得到: Missing beans.xml file in META-INF! 我的根文件夹是包含WEB-INF文件夹的“src”和“web”,但我也尝试使用默认的maven结构,并将“web”重命名为“webapp”,并将其移至src / main。 我尝试了所有我能想到的合理位置: – src/main/java/META-INF/beans.xml – src/test/java/META-INF/beans.xml – web/WEB-INF/beans.xml – src/main/webapp/WEB-INF/beans.xml – src/main/webapp/META-INF/beans.xml – src/main/webapp/META-INF/(empty) and src/main/webapp/WEB-INF/beans.xml 目前为止没有任何工作:/
Weld,JSR-299上下文和dependency injection参考实现,认为自己是Spring和Guice的inheritance者。 CDI受到许多现有Java框架的影响,包括Seam,Guice和Spring。 然而,CDI具有自己独特的特征:比Seam更安全,比Spring更具有状态和更less的以XML为中心,比Guice更具networking和企业应用能力。 但是,如果没有上述框架的启发和JSR-299专家组(EG)的大量合作和辛勤工作,这些都不会有任何启发。 http://docs.jboss.org/weld/reference/latest/en-US/html/1.html 与Guice相比,什么让Weld更适合企业应用? 与Guice相比,有没有什么优缺点? 与Weld拦截器相比,您如何看待Guice AOP? 性能呢? 我的select 最后,我决定使用Guice,因为我喜欢干净的编程模型,默认情况下,除了@Inject之外几乎没有注释。 使用Guice的外部库比使用CDI容易得多。 Guice的AOP也很简单。
我写了一个简单的程序在Java Web窗体,但我收到以下错误: WELD-000072声明钝化范围的托pipebean必须具有钝化function。 Bean:受限Bean [带有限定符的类BeanPakage.DemoBeans] [@Any @Default @Named] 谁能告诉我这个错误来自哪里? 我的代码是: package BeanPakage; import javax.enterprise.context.SessionScoped; import javax.inject.Named; @Named("DemoBeans") @SessionScoped public class DemoBeans { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
我试图处理@ManagedProperty但没有成功! 我一直在遵循这个指南,似乎并不难。 但是我的代码根本行不通 这是一个小片段 @ManagedBean @SessionScoped public class LoginBean { @EJB private LoginUserLocal loginUser; private boolean loggedIn = false; private User user; private StreamedContent image; . . . //– @Named(value = "messagesBean") @RequestScoped public class MessagesBean { @ManagedProperty(value = "#{loginBean}") private LoginBean loginBean; public LoginBean getLoginBean() { return loginBean; } public void setLoginBean(LoginBean loginBean) { […]
我有一个定义良好的界面的应用程序。 它使用CDI来parsing模块,(具体来说,它使用API接口上的实例<>注入点来parsing模块),并通过接口传回各种数据。 我有意将API和实现保持分开,并且模块只从APIinheritance以避免紧耦合,应用程序只通过运行时依赖知道模块,并通过API完成数据传递。 应用程序在没有模块的情况下运行正常,只需将jar放入WEB-INF / lib文件夹并重新启动应用程序服务器即可添加。 我遇到的问题是我希望模块创build视图的一部分,因此我希望以可移植的方式调用JSF组件,或者从模块中进行包含以获得它呈现其视图。 我已经解决了我想要调用的模块,并准备好引用模块的接口。 我最初的想法是做一个ui:包含要求模块提供视图模板的地方,但我不知道如何以有意义的方式回答该查询,因为视图分辨率是从应用程序完成的根,而不是图书馆的根。 执行摘要是我不知道如何使用JSF for .xhtml(模板/组件)文件跳过从应用程序到库的差距。 使用CC会很好,但是如何在运行时指定我需要特定的CC实例,而不是将其硬编码到页面中? 我当然可以直接调用应用程序代码,并要求它提供标记,但是这看起来非常暴躁,一旦我有了标记,我不确定如何告诉JSF来评估它。 也就是说,我可以想象一个组件,将采取资源path,抢标记和评估,返回完成的标记,我只是不知道如何实现。 如果可能的话,我宁愿避免强迫模块开发人员去使用繁重的UIComponent方法,这意味着要么采取一种dynamic的方式来执行ui:include(或一些等效)或者dynamic调用CC的方式。 (我不介意在应用程序中编写UIComponent方法ONCE,如果这使得模块开发人员的生活更容易) 有什么build议,我应该看看这个了? (如果我先find答案,我会在这里发表答案)
由于CDI(及其实现焊接),JEE6中的每个POJO都可以用@Named注释,这使得POJO可以被视图访问。 这是否意味着ManagedBeans现在已经完全过时了? 还是我错过了@ManagedBean仍然有意义的东西?