问题标签 [weld2]

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 投票
1 回答
338 浏览

cdi - Weld 1.1 + Solder 导致不满意的依赖关系?

我遇到了奇怪的“WELD-001408 Unsatisfied dependencies”。

根据所有规则和文档,应该解决依赖关系。这是正常的@Produces方法和@Inject其他一些豆子。

现在我尝试从 Weld 1.1.13 升级到 2.0.1,并开始收到“WELD-001332 BeanManager 方法 getBeans() 在应用程序初始化期间不可用”,这在SOLDER-339中有描述。

焊料有可能是奇怪的不满足依赖关系的罪魁祸首吗?

0 投票
0 回答
257 浏览

jsf-2 - Weld 2.0.Final、Tomcat 7 和 JSF 2.2

目前我们使用上述组合,但我们仍然使用 JSF 2.1。但我确实怀念 CDI 环境中非常强大的 View Scope,我尝试更新到 JSF 2.2,同时保持其余部分不变。

现在我遇到了 javax.faces.view.ViewScoped 的几个问题。即使 ViewId 没有改变,视图也会被丢弃,以及其他奇怪的效果。

现在,我想知道选择的组合是否有效。Weld 2.0 是否支持 JSF 2.2,反之亦然?

0 投票
1 回答
40 浏览

jsf-2 - 如何有效地更新包含在多个类中的属性?

我有一个简单的模式,控制器/支持 bean 在@ViewScoped上下文中管理单个实体实例。该视图采用几个支持 bean 并显示信息。Andy Gibson 在这篇博文中描述了我正在使用的方法。

现在我需要显示有关两个实体的信息,一个人及其联系人:

有一个 ContactMgr 和一个 PersonMgr,我首先Person通过一个f:viewAction. 然后,我显示该人的联系人列表,并让用户在其中编辑它们rich:popupPanel

单击链接会加载选定的联系人并让用户根据自己的喜好进行编辑。用户然后单击“保存”,更改将被保留。到这里为止,一切都很好。

但现在我想重新渲染联系人列表。我如何PersonMgr知道更改的联系人?联系人列表是前段时间填充的,在ContactMgr.

我已经看过三个解决方案:

  • 直接将联系人设置为 on ContactMgr,但我确实需要在显示弹出窗口之前初始化更多字段,因为我不想为每个联系人承担费用。
  • 一个完整的站点重新加载是可能的,但也相当昂贵。
  • @Observe恐怕我需要十几种方法,我附加的每个列表都有一个Person

那么,如何有效地将更改信息从一个 bean 分发到包含已编辑实体的(现在陈旧的)副本的其他 bean?

0 投票
1 回答
833 浏览

java - 使用 Weld 和 Hibernate Validator 进行方法验证

有谁知道在使用 Weld 和 Hibernate Validator 时如何运行方法验证?我的应用程序应该是一个独立的应用程序,所以我没有使用应用程序服务器。

@NotNull我下面的代码中的方法的约束test被简单地忽略了。

我的代码是这样的:

测试.java

验证.xml

我正在使用 Gradle 构建;这是我的gradle.build与依赖项:

我尝试使用他们的入门指南中提到的 Hibernate Validator CDI "org.hibernate:hibernate-validator-cdi:5.0.2.Final",但这也不起作用。

我缺少什么来运行方法验证?

0 投票
2 回答
1573 浏览

tomcat - 在 Tomcat 上使用带有 Weld CDI 的 Jersey 部署应用程序时出错

我正在使用 Jersey 2.7 + Weld 2.2.0 + EclipseLink (JPA 2.1) 开发一个 Web 应用程序。然后我尝试使用“jersey-gf-cdi.jar”“粘合”CDI,但是当我尝试在 Tomcat(7 或 8)上部署应用程序时,出现以下错误:

Weld + Tomcat 运行良好,Tomcat 上的 Jersey 也运行良好。

而且,当我尝试在没有“jersey-gf-cdi.jar”的情况下部署应用程序时,我得到了这个:

我的问题是,如何使用 Weld CDI 集成 Jersey?谢谢!

0 投票
1 回答
1113 浏览

jakarta-ee - 使用生产者方法的 Java EE 产生“WELD-001408 Unsatisfied dependencies ..”异常

嘿那里,

我对 Java EE 和 CDI 非常陌生。我尝试建立一个测试项目,以便使用 JAX-RS 和 CDI 完成我的第一步。我通过提供 beans.xml 启用了 CDI。只要我在测试,我就会使用 bean-discovery-mode="all" 元素。CDI 似乎工作正常,因为我可以成功地将 BeanManager 注入到我的测试资源中,并且可以输出它发现的所有 bean。

我尝试注入一个生产者方法提供的类。Netbeans 向我显示了有关 provideMe 字段的警告: 未找到符合注入条件的已启用 bean

当我将应用程序部署到 Glassfish 时,我得到了焊接异常:

这是我为这个小测试准备的课程:

界面:

执行:

制片人:

资源:

当我在没有“ProvideMe”测试的情况下启动应用程序并打印出所有发现的 bean 时,发现了 ProvideMeProvider 类,以及“ProvideMe”:

问题:

1) 为什么在尝试注入接口的唯一实现时会出现“不满足的依赖项..”错误?

