Error desplegando en web logic WELD-001408

Buenas noches compañeros,

Coloco las herramientas con que se elaboró el tema:
eclipse
injection Java EE 7
JBoss, Glassfish (En los dos servidores sale el mismo error)

Tengo un error en el despliegue de una aplicación web, no he podido solucionarlo, he buscado en bastantes foros que mencionan el mismo código del problema, pero ninguna de las soluciones dadas solucionan mi problema. Por favor pueden ayudarme con el tema, lo agradecería mucho ya que estoy aprendiendo de esta tecnología y no soy experto y creo que este tema sería bueno para tener en consulta para toda la comunidad. El error es:

Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private main.java.BookEJB.em at main.java.BookEJB.em(BookEJB.java:0) . Please see server.log for more details.

stacktrace del error JBoss:

11:30:59,018 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.unit."chapter11-1.0.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."chapter11-1.0.war".WeldStartService: Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private main.java.BookEJB.em
at main.java.BookEJB.em(BookEJB.java:0)

at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:359)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)

11:30:59,026 ERROR [org.jboss.as.controller.management-operation] (management task-10) WFLYCTL0013: Operation ("add") failed - address: ([("deployment" => "chapter11-1.0.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"chapter11-1.0.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"chapter11-1.0.war\".WeldStartService: Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private main.java.BookEJB.em
at main.java.BookEJB.em(BookEJB.java:0)
"}}
11:30:59,029 ERROR [org.jboss.as.server] (management task-10) WFLYSRV0021: Deploy of deployment "chapter11-1.0.war" was rolled back with the following failure message:
{"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"chapter11-1.0.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"chapter11-1.0.war\".WeldStartService: Failed to start service
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type EntityManager with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private main.java.BookEJB.em
at main.java.BookEJB.em(BookEJB.java:0)
"}}

A continuación adjunto las clases involucradas.

Clase bookEJB

                        package main.java;
                       
                        import java.util.List;
                       
                        import javax.ejb.Stateless;
                        import javax.inject.Inject;
                        import javax.inject.Named;
                        import javax.persistence.EntityManager;
                       
                        @Named
                        @Stateless
                        public class BookEJB {
                       
                           @Inject
                           private EntityManager em;
                       
                           public Book createBook( Book book ) {
                              em.persist( book );
                              return book;
                           }
                       
                           public List < Book > findAllBooks() {
                              return em.createNamedQuery( "findAllBooks", Book.class ).getResultList();
                           }
                       
                           public Book findBookById( Long id ) {
                              return em.find( Book.class, id );
                           }
                       
                        }
               

Clase Book

                        package main.java;

                        import javax.persistence.Column;
                        import javax.persistence.Entity;
                        import javax.persistence.GeneratedValue;
                        import javax.persistence.Id;
                        import javax.persistence.NamedQuery;
                        import javax.validation.constraints.NotNull;
                        import javax.validation.constraints.Size;
                       
                        @Entity
                        @NamedQuery ( name = "findAllBooks", query = "select b from Book b order by b.title desc" )
                        public class Book {
                           @Id
                           @GeneratedValue
                           private Long id;
                           @NotNull
                           @Size ( min = 4, max = 50 )
                           @Column ( nullable = false )
                           private String title;
                           private Float price;
                           @Column ( length = 2000 )
                           private String description;
                           private Integer nofPage;
                           private Boolean illustration;
                       
                           public Book() {
                           }
                       
                           public Book( String title, Float price, String description, Integer nofPage, Boolean illustration ) {
                              this.title = title;
                              this.price = price;
                              this.description = description;
                              this.nofPage = nofPage;
                              this.illustration = illustration;
                           }
                       
                           public String getTitle() {
                              return title;
                           }
                       
                           public void setTitle( String title ) {
                              this.title = title;
                           }
                       
                           public Long getId() {
                              return id;
                           }
                       
                           public void setId( Long id ) {
                              this.id = id;
                           }
                       
                           public Float getPrice() {
                              return price;
                           }
                       
                           public void setPrice( Float price ) {
                              this.price = price;
                           }
                       
                           public String getDescription() {
                              return description;
                           }
                       
                           public void setDescription( String description ) {
                              this.description = description;
                           }
                       
                           public Integer getNofPage() {
                              return nofPage;
                           }
                       
                           public void setNofPage( Integer nofPage ) {
                              this.nofPage = nofPage;
                           }
                       
                           public Boolean getIllustration() {
                              return illustration;
                           }
                       
                           public void setIllustration( Boolean illustration ) {
                              this.illustration = illustration;
                           }
                       
                           @Override
                           public String toString() {
                              StringBuilder sb = new StringBuilder();
                              sb.append( "Book" );
                              sb.append( "{id=" );
                              sb.append( getId() );
                              sb.append( ", title=" );
                              sb.append( getTitle() );
                              sb.append( ", Price=" );
                              sb.append( getPrice() );
                              sb.append( ", Description=" );
                              sb.append( getDescription() );
                              sb.append( ", Number of page=" );
                              sb.append( getNofPage() );
                              sb.append( ", Illustration" );
                              sb.append( getIllustration() );
                              sb.append( "}" );
                              return sb.toString();
                           }
                       
                        }
                       
                       
               

Clase DBProducer

                                        package main.java;
                                       
                                        import javax.enterprise.inject.Produces;
                                        import javax.persistence.EntityManager;
                                        import javax.persistence.PersistenceContext;
               
                                        public class DBProducer {
                                           @Produces
                                           @PersistenceContext ( unitName = "chapter11" )
                                           private EntityManager em;
                                        }

       

Clase DBPopulator

                        package main.java;

                        import java.util.logging.Logger;
                       
                        import javax.annotation.PostConstruct;
                        import javax.annotation.sql.DataSourceDefinition;
                        import javax.ejb.Singleton;
                        import javax.ejb.Startup;
                        import javax.inject.Inject;
                       
                        /**
                         * @author Antonio Goncalves APress Book - Beginning Java EE 7 with Glassfish 4 <a href="http://www.apress.com/
" title="http://www.apress.com/
">http://www.apress.com/
</a>                     *         <a href="http://www.antoniogoncalves.org" title="http://www.antoniogoncalves.org">http://www.antoniogoncalves.org</a> --
                         */

                        @Singleton
                        @Startup
                        @DataSourceDefinition ( name = "java:global/jdbc/chapter11DS", className = "org.apache.derby.jdbc.EmbeddedDriver", user = "",
                              password = "", databaseName = "chapter11", properties = { "connectionAttributes=;create=true" } )
                        public class DBPopulator {
                       
                           // ======================================
                           // = Attributes =
                           // ======================================
                       
                           @Inject
                           private BookEJB bookEJB;
                       
                           private Logger logger = Logger.getLogger( "org.agoncal.book.javaee7" );
                       
                           // ======================================
                           // = Lifecycle methods =
                           // ======================================
                       
                           @PostConstruct
                           private void createDummyData() {
                       
   }
}

               

Archivos de configuración

bean.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 <a href="http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
" title="http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
">http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
</a>                           version="1.1" bean-discovery-mode="all">
                        </beans>

               

faces-config.xml

                        <?xml version='1.0' encoding='UTF-8'?>
                        <faces-config xmlns="http://xmlsn.jcp.org/xml/ns/javaee"
                                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                        xsi:shemaLocation="http://xmlns.jcp.org/xml/ns/javaee <a href="http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
" title="http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
">http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
</a>                                    version="2.2">
                                <navigation-rule>
                                        <from-view-id>newBook.xhtml</from-view-id>
                                        <navigation-case>
                                                <from-outcome>doCreateBook</from-outcome>
                                                <to-view-id>/viewBook.xhtml</to-view-id>
                                        </navigation-case>
                                </navigation-rule>
                               
                        </faces-config>

               

webapp.xml

                        <?xml version="1.0" encoding="UTF-8"?>
                        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                                xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee <a href="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"" title="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"">http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"</a>
                                id="WebApp_ID" version="3.1">
                          <display-name>chapter11</display-name>
                          <welcome-file-list>
                            <welcome-file>index.html</welcome-file>
                            <welcome-file>index.htm</welcome-file>
                            <welcome-file>index.jsp</welcome-file>
                            <welcome-file>default.html</welcome-file>
                            <welcome-file>default.htm</welcome-file>
                            <welcome-file>default.jsp</welcome-file>
                          </welcome-file-list>
                            <servlet>
                            <servlet-name>Faces Servlet</servlet-name>
                            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
                            <load-on-startup>1</load-on-startup>
                          </servlet>
                            <servlet-mapping>
                                <servlet-name>Faces Servlet</servlet-name>
                                <url-pattern>/faces/*</url-pattern>
                            </servlet-mapping>
                            <servlet-mapping>
                                <servlet-name>Faces Servlet</servlet-name>
                                <url-pattern>*.xhtml</url-pattern>
                            </servlet-mapping>
                         
                        </web-app>
               

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 <a href="http://maven.apache.org/xsd/maven-4.0.0.xsd">
" title="http://maven.apache.org/xsd/maven-4.0.0.xsd">
">http://maven.apache.org/xsd/maven-4.0.0.xsd">
</a>    <modelVersion>4.0.0</modelVersion>
       
        <groupId>main.java</groupId>
        <artifactId>chapter11</artifactId>
        <version>1.0</version>
        <packaging>war</packaging>
       
        <dependencies>
                <dependency>
                <groupId>javax.ejb</groupId>
                <artifactId>javax.ejb-api</artifactId>
                <version>3.2</version>
                </dependency>
                <dependency>
                <groupId>javax.inject</groupId>
                <artifactId>javax.inject</artifactId>
                <version>1</version>
                </dependency>
                <dependency>
                        <groupId>com.sun.faces</groupId>
                        <artifactId>jsf-api</artifactId>
                        <version>2.2.8</version>
                </dependency>
                <dependency>
                        <groupId>com.sun.faces</groupId>
                        <artifactId>jsf-impl</artifactId>
                        <version>2.2.8</version>
                </dependency>
                <dependency>
                        <groupId>javax.servlet</groupId>
                        <artifactId>jstl</artifactId>
                        <version>1.2</version>
                </dependency>
                <dependency>
                        <groupId>javax.servlet</groupId>
                        <artifactId>javax.servlet-api</artifactId>
                        <version>3.1.0</version>
                </dependency>
                <dependency>
                        <groupId>javax.servlet.jsp</groupId>
                        <artifactId>jsp-api</artifactId>
                        <version>2.2.1-b03</version>
                </dependency>
               
                <dependency>
                        <groupId>org.eclipse.persistence</groupId>
                        <artifactId>org.eclipse.persistence.jpa</artifactId>
                        <version>2.5.0</version>
                </dependency>
                <!-- <dependency>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate-validator</artifactId>
                        <version>5.0.0</version>
                </dependency> -->
                <dependency>
                        <groupId>org.apache.derby</groupId>
                        <artifactId>derbyclient</artifactId>
                        <version>10.9.1.0</version>
                </dependency>
               
                <dependency>
                <groupId>javax.enterprise</groupId>
                <artifactId>cdi-api</artifactId>
                <version>1.2</version>
                </dependency>
               
                <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>1.1.0.Final</version>
                </dependency>
               
                <dependency>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.2</version>
                </dependency>
               
        </dependencies>
       
        <build>
                <plugins>
                        <plugin>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <version>2.5.1</version>
                                <configuration>
                                        <source>1.7</source>
                                        <target>1.7</target>
                                </configuration>
                        </plugin>
                        <plugin>
                                <artifactId>maven-war-plugin</artifactId>
                                <version>2.2</version>
                                <configuration>
                                        <failOnMissingWebXml>false</failOnMissingWebXml>
                                </configuration>
                        </plugin>
                </plugins>
        </build>
       
</project>

Como soy nuevo y en afan de cumplir los lineamientos de la publicación del foro si el problema se encuentra mal formulado y falta algo en la formulación del problema, agradecería sus comentarios para retroalimentarme y mejorar mis publicaciones incluyendo esta.

Gracias a todos.