<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    Thread-safety when injecting JPA EntityManager

    Injecting EJB 3 stateful beans into servlet instance fields is not thread-safe. Along the same line, injecting EntityManager with @PersistenceContext into servlet instance variables is not thread-safe, either. EntityManager is just not designed to be thread-safe.

    For example, the following code snippet of a servlet class is incorrect:

    1
    2
    3
    4
    5
    6
    7
    public class EMTestServlet extends HttpServlet {
      //This field injection is not thread-safe.
      //FIXME
      @PersistenceContext
      private EntityManager em;
    ...
    }

    One way to fix this is to inject EntityManagerFactory instead. EntityManagerFactory is guaranteed to be thread-safe. For example:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class EMTestServlet extends HttpServlet {
      //This field injection is thread-safe
      @PersistenceUnit
      private EntityManagerFactory emf;
      
      protected void doGet(HttpServletRequest request,
                 HttpServletResponse response)
      throws ServletException, IOException {
      EntityManager em = emf.createEntityManager();
      //work with em
      }
    }

    Continuing container-managed EntityManager vs application-managed EntityManager.

    There are important differences between the injected EntityManager, and the EntityManager created from an injected EntityManagerFactory. Basically, injected EntityManager is container-managed, meaning all of its lifecycle is controlled by the container (web container or EJB container). Application code cannot close it, or otherwise interfere with its life.

    In addition, for a container-managed EntityManager, its associated PersistenceContext is automatically propagated along with the underlying JTA, from servlet A to servlet B, from servlet to EJB, from EJB a to EJB B, and so on. As such, EntityManager of the same configuration injected into various classes can share the same PersistenceContext in a call stack.

    On the other hand, EntityManager created from EntityManagerFactory is application-managed EntityManager. Application code is responsible for managing its whole lifecycle. And there is no PersistenceContext propagation for application-managed EntityManager.

    Are all EntityManager's obtained from EntityManagerFactory application-managed EntityManagerYes.

    Is it possible to get a container-managed EntityManager from EntityManagerFactoryNo.

    You may have read about the method EntityManagerFactory.getEntityManager(), which returns a container-managed EntityManager. This method was considered and included in the early draft version of Java Persistence API, but was eventually removed from its final release.

    posted on 2013-02-04 10:49 gembin 閱讀(854) 評論(0)  編輯  收藏 所屬分類: JavaEE

    導航

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    free counters
    主站蜘蛛池模板: 最近免费字幕中文大全| 亚洲国产成人久久99精品| 三上悠亚电影全集免费 | 亚洲国产精品无码成人片久久| 亚洲aⅴ无码专区在线观看春色| 波多野结衣在线免费视频| 久久综合九九亚洲一区| 久草福利资源网站免费| 99久久精品日本一区二区免费| 亚洲人成电影在线天堂| 亚洲视频免费观看| 日韩中文无码有码免费视频 | 欧洲美女大片免费播放器视频| 免费a在线观看播放| 亚洲AV无码乱码在线观看裸奔| a毛片全部播放免费视频完整18| 亚洲国产日韩在线视频| 久久青草免费91线频观看不卡 | 免费国产黄网站在线观看视频 | 亚洲精品国产精品乱码不卡√ | 免费电影在线观看网站| 亚洲乱码国产乱码精华| 美女被cao网站免费看在线看| 国产v片免费播放| 国产高清对白在线观看免费91| 成人爽A毛片免费看| 偷自拍亚洲视频在线观看99| 亚洲情综合五月天| 亚洲一级免费毛片| 久久精品国产亚洲麻豆| 久久www免费人成看片| 亚洲avav天堂av在线网毛片| 亚洲精品无码精品mV在线观看| 114级毛片免费观看| 久久久久亚洲AV无码去区首| 国产国拍亚洲精品福利| 亚洲国产无线乱码在线观看| 久久久久亚洲精品中文字幕| 24小时免费看片| 免费国产黄网站在线观看动图 | 免费一区二区三区|