<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

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(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
    主站蜘蛛池模板: 亚洲欧洲国产经精品香蕉网| 亚洲国产成人精品激情| 污污网站免费观看| 亚洲国产精品白丝在线观看| 永久免费看bbb| 中文字幕成人免费高清在线视频| 亚洲图片一区二区| 四虎影院永久免费观看| 182tv免费视频在线观看| 亚洲国产成人99精品激情在线| 亚洲国产高清在线一区二区三区 | 视频免费在线观看| 久久精品国产亚洲AV未满十八| 亚洲AV无码乱码在线观看牲色| 男女作爱在线播放免费网站| 亚洲色一区二区三区四区| 国产亚洲精品免费视频播放 | 免费观看的毛片大全| 一级女人18片毛片免费视频| 91嫩草亚洲精品| 区久久AAA片69亚洲| 久久WWW色情成人免费观看| 久久久久久av无码免费看大片| 久久精品国产亚洲av麻豆图片| 亚洲色WWW成人永久网址| 成人免费午间影院在线观看| 久久国产精品免费视频| 黄色毛片免费在线观看| wwwxxx亚洲| 亚洲日本中文字幕区| 亚洲男人的天堂一区二区| 成人免费无码大片a毛片| 免费网站看av片| 无码的免费不卡毛片视频| 亚洲熟女综合一区二区三区| 久久精品国产亚洲AV麻豆~| 亚洲AV无码乱码精品国产| 成年女人毛片免费播放人 | 夜夜嘿视频免费看| 7x7x7x免费在线观看| a级毛片免费高清视频|