title: How to get an EntityManager to be injectible?
body: <p><strong>I have the following code:</strong> </p>
  
  <p><strong>MonsterEJB.java:</strong></p>
  
  <pre><code>package model;
  
  import java.util.List;
  
  import javax.ejb.LocalBean;
  import javax.ejb.Stateless;
  import javax.inject.Inject;
  import javax.inject.Named;
  import javax.persistence.EntityManager;
  import javax.persistence.EntityManagerFactory;
  import javax.persistence.PersistenceContext;
  import javax.persistence.PersistenceUnit;
  import javax.persistence.Query;
  
  @Stateless
  @LocalBean
  @Named
  public class MonsterEJB 
  {
      @PersistenceUnit(unitName="mongo")
      private EntityManager em;
  
      @Inject
      private Monster injectableMonster;
  
      public MonsterEJB() 
      {
  
      }
  
      public void create() 
      {
          em.getTransaction().begin();
          Monster en = new Monster();
          en.setDescription(injectableMonster.getDescription());
          em.persist(en);
          em.getTransaction().commit();
      }
  
      public List&lt;Monster&gt; getList() 
      {
          Query query = em.createQuery("Select m from Monster m");
          List&lt;Monster&gt; Monsters = query.getResultList();
  
          return Monsters;
      }
  
      public void remove()
      {
          em.getTransaction().begin();
          Monster en = em.find(Monster.class, injectableMonster.getId());
          em.remove(en);
          em.getTransaction().commit();
      }
  
      public void update() 
      {
          em.getTransaction().begin();
          Monster en = em.find(Monster.class, injectableMonster.getId());
          en.setDescription(injectableMonster.getDescription());
          em.getTransaction().commit();
      }
  }
  </code></pre>
  
  <p><strong>Monster.java:</strong></p>
  
  <pre><code>package model;
  
  import java.io.Serializable;
  
  import javax.enterprise.context.RequestScoped;
  import javax.inject.Named;
  import javax.persistence.*;
  
  import org.eclipse.persistence.nosql.annotations.*;
  
  @Entity
  @Named
  @RequestScoped
  @NoSql(dataFormat = DataFormatType.MAPPED)
  public class Monster implements Serializable 
  {
      private static final long serialVersionUID = 1L;
  
      @Id
      @GeneratedValue
      @Field(name = "_id")
      private String id;
  
      @Version
      private long version;
  
      @Basic
      private String description;
  
      public Monster() 
      {
  
      }
  
      public String getId() 
      {
          return id;
      }
  
      public void setId(String id) 
      {
          this.id = id;
      }
  
      public String getDescription() 
      {
          return description;
      }
  
      public void setDescription(String description) 
      {
          this.description = description;
      }
  
      @Override
      public String toString() 
      {
          return "Monster [id=" + id + ", version=" + version + ", description="+ description;
      }
  }
  </code></pre>
  
  <p><strong>persistence.xml:</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
  &lt;persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
          version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"&gt;
      &lt;persistence-unit name="mongo" transaction-type="RESOURCE_LOCAL"&gt;
          &lt;class&gt;model.Monster&lt;/class&gt;
          &lt;properties&gt;
              &lt;property name="eclipselink.target-database" value="org.eclipse.persistence.nosql.adapters.mongo.MongoPlatform"/&gt;
              &lt;property name="eclipselink.nosql.connection-spec" value="org.eclipse.persistence.nosql.adapters.mongo.MongoConnectionSpec"/&gt;
              &lt;property name="eclipselink.nosql.property.mongo.port" value="27017"/&gt;
              &lt;property name="eclipselink.nosql.property.mongo.host" value="localhost"/&gt;
              &lt;property name="eclipselink.nosql.property.mongo.db" value="MonsterDatabase"/&gt;
              &lt;property name="eclipselink.logging.level" value="FINEST"/&gt;
          &lt;/properties&gt;
      &lt;/persistence-unit&gt;
  &lt;/persistence&gt;
  </code></pre>
  
  <p><strong>Show.xhtml</strong></p>
  
  <pre><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
  
  &lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"&gt;
  
  &lt;ui:composition template="WEB-INF/templates/BasicTemplate.xhtml"&gt;
  
      &lt;ui:define name="header"&gt;
          &lt;div style="width:100%;font-size:36px;line-height:48px;background-color:navy;color:white"&gt;Showing Monsters&lt;/div&gt;
      &lt;/ui:define&gt;
  
      &lt;ui:define name="content"&gt;
          &lt;h:dataTable var="f2" value="#{MonsterEJB.list}"&gt;
              &lt;h:column&gt;#{f2.id}, #{f2.description}&lt;/h:column&gt;
          &lt;/h:dataTable&gt;
      &lt;/ui:define&gt;
  
  &lt;/ui:composition&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p><strong>Error that webpage displays</strong></p>
  
  <pre><code>type Exception report
  
  message
  
  descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
  
  exception
  
  javax.servlet.ServletException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
  root cause
  
  javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
  root cause
  
  javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
  root cause
  
  javax.ejb.CreateException: Could not create stateless EJB
  root cause
  
  java.lang.IllegalStateException: Exception attempting to inject Env-Prop: model.MonsterEJB/em@Field-Injectable Resource. Class name = model.MonsterEJB Field name=em@java.lang.String@@@ into class model.MonsterEJB
  root cause
  
  com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Env-Prop: model.MonsterEJB/em@Field-Injectable Resource. Class name = model.ElnotEJB Field name=em@java.lang.String@@@ into class model.MonsterEJB
  root cause
  
  java.lang.IllegalArgumentException: Can not set javax.persistence.EntityManager field model.MonsterEJB.em to com.sun.enterprise.container.common.impl.EntityManagerFactoryWrapper
  </code></pre>
  
  <p><strong>Question:</strong>
  How do I get my MonsterEJB.java to inject a EntityManager with NoSQL?</p>