title: @Stateless vs @RequestScoped
body: <p>I am learning to use JAX-RS for some restful api development and have an issue regarding my resource classes. </p>
  
  <p>My understanding is that my resource class should be RequestScoped, however,
  when it is RequestScoped my call to the entity manager's persist method it throws a TransactionRequiredException. </p>
  
  <p>If I change my resource class to be Stateless then everything is fine and the entity manager can persist without any issue. </p>
  
  <p>I am still new to JavaEE and would like to know why this happens and what the @Stateless annotation does that allows the persistence context to inject correctly.
  I would also like to know if there is any problem with JAX-RS resource classes being stateless instead of RequestScoped as most of the tutorials I've seen have them.</p>
  
  <p>I have included some example code below to illustrate.</p>
  
  <pre><code>@Path("Things")
  //@Stateless //works just fine when em.persist() is called
  @RequestScoped //throws transactionrequiredexception when em.persist() is called
  public class ThingsResource{
  
      @PersistenceContext(unitName = "persistenceUnitName")
      EntityManager em;
  
  
      public ThingsResource() { }
  
      @POST
      @Produces(MediaType.APPLICATION_JSON)
      public Response postThing(ThingDTO thing){
  
          ThingEntity newThing = new ThingEntity(thing);
          em.persist(newThing);
          em.flush();
  
          return Response.created(new URI("/" + newThing.getId()).build();
  
      }
  }
  </code></pre>