问题标签 [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 回答
2105 浏览

jsf-2 - 会话通过 web.xml 过期后将用户重定向到错误页面 (xhtml)

我的环境是:NetBeans7.2.1、GlassFish3.1、JSF2 和 Weld 1.1.0。

当会话时间到期时,我想重定向到 error.xhtml 页面。在 web.xml 中,我添加了以下代码:

但后来我得到这个异常错误:

当我使用名为 ErrorHandler 的 Servlet 侦听器在 web.xml 中使用此代码捕获此异常时:

它工作正常,我从那里重定向到 error.xhtml。

我需要该位置直接通过 web.xml 工作(而不是通过 servlet)。

我尝试将xhtml页面更改为html,它仍然无法正常工作,但异常不同:

我还尝试将位置的根更改为/faces/error.xhtml,但它仍然不起作用。

可能是什么问题呢?如何从 web.xml 重定向到页面?

提前致谢。

0 投票
3 回答
2860 浏览

unit-testing - 使用 CDI-Unit Jglue 对 CDI 进行单元测试

我们想使用 Jglue 框架对我们的 CDI 应用程序进行单元测试。我们使用 gradle 进行构建。

我们准备了这样的东西:

1) 测试类:

2)接口:

3)Gradle设置(我们跟着入门http://jglue.org/cdi-unit/

4) 测试类:

当我们运行这个简单的测试时,我们总是会得到这个异常:

在 /build/reports/tests/index.html 中有:

请问有人知道如何避免这个例外吗?如果需要,我可以添加更多细节。

0 投票
1 回答
5945 浏览

jsf - Apache Tomcat 7.0.47 上的 BeanManager 无法创建资源实例

运行于:Apache Tomcat 7.0.47 OmniFaces 1.6.3 JSF Mojarra 2.1.26 CDI Weld 2.1.0.Final

RuntimeException通过访问 JNDI“java:comp/BeanManager”,可以在 Apache Tomcat 7.0.47 上找到一个。CDI BenManager 绑定到java:comp/env/BeanManager您的 BeanManager 类中未达到的“”vut。

堆栈跟踪:添加

面孔配置:

网页.xml:

在 META-INF 下添加了 context.xml:

0 投票
2 回答
7587 浏览

jakarta-ee - 将@SessionScoped CDI Bean 注入@Stateless EJB

我想将 sessionscoped CDI bean 注入到无状态 EJB 中。在访问 EJB 时,应该使用会话范围的 cdi bean 的正确实例(即调用者的会话范围中的那个)。我知道我可以用有状态的 EJB 解决这个问题,但是我真的很想知道这是否也可以用 CDI 解决。由于 EJB 和 Servlet 在同一场战争中运行,我假设它们共享相同的线程并且容器应该能够在 EJB 中找出正确的 sessionscoped bean?

例如:

EJB:

CDI 豆:

当我现在从一个servlet 访问无状态EJB 时,我希望testMethod 使用与调用者的HTTPSession 相关联的CDI bean。因此,如果来自不同浏览器/http 会话的两个客户端访问 Servlet,它们都应该得到不同的结果字符串。

我是否需要 CDIProvider而不是,Instance如果是,我如何为给定会话生成正确的 bean 实例?我考虑过获取 BeanManager 并搜索 SessionData 的实例,但我不知道如何获得正确的实例。

非常感谢任何帮助,谢谢!

0 投票
3 回答
4108 浏览

java - 为什么 Weld 在 Tomcat 上说“不支持注入侦听器”?

我有一个使用 Resteasy(又使用 Weld)的 Web 项目,并部署到 Tomcat 7.0.22(我将特定版本放在这里,以防此版本特有的问题)。

我有一个看起来像这样的 ServletContextListener:

部署到 Tomcat 后,healthCheck is null被记录了,我还注意到日志中的这一行:

问题1:为什么CDI注入在Listeners中不可用?

我查看了这个答案,它说Load on startup via @Startup. There is currently no equivalent to this in CDI.

问题 2:问题 1 中描述的问题是由此造成的吗?

问题 3:我正在使用org.jboss.weld.servlet:weld-servlet:1.2.0.Beta1. 以后的版本中是否有关于启动支持的更新?

