问题标签 [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 投票
1 回答
2516 浏览

seam - Seam3 和 Weld CDI 是一回事吗?

也许这似乎是一个愚蠢的问题,但我真的很困惑。Seam 3 和 Weld CDI 是一回事吗?我正在阅读一些涉及“CDI(焊接)/接缝 3”的帖子,我应该将它们视为同一件事吗?

0 投票
1 回答
2303 浏览

jakarta-ee - CDI SessionScoped 托管 bean 中的 PostConstruct

短篇小说:我@SessionScopedjavax.enterprise.context一个javax.faces名为UserContextBean. 我想在创建 HTTP 会话时实际做一些事情。

所以很自然地,我认为@PostConstruct这样做可以解决问题:在构造这个 bean 的实例时只调用一次。但是,根据此处的文档,他们说调用了 PostConstruct 方法:

当托管 bean 被注入到组件中时,CDI 会在所有注入发生且所有初始化程序都被调用后调用该方法。

我曾假设每个会话都会调用一次 post 构造方法。但是,实践与文档一致。这个 bean 被注入到一个@RequestScopedbean(也叫 CDI)中,该 bean 用作 JSF 页面的支持 bean,并且每个请求都会调用 PostConstruct 方法。

我意识到(现在)这是行为。但是是否有任何其他方法可以为每个会话初始化一次?

一些代码,虽然不是很相关:

我在其中注入的请求范围 bean:

我也在考虑使用HttpSessionListener并初始化会话 bean,但听起来已经很乱了。

编辑

刚刚注意到,甚至没有创建 HTTP 会话。如果我通过调用“手动”创建会话getSession(true)(出于测试目的,我在阶段侦听器中执行此操作,但只是因为它已经存在),那么一切都会按预期工作。

0 投票
2 回答
1759 浏览

jakarta-ee - 如何在 Java EE 中使用 CDI 编写 main()?

我有一个希望运行的无客户端应用程序。它没有客户端,但会进行 HTTP 调用并充当其他服务的客户端。它可能会运行几个小时或几天(但它不需要定期运行——只需一次)。

我想在 Java EE 7 容器中运行它,因为标准上下文依赖注入 (CD) 和标准 JAX-RS 客户端(Java EE 7 以来的新客户端)的好处。拥有 JMS、JPA 等服务也很不错。

问题是我如何以标准方式编写/注释主要方法?@Injecton 一个方法是不好的,因为这样的方法必须快速返回。@Schedule并不理想,因为它会定期运行,除非我以编程方式确定当前系统时间。

我能想出的最好办法是Timer@Inject方法中设置一个单一镜头,并用@Timeout.

不知何故,这似乎有点脆弱或不雅。是否有更好的标准方式来启动服务?一些只会导致它启动并开始运行的注释?

此外,在取消部署时中断和关闭服务的最佳标准方法是什么

0 投票
1 回答
386 浏览

java - Weld CDI 环境中的并行 Web 服务访问

我们正在 Tomcat 上使用 JSF 2 和 Weld Cdi 开发 Web 前端。
现在我在并行执行多个 Web 服务以优化请求时间时遇到了问题。
用户可以从列表中选择多个项目。
对于每个选定的项目,该过程使用列表键作为参数从一个 Web 服务收集它的信息。

我目前的方法是使用生产者,它返回注入到 bean 中的 web 服务端口接口。bean 在循环中为每个选定的键调用此 webservie。

为了更快,我尝试使用 ExecutorService 和尽可能多的工人,它们正在返回期货。

这个构造的问题是,我无法将服务端口注入工作人员,因为工作人员没有得到管理。手动创建服务端口可以工作但不受欢迎,因为它忽略了生产者类。

此外,在测试时,不可能注入提供预定义结果集的虚拟服务端口。

由于我没有找到任何关于在 tomcat-weld 环境中并行执行的内容,因此我的方法一定有问题。

解决这种情况的正确方法是什么?

编辑:为了更清楚我尝​​试了什么......

}

这样做时,工人不受管理。

0 投票
2 回答
5365 浏览

java - 使用 CDI 进行测试,模拟 bean

我想知道我如何使用 CDI 进行测试。和注射期间的模拟课程。

如果我有课:

如果我想在测试期间模拟 ItemDao 类,当我想测试 My ItemProcessor 时,我该怎么做?

0 投票
1 回答
1192 浏览

cdi - 使用 WicketTester 和 CDI-Unit 进行单元测试在 Eclipse 中工作,但在 Maven 构建期间失败。我错过了什么?

我正在尝试使用 CDI-Unit 来测试我的 Wicket 组件,这些组件使用 CDI 进行依赖注入。测试似乎在 Eclipse 中完美运行,但在我的 Maven 构建期间失败,我似乎找不到任何提示和问题所在。

