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

dependency-injection - 使用 @Inject 将无状态 EJB 注入 CDI Weld ManagedBean(jboss 6 AS 上的 JSF 1.2 EJB 应用程序)

目前我正在尝试将无状态 EJB 注入到 Jboss 6 AS Final 上的 CDI 托管控制器中。控制器在可从 JSF 页面访问的上下文中进行管理。如果我用它注入无状态bean,@EJB它就可以工作。如果我注入无状态 EJB,@Inject我会得到以下异常:

我的控制器:

我的无状态bean:

Bean 的接口使用@Local 进行注解。

如果我尝试调用 myTestManager 我得到以下异常:

WELD-000079 在 JNDI 中找不到 EJB:类 de.crud.org$jboss$weld$bean-jboss$classloader:id="vfs:$$$usr$local$jboss$server$default$deploy$test$耳朵"-SessionBean-TestManagerBean_$$_WeldProxy

多谢。

0 投票
1 回答
5241 浏览

java - JSF 2 动态菜单处理的最佳实践?

我正在寻找使用 JSF 和 CDI 处理简单菜单的最佳实践。

我想要一个带有动态条目的顶级菜单。类似于(来自主模板):

NavigationBean(Sessionscoped,并持有一个 NavigationItems 列表)和 NavigationItem 只是 bean。然后打开另一个视图,我将当前视图 ID 设置为在 navigatiobean 中选择:

问题是,为时已晚。该页面已呈现,并且未选择任何视图 ID。

这种方法一点都不好吗?有没有最佳实践?搜索 JSF 菜单和 JSF 导航会导致其他问题,所以我找不到任何东西。

提前致谢!

0 投票
2 回答
2660 浏览

glassfish - 在 Glassfish 上使用 CDI 部署时出错

我在 Glassfish 上玩了 CDI,但没有走得太远。一旦我在 /WebContent/META-INF 中放入一个 empyt beans.xml,我就会收到以下错误:

无法为模块部署 CDI_Example 部署错误:CDI_Example:加载应用程序时出现异常:org.glassfish.deployment.common.DeploymentException:WELD-001201 加载 beans.xml URL 时出错:null

Weld 文档说该文件可能是空的,但看起来 Glassfish v3 需要文件中的任何内容。

有人有想法吗?

谢谢

0 投票
1 回答
12638 浏览

jakarta-ee - 什么是焊接,JSR-299?

我发现很多教程展示了 Weld 代码示例,但不是介绍性概述。

您能否推荐一篇介绍性文章,或回答以下问题:

  • Weld 能为您做什么/给您什么?
  • 它与 Java EE 6 有什么关系?
  • 如何在 Java EE 6 项目中使用它?
  • 如果在 Java EE 6 项目中使用它,它会取代什么(如果有的话)?
0 投票
1 回答
1886 浏览

java - 结束对话范围的 bean,然后在单击命令按钮时重定向

我有一个简单的命令按钮

它调用以下简单的动作侦听器

所以基本上我想要一个按钮,点击后会结束对话,然后重定向到新页面......

这工作一次,然后每次在我的日志中看到以下内容后..(从用户的角度来看,一切正常..单击按钮时,重定向正常工作)

严重:java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) 处 java.util.HashMap$EntryIterator.next(HashMap.java:834) 处 java.util.HashMap$EntryIterator 处的 java.util.ConcurrentModificationException。 next(HashMap.java:832) at org.jboss.weld.context.AbstractConversationContext.deactivate(AbstractConversationContext.java:250) at org.jboss.weld.jsf.WeldPhaseListener.deactivateConversations(WeldPhaseListener.java:131) at org.jboss .weld.jsf.WeldPhaseListener.afterPhase(WeldPhaseListener.java:96) 在 com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:189) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java :107) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) 在 org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:215) 在 net.balusc.http.multipart.MultipartFilter.doFilter(MultipartFilter.java:78) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) 在 org. apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:215) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve. java:175) 在 org.apache.catalina.core.StandardPipeline。doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun .enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java :326) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) 在 com.sun 的 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227)。 grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) 在 com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:第719章) (DefaultProtocolChain.java:137) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http。 HttpProtocolChain.execute(HttpProtocolChain.java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly .ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util。AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662)