相关问题我 在 Weld 中查看了启动课程

0 投票
1 回答
655 浏览

java - 如何限制 CDI 认为是托管 bean?

我从使用 spring 多年并且刚刚开始研究 JEE7 和 CDI 来解决这个问题。

在 Spring 世界中,您必须坚持@Component使用 bean 才能变成 spring bean,spring 将注入依赖项,但在 CDI 中似乎没有@Component.

对我来说,CDI 似乎意味着我的 Web 应用程序中的每个类都将被视为一个 CDI bean,这似乎是不可取的,因为我有很多没有使用注入的 java 类,我不希望有人只坚持@Inject这些类并拥有 CDI发挥它的魔力。

两个问题:

  • 如何在 jar 文件中限制 CDI 认为是托管 bean 的内容?
  • CDI 将每个 bean 都视为托管 bean 有什么好处?
0 投票
3 回答
15431 浏览

java - CDI 部署失败:WELD-001414 Bean 名称不明确

我有一个应用程序,它有多个模块和各种依赖项。当我在 Glassfish 4 上部署应用程序时,出现错误:

可能是什么原因?我已经看到了有关此的主题,解决方案是编辑注释,但这不是我的EJB,只是一个依赖项。我怎样才能避免这个异常?

我正在使用带有 JDK 1.7 和 Glassfish 4.0 的 Java EE 6。

0 投票
1 回答
392 浏览

cdi - CDI 扩展,改变处理类型

在 Arquillian 的测试中使用 Weld 1.1.13.Final....

假设我向一个领域注入了一些不稳定的东西。我希望拥有注入点的 bean 接收更改事件,例如可能发生更改的属性。考虑创建 CDI 扩展。

捕获 ProcessAnnotatedType 事件并查找在字段注入点上具有自定义注释的所有字段:

此后甚至抓住了字段的所有注入点,并将底层的 WeldField 替换为与“包装器”类型相对应的新字段。否则 bean 验证失败。

但这仅适用于启动期间的东西设置,而不是例如 Arquillian 使用 Bean Manager 来初始化一个注入我的“包装”之一的类。事情失败了,因为 Bean Resolver 使用 Type 作为哈希键来查找 bean。

基本上,我认为我不能用额外的方法“屏蔽”由 CDI 注释(制成 bean)的类来接收自定义事件。本来会很酷,但类型是类型(即不知道如何代理或伪造 equals/hashCode)。

0 投票
1 回答
862 浏览

java - 使用 CDI/Weld JAX-RS/RESTEasy 找不到资源

我尝试在 Java SE 环境中的 Netty 上设置 CDI/Weld 和 JAX-RS/RESTEasy,但我得到的只是以下异常:

我的项目具有以下依赖项:

我在 src/main/resources/META-INF 目录中放置了一个 beans.xml 文件来启用 CDI。

启动netty的代码:

示例资源如下所示:

由于所有这些都不起作用,我添加了一个应用程序类:

但是错误信息仍然是一样的。

什么不见​​了?如何设置 Weld 和 RESTEasy?

0 投票
0 回答
2115 浏览

java - JBoss 和 Weld 未在 Eclipse 中导入

我正在研究一本 Java EE7 入门书籍中的示例,第一个示例要求我在一个简单的 Maven 项目中使用 Weld。我已将所有文件复制到 Eclipse (Kepler) 中的 Maven 项目中。但是 Main.java 应用程序有一个不起作用的 import 语句:import org.jboss.weld.environment.se.WeldEclipse 用以下消息对其进行红色标记:“无法解析导入 org.jboss。” 我去了 Eclipse Marketplace 并下载了最新的 JBoss 包,我认为它应该包含 Weld,但我仍然收到错误消息。

我右键单击该行并选择“修复项目设置”,并且能够选择一个修复来帮助一些其他弹出的错误。但它对这个特定问题所做的只是将消息扩展为“无法解决导入 org.jboss.weld.environment”。当我再次尝试运行修复项目设置时,它没有提供解决方案。

我已经在构建路径工具中进行了挖掘,但我似乎无法弄清楚如何使这个导入工作。