我创建了一个简单的抽象 WicketPanel

和注塑厂:

然后使用 CDI-Unit 创建了一个单元测试:

我没有包含 TestPanel,但它非常简单(而且或多或少是空的)。

当我在 Eclipse 中执行此操作时,测试以绿色通过!

当我使用 Maven 执行此操作时,我得到以下信息:

我做错了什么的任何线索?

0 投票
2 回答
647 浏览

jboss - 从 JBoss AS 7 降级到 JBoss AS 5 时 Weld Servlet 不工作

我有一个在 jboss7 上运行良好的应用程序,它使用 jee6 api:jax-rs 和 CDI。由于生产限制,我被要求对其进行调整以在 Jboss 5.1.0 上运行。为了让事情变得简单,我创建了一个最小的应用程序,只有一个服务和一个注入。它在 jb7 上运行良好,我不得不添加 jboss5 版本未提供的库。

jax-rs 工作正常,我添加了 RestEasy 并在 web.xml 上声明了 RestEasy servlet。

对于 CDI,我包括 Weld,以在 servlet 模式下工作,因为应用程序没有 servlet。按照文档,我在 web.xml 中包含了侦听器,然后在 jboss 论坛上发现需要另一个侦听器才能将 BeanContext 注册到 jboss jndi。

所以我所拥有的是:

对于我正在使用 Gadle 的构建,但只是为了更好地理解我现在手动插入大部分 jar:

现在三个班:

Tha 应用程序配置只返回服务:

应该注入的bean:

以及服务本身:

所以bean没有被注入,只是这样。在部署期间,日志显示:

焊接文档中有一条注释说:“此外,Weld Servlet 支持 JBoss EAP 5.1,为此使用 Weld Servlet 的 jboss5 变体。” 所以我找到了这个版本,但它没有任何区别(除了 slf4j 的更多问题)。

0 投票
1 回答
1303 浏览

java - 为什么我必须在这个例子中为 Weld 添加一个私有构造函数?

我正在试验焊接。鉴于以下先决条件...

...我想提供两个标准实例,一个用于标准输出流,一个用于标准错误流(JSE 环境):

现在我可以这样使用它:

并从此愉快地使用它。

但是,如果我从PrintStreamPrinter类中删除没有参数的无用私有构造函数,这将失败。我花了一段时间才弄清楚这一点,我不知道为什么。显然,实现永远不会被调用,那么为什么它必须首先存在呢?请注意,我在@Dependent此处使用范围,因此从未创建任何客户端代理。

这是我在删除无用的私有构造函数后从 Weld SE 2.0.1.Final 得到的异常:

更有趣的是:如果存在私有构造函数,焊接日志会告诉我:

删除构造函数时,这些行将丢失。

这是错误还是功能?

0 投票
2 回答
1970 浏览

java - 使用 tomcat 7 容器配置 Weld 2.0 项目时出错

试图在 tomcat7 下部署一个战争项目,我面临以下问题/错误:

(只有weld servlet 1.1.12 final我才能部署项目)

信息: validateJarFile(C:\Java\workspace_plataforma_arq.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\educacao_empreendedora\WEB-INF\lib\jboss-el-api_3.0_spec-1.0.0.Alpha1 .jar) - jar 未加载。请参阅 Servlet 规范 2.3,第 9.7.2 节。违规类:javax/el/Expression.class 2013 年 6 月 11 日下午 4:47:05 org.apache.catalina.loader.WebappClassLoader validateJarFile 信息:validateJarFile(C:\Java\workspace_plataforma_arq.metadata.plugins\org.eclipse.wst .server.core\tmp0\wtpwebapps\educacao_empreendedora\WEB-INF\lib\weld-servlet-2.0.1.Final.jar) - jar 未加载。请参阅 Servlet 规范 2.3,第 9.7.2 节。违规类:javax/el/Expression.class

聚甲醛:

0 投票
2 回答
1010 浏览

jakarta-ee - CDI - 继承:基本类型的触发器生产者

我正在尝试实现某种生产者工厂模式。
在注入派生类型时是否可以以某种方式触发基类型的生产者方法?

假设以下接口:

我想触发这个生产者:

在这个注入点:

目的是通过添加标记接口(在本例中为服务)来为不同类型的服务提供一个生产者工厂。

谢谢你帮助我


更新:

我尝试了 LightGuards 解决方案并添加@Typed到 AService 实现中:

不幸的是,我收到了一个不满意的依赖错误。CDI 不会为注入点调用Service生产者。AService当然,出于类型安全的原因,这是有道理的。但是有没有办法强制调用Service生产者?