【发布时间】:2014-01-21 09:08:25
【问题描述】:
我有几个 CDI bean 控制器,我想在我的桌面 Web 应用程序和移动 Web 应用程序(这里称为 Web 组件)中重用它们。
场景:
我有一个 Java EE 应用程序 (EAR)
- 我有一个 web.war 组件(指桌面 Web 应用程序)
- 我有一个 mobile.war 组件(指移动 Web 应用程序)
我不想在主 Web 应用程序上使用响应式设计,因为它的设计方式,所以我只需要开发一个移动版本,以便在不同的子域访问
m.mydomain.com
我的意图是创建 reusable-component.jar 以包含所有 CDI 控制器,然后将此 JAR 包含到 Web 组件中。
但是,这会失败 Jboss weld 检测到 bean 的同名 weld error 00414
但是,我已经在这个 CDI bean 上定义了一些通用的请求处理生命周期,例如
@OnRequest()
@Named
@RequestScope
public class MyBeanController{
}
@OnRequest 是我定义的生命周期回调,它做了很多事情,包括对在配置文件中外部定义的某些资源的权限。
我的想法。
删除reusable-component.jar中的@Named和范围注解,然后在不同的web组件上分别扩展。
问题,我有几个 cdi bean,相当多,因为这是一个巨大的应用程序,并且在 web 组件中扩展它们中的每一个都需要大量的重构。
我的问题:
如何在这个 web 组件中重用这个 CDI bean?
仅供参考:我已经查看了替代/刻板印象,专业化场景,这仍然需要我扩展所有 bean,并且我的 @OnRequest 注释生命周期处理使用 @Named 或 bean 名称进行 bean 查找(如 cdi 中指定的那样),所以如果我要使用专业化或替代方法,此查找将受到什么影响?
【问题讨论】:
-
EAR 中基于 CDI 的共享库,带有多个 WAR = 恐怖。相关博客:balusc.blogspot.nl/2013/10/…
-
@BalusC 那么,在这种情况下,您会建议什么选项?在不同的 Web 组件中实施不同的替代方案会起作用吗?
标签: java jsf jboss7.x java-ee-6 cdi