问题标签 [jboss-weld]
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.
servlets - 在 Servlet 中注入 CDI 会话 Bean
我正在我的项目中注入(@Inject)CDI Beans 范围请求和 Servlet 中的会话。问题是对于会话 bean CDI,我没有得到那些状态。我尝试从我的 servlet 修改 bean 的状态,但是当我尝试从页面恢复时,好像 servlet 无法更改状态。有人可以帮助我吗?
java - 用 CDI 机制替换基于工厂的对象创建
我想在我们的项目中引入 CDI(焊接),但现在手动构建的对象遇到了一些问题。
所以我们有一些实现IReport
接口的类,它们有一个应该注入的字段。这在运行时为 null,因为所有这些类都是由ReportFactory
in a class生成的ReportController
。
我知道我可以将@Produces
注释与 中的另一个自定义注释一起使用ReportControllerFactory
,但是如何将@Inject
用于只能在完成一些验证后在方法内创建的变量?我将如何提交参数ri.getClassName()
?对象在构造ri
时是未知的ReportController
。
非常感谢!
亲切的问候,塞巴斯蒂安
2011 年 7 月 8 日 (10:00) 编辑:
报告工厂类:
编辑 2(选择正确的报告实施)
报表实例由一些从 JSF 前端到 ReportController 的路径选择。ManagedBean 调用一个会话 bean,该会话 bean 有多种方法,具体取决于在何处按下了哪个按钮。所有这些方法都设置报告名称并调用更通用的方法sendOrGetReport
。此方法从数据库中选择指定报表的唯一键,并决定是发送电子邮件还是立即发送报表。让我们假设它应该交付。
然后ReportController
开始发挥作用。他ReportInfo
根据上述方法提供的唯一键和其他信息获取对象,并调用ReportFactory
来创建类型的报告ri.getClassName()
。
花哨的,是吗?我认为整个部分可能需要一些重构。如果您没有看到任何容易的地方,我会跳过@Inject
报告实现中的 并为该资源进行 JDNI 查找。
java - 使用weld-se-core 和weld-servlet-core 时CDI 停止工作?
我正在玩 Weld-SE。我有一个具有可插拔模块的项目。使用一个模块,焊接工作。当使用 的其他模块weld-servlet-core
被放在类路径上(使用它的 deps)时,CDI 停止工作,并给出诸如“无法解析依赖项 XY”之类的错误或(在删除之后@Inject
)这样的错误:
尽管该类具有@Interceptor
(并且同一类可以与其他模块一起正常工作)。
当我调试WeldBootstrap#startContainer(Environment environment, Deployment deployment)
时,
deployment.beanDeploymentArchive.beanClasses
包含拦截器("org.jboss.weld.environment.se.jpa.JpaTransactionInterceptor"
)。
我检查了依赖项和 TattleTale 报告,它们看起来都很好。
有什么想法我应该看/接下来尝试什么?
该项目位于http://ondrazizka.googlecode.com/svn/trunk/bots/JawaBot/branches/2.0/要查看错误,请运行 mvn dependency:copy-dependencies java -cp ... org.jboss.jawabot。 JawaBotApp 或者只是在 NetBeans 中运行 web 模块。
谢谢, 翁德拉
更新: JIRA: https
://issues.jboss.org/browse/WELD-940
另外,我发现它可能是由 Weld 的扫描扩展中的错误引起的,<weld:scan>
.
java - JavaEE 和 CDI:了解 @Observes
我有原型org.jboss.weld.archetypes:jboss-javaee6-webapp:1.0.1.CR2
,我试图理解这个类MemberListProducer
:
观察者是从另一个类调用的memberEventSrc.fire(newMember);
,这似乎很清楚:一旦被触发,MemberListProducer
更新成员列表。
但我不明白为什么这是在@RequestScoped
Bean 中完成的。据我了解retrieveAllMembersOrderedByName
,每个请求都会调用该方法。这@Observes
不应该更好地放在 a@ViewScoped
或@SessionScoped
Bean 中吗?它在这种情况下是否有影响?
eclipse - 在 Java EE 开发中快速周转的理想设置是什么?
在使用 Eclipse Indigo 和 JBoss 6 实现 Java EE 6 应用程序时,我目前正在为项目设置而苦苦挣扎。应用程序服务器和 IDE 几乎已在项目中设置。Maven 3 被使用,并且是通过使用 WELD 原型和创建 WAR 进行设置的基础。
现在,问题是,我对发展的转变感到非常失望。我在 Eclipse 中没有有效的自动重新部署,并且经常需要重新启动 JBoss,因为它与新的发布混淆,然后无法正确重新部署。这是非常令人沮丧和耗时的。(另外,我觉得那些喜欢脚本语言的人在我身后傻笑。)
在早期的项目中,我们使用的是 Seam 2,而由 seam-gen 创建的项目进行了一些不错的重新发布,尽管每当我更改 Java 类时我仍然必须手动重新启动应用程序。然后,通过使用 Netbeans 7 和集成的 GlassFish 3.1,我发现自动重新部署工作正常。而且由于 Java EE 6 的传播范围非常广泛,我认为肯定有比我现在更好的设置。
因此,通过这篇文章,我希望能够更深入地了解在 JBoss 和 eclipse 上流畅地开发基于 Java EE 6 的 WAR 项目的良好项目设置——谁能分享一些最佳实践?
非常感谢!
jsf - JSF:没有表单提交的按钮/链接
在早期的项目中,当取消某些东西时,我经常使用 Seam 2 中的 s:button 或 s:link,因为它不会提交表单,因此不会发生模型更新。
现在我切换到 WELD + Seam 3 并且再也找不到它了 - 我只是盲目还是我必须使用其他东西?
格齐弗
initialization - CDI / Weld SE - @Observes ContainerInitialized 不起作用
我有 Weld SE,以这种方式引导:
和下面的豆
根据 Weld 文档,init()
应该调用该方法。但事实并非如此。其他豆子工作正常。
有什么问题?
dependency-injection - 如何设置 wicket 快速入门以使用 seam-wicket CDI?
我需要做什么才能使 CDI 在我的 wicket 快速入门项目中工作?当我尝试启动 Jetty 服务器时,出现异常:
我正在创作一个检票口项目。我不知道 Seam、Weld 或 CDI 的第一件事。我想通过将它合并到一个小项目中来学习它。我正在关注此参考文档:
http://docs.jboss.org/seam/3/wicket/latest/reference/en-US/html_single/
现在,我在外星人文件的海洋中游泳,试图找到答案。帮助!
编辑:
wicket 快速入门中的 Jetty 服务器是通过编程方式创建的。根据下面给出的文档,我创建了:
webapp/WEB-INF/jetty-env.xml
:
在web.xml
中,我添加了以下代码段:
以下 Java 代码负责在运行 Start 时在快速启动环境中设置 Jetty 服务器:
根据我的 Maven 依赖项,我正在使用码头版本 6.1.25。
testng - TestNG - 使用任何 @Before* 注释时注入失败,但没有
我想@Inject
在我的 TestNG 测试用例中使用注释。该测试由 Arquillian 在远程 JBoss AS 6 实例中执行。测试基本上是这样的:
测试用例
工作时...
initTestData()
如果我在单个测试方法中手动调用该方法,我已经正确注入了资源来使用。
不工作时...
如果我使用上面给出的任何注释(@BeforeClass
, @BeforeTest
, @BeforeMethod
),测试用例将失败,因为所有注入的资源都是空的(utx 和 em 以及我想测试的其他一些类)。
所以,我在问自己和你们:那里出了什么问题?
亲切的问候,塞巴斯蒂安
java - 为什么 CDI 注入在某些模块中不起作用,而在其他模块中不起作用?
在我的 Java EE 项目中,有几个“Java EE”模块和一个 Web 模块。其中一个 Java EE 模块为 CDI 提供了一个类,供其他模块使用:
它们被注入
但是,这只适用于其中一个 Java EE 模块和 web 模块。在所有剩余的 Java EE 模块中,注入始终失败,我不知道为什么:我得到的只是 WELD-1408, unsatisfied dependency。
所有模块都beans.xml
在适当的位置,只要我不切换到注入,它们都可以工作。大多数目标 bean 已经作为 JSF 中的注入 bean 使用。有效的 Java EE 模块的特别之处在于 bean 被注入到 web 模块中的 servlet,而不是 JSF。
该项目在 GlassFish 3.1 中使用 Java EE 6、EJB 3.1 运行。依赖项由 Maven 3 管理。X
它本身就是Serializable
,以满足钝化范围。
你以前遇到过这个吗?我做错了什么?
更新:在上面添加了依赖管理备注。
更新:更正了@Actual
in的位置Target
。
更新:经过一天的实验,更新了描述,提供了更多细节。