title: Difference between running EJB from WAR vs. separate EJB container
body: <p>Are there any differences in capabilities of the EJB when defining / running it from a WAR vs. an EJB container? What are the benefits vs. drawbacks of deciding on one approach vs. other.</p>
  
  <p>What capabilities do we lose when accessing it from a WAR?</p>
  
  <p>In our case, the developers want to use the EJB for creating / accessing REST webservice.</p>
  
  <p>One of our architects has mentioned below.  And for this reason he wants to have a separate EJB that would be added ( the jar ) to EAR but also to WAR for using it as REST endpoint. i would prefer not to have it in multiple places</p>
  
  <pre><code>I’d prefer our approach to put transaction/service based code in EJBs to 
  leverage Container Managed Transactions, JPA, MDB and all the good stuff EJBs 
  have to offer.
  </code></pre>
  
  <p>From the documentation I have read on using EJB as a REST service implementation, it says</p>
  
  <pre><code>Add the EJB class to the WEB-INF/classes directory of your WAR file or to a 
  JAR that is located in your WEB-INF/lib directory. When a client makes a request 
  to a JAX-RS annotated enterprise bean, the JAX-RS runtime environment looks up 
  and uses an EJB instance of the class to invoke the resource method.
  </code></pre>
  
  <p>So, I want to know, if we put the EJB in the WAR - as in creating the source in the WAR's source so that the class will be added to WEB-INF/classes when the WAR is built, instead of having to put the same ejb jar in two different places based on what it is used for - as a REST webservice endpoint vs. other capabilities, will it satisfy all the requirements or I will have to put the jar in two places?</p>
  
  <p>I am using Websphere 8.5 with EJB 3.1, if that makes a difference in the answer.</p>