问题标签 [cdi]

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 回答
44731 浏览

java - CDI 和 EJB 如何比较?相互影响?

我很难理解两者如何相互作用以及它们之间的界限在哪里。它们重叠吗?他们之间有冗余吗?

我知道两者都有相关的注释,但我无法找到两者的完整列表以及简要说明。不确定这是否有助于弄清楚它们的不同之处或重叠之处。

真的只是一头雾水。我(认为我)对 EJB 的理解相当不错,我想我很难准确理解 CDI 带来了什么以及它如何取代或增强 EJB 已经提供的功能。

0 投票
1 回答
658 浏览

jsf-2 - 使用 f:event 将 ConversationScoped bean 注入 ViewScoped bean

我无法将 ConversationScoped bean 注入 ViewScoped bean,因为 ConversationScoped bean 的寿命可能比 ViewScoped 的寿命短,反之亦然,具体取决于 ConversationScoped bean 是否寿命长。

为了克服这个限制,我尝试使用 f:event 作为 preRenderView 侦听器执行注入:

这不起作用,侦听器 initializeTask 和 getter getWorkPackage 都没有被调用。

我意识到我可以使用 FacesContext 从另一个托管 bean 中查找一个托管 bean,但我很好奇为什么这不起作用。是因为当我从另一个视图导航到一个视图时没有调用 f:event 侦听器吗?IE。没有重定向或直接页面查看?

我还尝试了 Seam 3 Faces 中的 s:viewAction 标签,但无济于事。它也不会被调用。

提前致谢。

0 投票
1 回答
565 浏览

glassfish - Glassfish 3.1 多模块布局的 CDI 问题

我不确定这是 Weld 或 Glassfish 中的错误,还是我做错了什么。

我有三个罐子:api、impl 和 base。这些 jar 包被打包到部署到 Glassfish 3.1 (b37) 的 war 中。结果是一个错误,指出在 impl 中的 pojo 中不满足注入点。注入失败的 pojo 在基础 jar 中。奇怪的是,我可以在我的战争中毫不费力地将同样失败的 pojo 注入到支持 bean,而且我也可以使用老式的 new 关键字手动实例化注入依赖项。

有什么想法吗?我也有基于 Maven 的测试项目,如果有人有兴趣看到它,它会复制它。

每个 jar 在 META-INF 中都有 beans.xml - 甚至战争也有 beans.xml。

  • 维尔
0 投票
2 回答
1812 浏览

gwt - 将 GWT 与 CDI 集成(缝/焊)

将 CDI 与 GWT 集成的最佳方式是什么?特别是,我想知道如何使依赖注入为我的 RemoteServiceServlet 扩展工作。显然 CDI 不适用于从 javax.servlet.Servlet 派生的类。如果有替代方案,我很乐意放弃 RemoteServiceServlet。

我真的不需要 GWT 客户端上的 DI,但如果它刚刚工作,我会很乐意使用它。

0 投票
2 回答
1147 浏览

glassfish - Glassfish + CDI 导致 IncompatibleClassChangeError

第一次在 CDI 尝试我的手。我正在使用 Glassfish v3。当我部署我的应用程序时,出现以下故障:

java.io.IOException:com.sun.enterprise.admin.cli.remote.RemoteFailureException:加载应用程序时出现异常:org.glassfish.deployment.common.DeploymentException:java.lang.IncompatibleClassChangeError:com.example.arizona.client。 ArizonaService 和 com.example.arizona.client.ArizonaService$App 在 InnerClasses 属性上存在分歧

在 com.fuhrer.idea.glassfish.server.GlassfishServer3.doParseResponse(GlassfishServer3.java:28) 在 com.fuhrer.idea.glassfish.server.GlassfishServer3Base.parseResponse(GlassfishServer3Base.java:156) 在 com.fuhrer.idea.glassfish .server.GlassfishServer3Base.invoke(GlassfishServer3Base.java:127) 在 com.fuhrer.idea.glassfish.server.GlassfishServer3Base.handleDeployment(GlassfishServer3Base.java:78) 在 com.fuhrer.idea.javaee.server.JavaeeServerInstance$2.run( JavaeeServerInstance.java:131)

