0

我有三个 Maven 项目:

  • 核心(packagetype=JAR) 与src/main/resources/beans.xml bean-discovery-mode="annotated"
  • 带有src/main/resources/beans.xml bean-discovery-mode="annotated" 的webfragment (packagetype=JAR)
  • 带有src/main/webapp/WEB-INF/beans.xml bean-discovery-mode="annotated" 的webproject (packagetype=WAR)

我的类路径中有 org.jboss.weld.servlet:weld-servlet 2.2.9.Final (CDI 1.2) 并使用 tomcat 7.0.55。此外,我使用 Servlet 3、Deltaspike 1.2.1、Mojarra 2.2.10。

我所有的 CDI bean 都有一个bean 定义注释(请参阅在 CDI 1.1 中注释的 bean 发现模式的含义

焊接警告我

servletWeldServlet [WARN] WELD-ENV-001004:同时找到 WEB-INF/beans.xml 和 WEB-INF/classes/META-INF/beans.xml。同时使用这两个位置并不便于携带。Weld 将使用 jndi:/localhost/webproject/WEB-INF/beans.xml。

一切正常。

所以,我删除了所有 beans.xml,因为我不应该在 CDI 1.2 中需要它们,但之后就没有任何效果了:WELD-001408: Unsatisfied dependencies...

我错过了什么?这是一个网络片段问题吗?

4

1 回答 1

0

注入点 [BackedAnnotatedMethod] 或类似的不满足的依赖关系

显示解析失败的注入点,检查注入字段的类型是否已注释。

那是:

@Inject
private SomeService injectedService;

然后CDI1.2 规定如果没有定义beans.xml,它只会扫描带注释的bean。

因此

@SessionScoped or 
{@ApplicationScoped, @Dependent, @RequestScoped, @ConversationScoped}
public class SomeService{}
于 2015-04-01T13:25:56.807 回答