问题标签 [weld-se]
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.
weld - 焊缝 junit5 与焊缝 3
最近我们将 Weld 升级到 3.0.3.Final(Wildfly 12 中的那个)。现在weld-junit5 1.3.1.Final(最新版本)抛出异常
我们在依赖管理中添加了weld-se-core:
这推翻了在weld-junit5 中定义的weld-se-core 2.4.8.Final 的默认版本。但似乎weld-junit5依赖于weld 2.x的结构
Weld-junit5 在其 github 页面上声明支持焊接 3,但没有描述如何使用它。我在weld-junit5的POM中发现了这个:
但我没有激活此配置文件。
如何解决?
java - 带有 JUnit 5 的 WELD SE 需要以编程方式启用 bean 发现
我正在设置一个示例项目用于测试目的,它使用 Weld SE 和 JUnit5,出于某种原因,在我的测试类中,在初始化焊接后,我观察到,由于某种原因,它的 bean 发现被禁用,最后,它导致我出现这个错误:
这是我的测试课:
位于 :
这是我的 beans.xml :
位于 :
项目结构相当简单,我只有一个名为“projectName”的主模块,它是名为“core”的子模块的父模块,其中包含我之前粘贴的所有内容。我的依赖项列表是这样的:
这些是我的属性:
如果我修改测试添加带有显式 bean 发现激活的焊接初始化属性,一切都会很好:
我错过了什么?如果 beans.xml 存在,bean 发现不应该自动激活吗?先感谢您。
java - 如何处理 CDI 创建的 Runnable
我有一个 Java SE 项目,它接受一些命令行参数,在单独的线程中为指定的参数执行处理。我正在使用以下焊接微配置文件配置依赖项进行注入
这是我的 beans.xml
我的项目从以下主类开始
这是我的调度程序类的代码
这是 Runnable 的骨架
我遇到的问题是注入的对象(Runnable 和包含的服务和 EntityManager)并且在所有线程完成并执行 executor.shutdown() 命令之前永远不会被释放。
我相信由于 Runner 被标记为@Dependent,它使用的是注入它的对象的作用域;这将使它成为@ApplicationScoped。我尝试使用@ThreadScoped (org.jboss.weld.environment.se.contexts.ThreadScoped) 标记该类,如下所示
但这会导致以下异常
我觉得我需要使用@ActivateThreadScope (org.jboss.weld.environment.se.contexts.activators.ActivateThreadScope) 注释,但我还没有找到任何如何使用它的示例。有谁知道我如何使我的 Runnable 不是 @ApplicationScoped?
java-ee-8 - WeldSE 与 JUnit5 - 无法注入依赖项
这是我的服务类:
在同一个模块中,我有一个 util 类,它使用带有@Qualifier注释的 Log 接口提供记录器
然后我使用 JUnit 5 + Weld SE 编写了一个 UnitTest
这会产生以下错误:
如何在单元测试中正确地将 @Log 依赖项添加到 Weld SE?
java - WELD-SE + JUnit5 WELD-001409:带有限定符 @Default 的类型验证器的模棱两可的依赖关系
我想使用带有 JEE8 (CDI 2.0) 的 WELD SE 创建 REST 资源的单元测试。
这是 REST 资源类的代码:
我创建了其余的测试junit
在 pom.xml 中,我在测试范围内添加了 hibernate-validator 引用,因此首先它可以创建验证器。
当我尝试运行测试时,我收到此错误:
我该如何解决这个问题?
jsr352 - jBeret + Weld SE - 从 Batchlet 注入托管 bean
我正在尝试使 CDI 在 JBeret SE 上工作。这是我的代码:
SampleBatchlet 类
SampleBatchletTest 类
服务器类
LoggerProducer 类
问题是 Logger 实例未在 SampleBatchlet 上注入,而在上面的测试和服务器类中正确注入。
有什么提示吗?
小更新
通过阅读此参考资料
https://jberet.gitbooks.io/jberet-user-guide/content/batch_properties/
我发现 java.util.logging.Logger 可以被注入。
因此我添加了
价值实际上可以是任何东西..
在 SampleBatchlet 上我添加了
现在它被注入了。顺便说一句,我有点困惑,因为我希望使用另一个记录器实现..
java - 关闭钩子关闭的焊接 SE 不执行 @PreDestroy
我有一个非常简单的 Java Weld SE 应用程序。根据文档, Weld 注册了一个应该挂钩以正确关闭容器。我希望它会尝试正确关闭所有托管 bean,但似乎容器会立即完成。
简单的 CDI bean:
主要:
控制台输出(应用程序以CTRL+C
or结尾kill -15
,两者的结果相同):
container.close()
但是,如果使用终止程序以编程方式关闭容器,则可以正常工作:
所以我的问题是:如何让容器在SIGTERM
收到时优雅地关闭?内置的关闭钩子不会这样做......
java - 关闭 JBoss 的 Weld 时出现异常
我正在测试 Weld 和 CDI 的行为,但是每当我调用 Weld::shutdown() 时VerifyError
都会引发异常:
我究竟做错了什么?我根本不应该使用 Weld::shutdown 方法吗?
这适用于 Java 8,Weld 依赖项:
java - 如何记录 WELD SE Container 关闭的原因
编辑:事实证明,由于错误的健康检查失败,我的 docker 容器正在关闭。这导致 kubernetes 探测失败太多次并杀死了 pod。由于命令来自 JVM 外部,因此代码可能无法知道 JVM 周围的容器何时被杀死。留下这个问题,以防有人找到答案。
我有一个 Java SE 项目,它读取处理文件的参数。我正在使用 Weld-SE 进行注射。运行几分钟后,焊接容器在没有解释的情况下关闭。以下是我的代码的骨架。在我的主要课程中
这是我的调度程序类
这是我的进口商代码
文件 test.txt 大约有 100,000 行,因此我可以判断崩溃发生在文件处理过程中。因此,在我的代码运行几分钟后,我在日志末尾得到以下信息
我在调试级别记录“org.jboss”。我可以看到容器在处理文件的过程中被关闭,但我不明白它为什么会发生。是否有某种类型的侦听器可以扩展/实现以查看关闭命令发生的原因?
java - 如何验证普通方法,就好像它是 CDI InjectionPoint?
我正在 Weld CDI 和 Undertow 之上构建一个简单的 API 框架,以熟悉 CDI 可移植扩展编程模型。它是 JAX-RS 的严格子集:
我的 CDI Portable Extension 收集了所有具有 Path 注释的 AnnotatedTypes。当 CDI 完成启动时,Undertow 网络服务器启动,所有收集到的类型(及其路径)都注册到 Undertow RoutingHandler。
扩展负责为每个使用 @GET/@POST 等注释的方法构建 HttpHandlers...
如您所见,现在处理程序正在使用普通 Java 反射来调用资源方法。
我想让方法参数注入工作,如我上面的示例所示。在实际运行处理程序时,我可以使用 BeanManager 和元数据来获取正确的参数,但是......
如何验证注入点?即,使用我从 ProcessAnnotatedType 事件获得的 AnnotatedType,我如何验证任意方法,就好像它是生产者或构造函数或事件观察者一样?
更新:到目前为止,我对Deltaspike的InjectableMethod类已经有了很大的了解。它检查该方法并创建一个可以传递给 BeanManager.validate 的 InjectionPoint。但是,它在世界上可公开使用的 Google 代码中没有太多用处。