我应该提一下,我什至还没有真正使用注入或任何其他 CDI 功能。这只是试图理顺依赖关系。

0 投票
3 回答
4652 浏览

dependency-injection - 我可以在石英调度程序作业中使用 CDI 注入吗?

我正在使用 Glassfish 和 CDI 进行注射,(大部分)成功。我似乎无法让 Quartz 工作与注入注释的 bean 一起工作,@Inject从未被注入。

Quartz 是否使用了某种不同的类加载器来阻止注入的发生?

我在 web.xml 中像这样配置 Quartz:

我的quartz.properties 看起来像:

0 投票
1 回答
1191 浏览

java - CDI/焊接与 JEE5 和 Tomcat6

我正在开发一个 Java EE 5 的 Web 应用程序。我可能会在某个时候将其升级到 EE 6,但目前还不能。Web 应用程序在 Tomcat 6 中运行。我可以使用 CDI 吗?

我注意到在Weld 文档中有一条说明我不能使用会话 bean:

There is a major limitation to using a servlet container. Weld doesn't support deploying session beans, injection using @EJB or @PersistenceContext, or using transactional events in servlet containers. For enterprise features such as these, you should really be looking at a Java EE application server.

这是否意味着我不能使用@SessionScoped注释?如果是这样,那将是目前使用 CDI 的障碍。

有什么想法吗?谢谢。

0 投票
2 回答
2956 浏览

java - 如何在 Servlet 中注入 ConversationScoped bean

我需要将一个ConversationScopedbean注入一个servlet。我使用标准的简单@Inject标记,并使用 cid 参数调用 servlet,但是当它调用注入 bean 中的任何方法时,我收到以下错误:

org.jboss.weld.context.ContextNotActiveException:WELD-001303范围类型没有活动上下文javax.enterprise.context.ConversationScoped

我可以在 servlet 中注入这些 bean,还是只能注入 Session 和 Request 范围的 bean?

0 投票
3 回答
8496 浏览

java - Weld/CDI 的最佳调试技巧是什么?

Java EE 6 的优点之一是新的依赖注入框架 - 带有 Weld 参考实现的 CDI - 这促使我们开始以与实现无关的方式在内部迁移到 JSR-330,其明确目标是能够拥有一个被冻结的核心 jar,然后能够添加额外的 jar,提供新模块替换核心 jar 中的功能。

我现在正在与 Weld 一起完成上述工作,坦率地说,幕后的魔法实在是太多了。它要么起作用,要么不起作用,并且默认情况下它不会对发生的事情提供太多帮助,因此您可以调查错误并修复它。

我希望有一些开关可以轻松启用以下功能:

  • 扫描了哪些类路径条目以及在哪里扫描?结果如何?
  • 哪些 bean 可用于哪个类的注入?
  • 是什么导致给定的 bean 以后不考虑?给定的罐子?

换句话说,我需要更详细地了解决策过程。出于某种原因,这不是 Guice 所需要的,也许是因为魔法少得多,也许是因为错误消息非常好。

您如何调试 Weld 应用程序,它有多大帮助?

0 投票
7 回答
7734 浏览

scope - 在 CDI Weld 中查看范围

我想@ViewScoped在我的应用程序中使用 - 范围作为某些网页的支持 bean。我还使用 CDI 将依赖项注入支持 bean。

但是,当我使用像这样注释的支持 bean

@Inject注释不会注入任何东西,NullPointerException一旦我访问依赖项,我就会得到一个。

然而,当我用

注入工作正常,但现在@ViewScoped被忽略,因为它不是 CDI / Weld 的一部分。

如何@ViewScoped与 CDI Weld 一起使用?