<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 閱讀(825) 評論(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
    主站蜘蛛池模板: 国产A∨免费精品视频| 日韩在线视频线视频免费网站| 色www永久免费网站| 亚洲精品无码永久在线观看你懂的| 在线观看亚洲精品专区| 啊灬啊灬别停啊灬用力啊免费看| 亚洲AV无码一区二区三区鸳鸯影院| 国产一区视频在线免费观看| 精品视频免费在线| 国产亚洲美女精品久久久2020| jizz免费观看视频| 国产av无码专区亚洲av桃花庵 | 亚洲成a人片在线不卡一二三区 | 亚洲一区中文字幕在线观看| 免费可以看黄的视频s色| 亚洲精品中文字幕无乱码麻豆| 青青草a免费线观a| 国产亚洲欧美在线观看| 亚洲色婷婷综合开心网| 免费人成网站在线观看不卡| 精品亚洲国产成AV人片传媒| 中文字幕无码不卡免费视频| 国产亚洲综合视频| 久久亚洲精品成人| 成人超污免费网站在线看| 菠萝菠萝蜜在线免费视频| 国产精品亚洲A∨天堂不卡| 久久久久久精品成人免费图片| 亚洲中文字幕久久精品无码A| 免费国产在线观看| 四虎国产精品永久免费网址| 亚洲中文字幕无码一去台湾| 亚洲av再在线观看| 久久国产高潮流白浆免费观看 | 久久精品国产亚洲av天美18| 亚洲熟女一区二区三区| 免费观看无遮挡www的小视频| 美女被羞羞网站免费下载| 亚洲视频在线一区| 国产一级一片免费播放i| 99爱免费观看视频在线|