1

I have an multi-module maven project with three projects. First ejb project with shared data test-base. A second ejb project test-timer which should be deployed on a glassfish 4.x application server to run periodic tasks (@Scheduel) and depend on test-base. And finally a third war project test-webapp with simple webapp which also depend on test-base and is also going to be separately deployed to glassfish 4.x application server. In the test-base project is a CDI bean. The poject contains beans.xml.

test-webapp works like a charm. But if I try to deploy test-timer I get a deployment exception.

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]

After searching the net (i. e. here or here), I thought it has something to do with the beans.xml. test-base contains a beans.xml and webapp is running just fine. As with test-timer it makes no difference whether I have a beans.xml or not.

beans.xml is generated by netbeans ide and looks like the following.

<?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>

I also tried to change the bean-discovery-mode="all" both in test-base and test-timer but nothing changed.

Here is my project structure.

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

Any hints on what I am doing wrong are appreciated.

I can attach source if necessary.

EDIT Additional information as requested in comment.

New beans.xml is now.

<?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>

Still does not work.

I am using WELD Version WELD-000900 2.0.0 (SP1) and also tested it with WELD-000900: 2.2.13 (Final)

MyCdiBean.java in test-base

@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!");
    }
}
Filou
  • 490
  • 4
  • 17
  • By the way, on the `beans.xml`, the new javaee namespace id `xmlns="http://xmlns.jcp.org/xml/ns/javaee"` Can you also tell us what is the CDI/Weld version you are using? The code for the bean annotation may also be helpful – maress Jul 13 '18 at 07:48
  • @maress Thanks for quick response. I have enhanced the question with additional information. – Filou Jul 13 '18 at 08:29
  • Somehow, weld is not scanning your `test-base` for beans, which is weird.. – maress Jul 13 '18 at 10:04

0 Answers0