2)这里发现了所有必要的类吗?

3)如果没有,我需要做什么才能被发现?

4) 它发现的“ProvideMe”类是什么?(我有 ProvideMeImpl、ProvideMeInterface 和 ProvideMeProvider,但没有类 ProvideMe)

我正在使用:Glassfish 4.0 (build 89) (Java EE 7 Web)/NetBeans 8.0/maven 3.2.1/JDK 1.7

0 投票
1 回答
2359 浏览

junit - 注入 Jersey 资源,HK2 在 Java SE 中运行时进行注入而不是 Weld -> 不满足的依赖关系

我有一个简单的测试应用程序,我将它部署到 GlassFish(只有一个资源注入了一个简单的类)。在 GlassFish 上,一切正常(记录 FINE 时的例外情况除外,请参见此处)。我可以成功调用资源并且 Weld CDI 正在进行注入。

现在,当我在 Java SE 中启动应用程序以使用 JUnit 进行单元测试时,似乎 HK2 正在尝试提供注入,然后导致 UnsatisfiedDependencyException。

我可以定义一个将绑定 InjectMe 类的 AbtractBinder,以便 HK2 知道它。然后注入工作正常。但是 Weld CDI 应该将类注入 Jersey 资源,而不是 HK2。

引导是通过创建自定义 JUnit 运行器 (WeldJUnit4Runner) 和@RunWith(WeldJUnit4Runner.class)注释来完成的,示例见此处:http ://blog.rocketscience.io/dependency-injection-with-cdi-in-java-se/

Weld CDI 为 Java SE 环境成功引导,我可以成功地将 InjectMe 类注入到实际的 JUnit 测试类中,而不是注入到 Jersey 资源中。InjectMe 类是由 Weld 引导发现的:

问题:为什么 HK2 在 Java SE 中运行时尝试注入 InjectMe 类而不是 Weld?

编辑: 我创建了一个 Netbeans 项目,因此您可以轻松地重现此测试: simple-service.zip。不要忘记将 java 日志记录的属性设置为 logging.properties 文件:

我已经通过为 Netbeans“测试文件”操作定义它来做到这一点。在属性文件中,必须定义以下标志:

当我昨天进行测试时,有一段时间这个确切的设置确实有效,没有给我那些例外。我认为,静态初始化存在问题,HK2 有时会先初始化,我认为这会导致此错误。

资源:

应用配置:

聚甲醛:

例外:

注入类:

我正在使用:Glassfish 4.0 (build 89) (Java EE 7 Web)/NetBeans 8.0/maven 3.2.1/JDK 1.7/Weld 2.2.1

0 投票
1 回答
833 浏览

cdi - Wildfly 8.1 中的 CDI 交叉 BDA bean 注入

我有一个具有以下结构的 EAR 文件:

    • jar.jar
      • 测试1
      • 测试2
  • ejb.jar
    • Test1Impl
  • 战争
    • Test2Impl
    • 测试服务程序

jar.jar 包含两个接口

  • 测试1
  • 测试2

只有当我在 war.war 中有一个清单类路径条目到 ejb.jar 时,TestServlet 才会注入解析为 Test1Impl 的 Test1。只有当我在 ejb.jar 中有一个清单 Class-Path 条目到 war.war 时,Test1Impl 才会注入解析为 Test2Impl 的 Test2。

提示条目匹配用于部署Weld 文档的类加载器结构解释了为什么我需要清单条目。这种交叉 BDA 注入应该如何正常工作?添加 Class-Path 清单条目似乎有点愚蠢,因为实际上我不希望实现可见。我只希望其他子部署中的 bean 可见。有没有办法做到这一点?

这里的实现

这里是 application.xml

0 投票
0 回答
584 浏览

jsf - Omnifaces ViewScopeManager 在访问时给出 NullPointerException

我刚刚使用 maven 依赖项安装了omnifaces 库(2.0),如此所述。但是每当我访问我NullPointerException从 CDI @SessionScopedbean 获得的应用程序时,调用ViewScopeManager

我检查了bean 源代码,此时变量ViewScopeManager似乎为空。activeViewScopes它由名为postConstructSession注解的方法初始化@PostConstruct。我在该方法中设置了断点,似乎它从未被调用过。

我正在使用wildfly 8.2.0.Final Web 服务器和weld 2.2.9.Final。我尝试使用omnifaces作为范围运行时的依赖项并提供(作为Wildfly模块),但仍然存在错误。

是 Weld 中的错误吗?当第一次访问 bean 时,weld 应该调用带有注释的方法@PostConstruct

请帮我解决这个问题,对不起我的英语:)

编辑:似乎只有当 OmniFaces 用作战争模块部署时,CDI 才能正常工作。这是唯一的方法。感谢您的帮助。

0 投票
2 回答
1070 浏览

java - 无法在自定义登录模块中注入 dao

我有一个在 Wildfly 中运行的 Web 应用程序,它使用 Spring 和 JPA。现在我将应用程序的登录模块作为 JBoss 中的自定义模块移动。

代码片段如下。

我的登录模块

DaoImpl 类如下所示。

Pom.xml 依赖项

豆类.xml

当这个 jar 部署在 JBoss/modules 中并启动服务器时,dao 对象始终为 null。我的代码中是否缺少某些内容?