WELD-001408对EJB项目的不满意依赖性

时间:2018-07-13 07:25:53

标签: maven java-ee cdi glassfish-4 weld

我有一个包含三个项目的多模块Maven项目。具有共享数据test-base的第一个ejb项目。第二个ejb项目test-timer应该部署在glassfish 4.x应用服务器上,以运行定期任务(@Scheduel)并依赖于test-base。最后是第三个战争项目test-webapp,它具有简单的Web应用程序,该项目也依赖于test-base,并且还将被单独部署到glassfish 4.x应用服务器上。 test-base项目中有一个CDI bean。该对象包含beans.xml。

test-webapp的作用就像是一个吊饰。但是,如果我尝试部署test-timer,则会遇到部署异常。

  

org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [MyCdiBean] with qualifiers [@Default] at injection point [[BackedAnnotatedField] @Inject private org.test.MyTimer.bean]

搜索网络(即herehere)后,我认为这与beans.xml有关。 test-base包含一个beans.xml并且webapp运行正常。与test-timer一样,我是否拥有beans.xml也没有关系。

beans.xml由netbeans ide生成,如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>

我还试图同时更改bean-discovery-mode="all"test-base中的test-timer,但没有任何改变。

这是我的项目结构。

test-parent
|--test-base
   |--src
      |--main
         |--java
            |--org/test/MyCdiBean.java
         |--resources
            |--META-INF
               |--beans.xml
      |--test
   |--pom.xml
|--test-timer
   |--src
      |--main
         |--java
            |--org/test/MyTimer.java
         |--resources
            |--META-INF
               |--beans.xml
      |--test
   |--pom.xml
|--test-webapp
   |--src
      |--main
         |--java
            |--org/test/WebAppBean.java
         |--resources
            |--META-INF
               |--beans.xml
         |--webapp
            |--WEB-INF
               |--web.xml
            |--index.xhtml
      |--test
   |--pom.xml
|--pom.xml

任何关于我在做什么错的提示都值得赞赏。

如有必要,我可以附加来源。

EDIT (其他信息),如评论所要求。

现在是新的beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
   bean-discovery-mode="annotated">
</beans>

仍然无法正常工作。

我正在使用WELD版本WELD-000900 2.0.0 (SP1),并且还使用WELD-000900: 2.2.13 (Final)

对其进行了测试

test-base中的MyCdiBean.java

@javax.inject.Named 
@javax.enterprise.context.RequestScoped 
//@javax.enterprise.context.Dependent /* also tried with  */
public class MyCdiBean {
    public void doSomething() {
        System.out.println("Hello World!");
    }
}

0 个答案:

没有答案