严重:WebModule [] PWC1322:在 ServletRequestListener org.jboss.weld.servlet.WeldListener java.lang.IllegalStateException 上调用 requestDestroyed 方法时出错:上下文在 org.jboss.weld.context.AbstractConversationContext.deactivate(AbstractConversationContext.java:263 ) 在 org.apache.catalina.core.StandardContext.fireRequestDestroyedEvent(StandardContext.java:4588) 在 org.apache.catalina.core.StandardHostValve 的 org.jboss.weld.servlet.WeldListener.requestDestroyed(WeldListener.java:125)。 postInvoke(StandardHostValve.java:243) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:328) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) at com.sun .enterprise.v3.services.impl.ContainerMapper。com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) com.sun 的服务(ContainerMapper.java:170) .grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) 在 com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 在 com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137 ) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 在 com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 在 com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain. java:79) 在 com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 在 com。sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 在 com.sun.grizzly.ContextTask.run(ContextTask.java:71) 在 com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:第532章)

0 投票
1 回答
1917 浏览

dependency-injection - JAVA EE 代理模式

我一直在读到,当您要求将依赖项注入到 bean 中时,您会被注入到该资源实例的代理。我相信我知道代理是什么,它是一个知道如何将消息转发到另一个实例的实例。它还指出,正是这种模式允许容器为这个托管 bean 提供服务。

我不太明白这一点。为什么需要代理?这是如何实现的?每个bean都有一个代理对象吗?还是我有很多代理转发到一个实例?或者两者都不是?

此外,从 GoF 的书籍设计模式中,我读到您必须提供一个充当占位符的代理类。但是我在 Java EE 中从来没有这样做过,应用程序服务器会在运行时创建代理类吗?

0 投票
1 回答
5601 浏览

jsf - CDI ConversationScoped 长时间运行的 Bean 不工作

我在理解 Weld 或 CDI 的对话范围时遇到了一些问题。

在我的 JSF Faclets 页面中,我调用:

豆子:

现在每次我刷新浏览器时,都会开始一个新的对话。这是正确的行为吗?那么为什么谈话总是短暂的呢?不会抛出异常。beans.xml 已创建且为空:

0 投票
1 回答
4507 浏览

java - 将@Named 托管bean 注入另一个重用JSF 页面?

我试图通过在另一个 jsf 页面中包含使用 facelets 来重用 jsf 页面,因为该页面将被许多其他页面使用。但问题是我无法将可用于此页面的托管 bean 的属性获取到包含此页面的托管 bean 中。

该页面,pessoa.xhtml,一些重复和标题代码已被删除:

@Named 托管 PessoaMB

这是包含 pessoa.xhtml 的页面之一的代码。企业版.xhtml

和 @Named 托管 bean EmpresaMB。

@Named @SessionScoped 公共类 EmpresaMB 实现 Serializable {

我认为@Inject 注释可以完成这项工作,但事实并非如此。

0 投票
3 回答
3101 浏览

cdi - CDI/Weld:书籍或资源推荐

您可以推荐一本现有的或即将出版的关于 CDI/Weld 的书吗?

我正在寻找与Seam in Action在范围和质量上相似的东西,这对 Seam 来说是一个很好的参考,但现在似乎有点过时了。

0 投票
4 回答
5859 浏览

java - 依赖注入 EJB 3 - 太多选择?

我们正在启动一个基于 EJB 3.0 的新项目。我有一个基于“spring”的背景(并且喜欢它),所以对我来说,松散耦合和可测试性是必不可少的。这篇文章不应该是关于“ejb vs. spring”的。如果您已经有这方面的实际项目经验,那将是完美的。

这是一些示例代码来演示该问题:

客户端 -> ejb -> 合作者 1 -> 合作者 .. -> 合作者 n

我想知道在 ejb 3.0 中为所有协作者及其协作者实现依赖注入的最佳方法是什么?从这个意义上讲,合作者可以是非常小的专门班级。

到目前为止,我们已经讨论了以下选项,并且总是没有正确的结论:)

  1. 仅将 ejb 标准与无状态会话 bean 的所有内容和所有后果(如池、资源处理等)一起使用

  2. 使用无状态会话 bean 作为“业务组件”(入口点)并从那里开始

a) spring 有线依赖(通过“jboss snowdrop”集成)

b) CDI 有线依赖(通过 WELD 用于 ejb 3.0 和 jboss eap 5.1)

我不需要知道如何在单元测试中使用 bean。我所追求的答案是连接正在运行的应用程序服务器内的所有依赖项的最佳方法是什么(spring vs. guice vs. CDI vs. EJB)。我只需要知道从外部 EJB(“业务入口点”)向下的图表。所以外面的一切(servlet、前端等)都不是这个问题的范围:)

请假设为项目设置了 EJB 3.0 和 jboss eap 5.1 :)

期待您的回答,并希望获得一些基于项目的知识。