问题标签 [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.

0 投票
3 回答
851 浏览

java - Java 配置和依赖注入(类似于 Springs IoC vs. Weld / Guice)

假设我有一个ListCreator要配置的类。我希望能够告诉它排序顺序以及如何输出我的表格。因此我有布尔sortDescending属性和由(但也由)TableWriter实现的接口。在这个例子中,我认为配置和 DI 齐头并进。我想写一些类似这个 Spring(伪)例子的东西:PdfTableWriterXlsTableWriter

现在 Spring 可以做到这一点,但 Weld & Guice 似乎做不到。例如 Weld 允许您在 beans.xml 中选择替代方案,但仅限于整个应用程序。如果我想同时拥有一个ListCreator用于 PDF 和另一个用于 XLS 怎么办?

我目前不了解 Weld 和 Guice 的范围,因为它们似乎不允许进行太多配置。这似乎只是减轻了编写new或实现自己的工厂的需要。例如,EJB 注入也是如此,这很好,但整个配置部分在哪里(选择哪个实例以及我实际想要的参数)。

说到重点:我不想使用 Spring,因为它似乎是开销。我宁愿使用 JSR 指定的干净和小巧的东西。有什么建议么?

0 投票
5 回答
4601 浏览

jsf - 验证错误后jsf viewparam丢失

我面临以下问题:在一个页面中,我列出了我的应用程序的所有用户,并且每个用户都有一个“编辑”按钮,这是一个带有?id=<userid>.

编辑页面有一个<f:viewParam name="id" value="#{editUserBean.id}"/>in 元数据。
如果我犯了一些输入错误并提交(我使用 CDI Weld Bean 验证),页面会再次显示,但我丢失了?id=...URL 中的内容,因此丢失了我正在编辑的用户的用户 ID。

我已经查看了JSF validation error, lost value中描述的类似问题,但是使用 inputhidden(或更糟糕的是,使用 tomahawk,看起来有点矫枉过正)的解决方案需要大量难看的代码。

我试过用 CDI 添加一个“对话”,它正在工作,但对我来说,这似乎太过分了。

JSF 中是否存在一个简单的解决方案来在验证错误的情况下保留视图参数?

[我的环境:Tomcat7 + MyFaces 2.1.0 + Hibernate Validator 4.2.0 + CDI(Weld) 1.1.2]

0 投票
1 回答
737 浏览

java - 自定义错误页面不适用于 Weld 和 Tomcat7

在我的网络应用程序中,我正在尝试使用自定义错误页面。
但是,这不适用于 Weld。当我导航到应用程序中不存在的页面而不是获取自定义错误页面时,我看到 Weld 出现异常:

我认为这是Tomcat中的错误:

https://issues.apache.org/bugzilla/show_bug.cgi?id=50789

但是它已在 v.7.0.9 中修复

摘自我的web.xml

我正在使用 Tomcat 7.0.19、JSF 2.0 和 Weld 1.1.2。
任何想法会发生什么?

0 投票
3 回答
10849 浏览

jsf-2 - Richfaces 4 a4j:commandLink 操作未在 Rich:popupPanel 中触发

我似乎遇到了一个问题,我在 rich:popupPanel 上有一个 a4j:commandLink 但操作没有触发。xhtml 如下所示:

托管 bean 如下所示:

我已经制作了托管 bean @ViewScoped。

我也尝试过<h:form>在 commandLink 周围添加一个,但是,这甚至比没有它的要少。我实际上认为这是因为 commandLink 位于<h:form>打开 popupPanel 的链接所在的内部。

无论如何,有人可以指点我为什么动作不火的方向吗?

0 投票
2 回答
7724 浏览

events - 使用成员的限定符动态触发 CDI 事件

我正在尝试在 JBoss AS6 上的后端服务中使用 CDI 事件——理想情况下,可以最大限度地重用代码。

我可以从文档中看到,我可以通过使用带有成员的限定符来减少必须创建的限定符注释类,例如

我可以观察到这一点

到现在为止还挺好。但是,为了进一步减少所需的类数量,我想要一个 EventFirer 类,其中引发的事件的限定符是动态的。没有成员的限定符不是问题:

然后称为

但是,限定符什么时候应该有成员呢?查看 AnnotationLiteral 的代码,它肯定是为成员设置的,并且类元素注释有示例:

这对我来说很有意义 - 您正在覆盖注释接口的 value() 方法。但是,当我自己尝试这个时:

我收到异常

谁能看到我做错了什么?MemberQualifierEventManager 是一个 ApplicationScoped bean,它调用 DynamicEventFirer 来触发事件。

谢谢,本

0 投票
2 回答
848 浏览

java - CDI:来自同一 bean 的非拦截方法的拦截方法嵌套调用 - 应该调用吗?

如果我有方法

那么第一个方法也必须注释@JpaTransactional 对吗?

我刚刚发现,当一个bean调用自己的拦截方法时,拦截器并没有被触发。我认为那是因为它不是被调用的代理,而是“真实实例”本身,因此它不会通过代理。

这是否包含在规范/文档中?我还没找到。我问是因为我想确保如果我注释所有公共方法,它们将来不会开始多次调用拦截器。

0 投票
2 回答
887 浏览

seam - 焊接原型与缝锻造

我正在使用 Seam 3 构建一个新项目。我不明白 Weld 原型和 Seam Forge 之间有什么区别。它们都帮助我们构建一个简单的项目模板。

0 投票
1 回答
99 浏览

java - 处理器什么时候执行?

我有一个生产 MyResourceManager 的 pojo 生产者。

@TraderResouceManager @RequestScoped public MyResourceManager(){ ... ... }

MyResourceManger 被注入到 SLSB

@inject @TraderDB private MyResourceManager rm;

处置器如下

公共无效关闭(@Disposes @TraderResouceManager MyResourceManager rm){ rm.close(); }

问题

close() 什么时候执行?

是在交易结束前还是交易结束后?

编辑:这个问题可能需要额外的解释。让我们以数据库连接为例。

我使用@RequestScoped 创建了一个@producer,使用pojo 为每个请求创建一个新连接。

我需要的是在请求结束时处理连接。此连接由其他 bean 共享(现在为 SLSB)。在给定的请求中,可能涉及在事务中运行的许多 bean。因此,只有在所有事务逻辑关闭后,我才需要关闭连接。

问题 当我使用容器管理事务时,我是否能够使用上述代码实现此行为?

0 投票
2 回答
166 浏览

java - 在 Glassfish v3 部署中,我可以在哪里放置符合条件的 CDI 候选人?

我在一个 jar (a.jar) 中有代码,其中包含一个@Inject X x.

我想通过另一个jar中的实现来满足注入(b.jar,作为有效的 bean 存档等)。

据我了解,我不能在单独的 WAR 独立存档中部署 a.jar 和 b.jar,因为它们是独立的 CDI 明智的。我也许可以将 b.jar 放在 Glassfish 为所有部署提供的 lib 文件夹中(但这是“纯 Java 6 EE”吗?这意味着我不能以与战争或耳朵相同的方式进行部署?)。我可能能够在与 a.war 或 a.jar 一起放置在 lib 中的 EAR 中提供 b.jar,但我对此并不熟悉。

我的问题是部署 a.jar 和 b.jar 有哪些选项,以便 Glassfish(当前为 3.0.1,但如果效果更好我会考虑 3.1.1)将正确解决此依赖关系?我正在寻找一份详尽的清单。

(编辑:我更喜欢 b.jar 可以独立于 a.jar 部署的解决方案)

0 投票
3 回答
4645 浏览

dependency-injection - 可以在 Weld 中控制类路径扫描吗?

我在玩 Weld-SE (Java SE) 并注意到如果类路径中有很多 JAR,JVM 启动时间会运行到几秒钟。

没有办法像 Apache Ant 或 AspectJ 那样将扫描路径指定/限制为包模式或路径模式吗?

PS:在 Weld 论坛上注册不起作用 - 它一直说“您的密码很简单”