When creating an enterprise Java EE application, part of the business logic like messaging (MDBs) has to be put inside the EJB module. However, there are some EJBs which can be placed inside either the EJB module or the web module. I know that separating modules allows the web tier and the business tier to be deployed in different machines. Thus, I would place my `@Stateful` shopping cart EJB in the web module. However, I cannot think of a standard criteria which can be applied to every piece of business logic, deciding where to put the EJBs enclosing them. Is there a guideline, standard or recommended practice for this?