{"id":985,"date":"2010-12-17T07:35:08","date_gmt":"2010-12-16T22:35:08","guid":{"rendered":"http:\/\/www.kazu.tv\/blog\/?p=985"},"modified":"2010-12-17T07:35:08","modified_gmt":"2010-12-16T22:35:08","slug":"ejb_30_entity","status":"publish","type":"post","link":"https:\/\/kazu.tv\/blog\/2010\/12\/17\/ejb_30_entity\/","title":{"rendered":"EJB 3.0\u306eSession Bean\u3067EntityManager\u3092\u4f7f\u3046"},"content":{"rendered":"<p>\u30e1\u30e2<\/p>\n<h3>\u25a0\u74b0\u5883<\/h3>\n<ul>\n<li>WebLogic 11g Release 1&nbsp;<\/li>\n<\/ul>\n<h3>\u25a0\u3084\u308a\u305f\u3044\u4e8b<\/h3>\n<p>EJB 3.0\u306eSession Bean\u306e\u4e2d\u3067\u3001Entity Manager\u3092\u4f7f\u3063\u3066Entity\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u3002<\/p>\n<p><!--more--><\/p>\n<h3>\u25a0\u57fa\u790e<\/h3>\n<p>\u4ee5\u4e0b\u306e\u611f\u3058\u3067\u3001Session Bean\u306bEntityManager\u3092\u6ce8\u5165\uff08DI\u3092\u3042\u307e\u308a\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u3001\u7528\u8a9e\u304c\u304a\u304b\u3057\u304b\u3063\u305f\u3089\u8a02\u6b63\u3057\u3066\u4e0b\u3055\u3044\uff09\u3002<\/p>\n<pre class=\"brush: java; code\">\n@Stateless\npublic class FooBean implements FooBeanLocal {\n@PersistenceContext private EntityManager em;\n\/\/ \u4ee5\u4e0b\u7565\n<\/pre>\n<p>&nbsp;createEntityManagerFactory\u3068\u304b\u4f7f\u3046\u5fc5\u8981\u306a\u3057\u3002\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u666e\u901a\u306b\u4f7f\u304a\u3046\u3068\u3057\u305f\u3089<\/p>\n<pre class=\"brush: java; code\">\nem.getTransaction();\n<\/pre>\n<p>\u4ee5\u4e0b\u306e\u3088\u3046\u306aException\u304c\u51fa\u305f\u3002<\/p>\n<pre class=\"brush: plain; code\">\n&lt;2010\/12\/15 15\u664258\u520637\u79d2 JST&gt; &lt;Error&gt; &lt;HTTP&gt; &lt;BEA-101020&gt; &lt;[ServletContext@3559716[app:projfoo-ear module:projfoo-web path:\/projfoo-web spec-version:2.5]]\u30b5\u30fc\u30d6\u30ec\u30c3\u30c8\u306f\u4f8b\u5916\u306b\u3088\u308a\u5931\u6557\u3057\u307e\u3057\u305f\njavax.ejb.EJBException: EJB Exception: : java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.\nat weblogic.deployment.BasePersistenceContextProxyImpl.validateInvocation(BasePersistenceContextProxyImpl.java:121)\nat weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:86)\nat weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:91)\nat weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:80)\nat weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:26)\nat $Proxy160.getTransaction(Unknown Source)\nat com.example.projfoo.ejb.Foo.start(Foo.java:41)\nat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\nat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\nat java.lang.reflect.Method.invoke(Method.java:597)\nat com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)\nat com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)\nat com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)\nat com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)\nat weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)\nat com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)\nat com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)\nat com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)\nat com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)\nat com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)\nat com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)\nat $Proxy161.start(Unknown Source)\nat com.example.projfoo.ejb.Foo_xm90n4_FooLocalImpl.start(Foo_xm90n4_FooLocalImpl.java:244)\nat com.example.projfoo.servlets.FooServlet.doGet(FooServlet.java:53)\nat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\nat javax.servlet.http.HttpServlet.service(HttpServlet.java:820)\nat weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)\nat weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)\nat weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)\nat weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)\nat weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.doIt(WebAppServletContext.java:3686)\nat weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)\nat weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)\nat weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)\nat weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2268)\nat weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)\nat weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)\nat weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)\nat weblogic.work.ExecuteThread.run(ExecuteThread.java:173)\n; nested exception is: java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.\nat weblogic.ejb.container.internal.EJBRuntimeUtils.throwEJBException(EJBRuntimeUtils.java:148)\nat weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:849)\nat weblogic.ejb.container.internal.BaseLocalObject.handleSystemException(BaseLocalObject.java:794)\nat weblogic.ejb.container.internal.BaseLocalObject.postInvoke1(BaseLocalObject.java:489)\nat weblogic.ejb.container.internal.BaseLocalObject.__WL_postInvokeTxRetry(BaseLocalObject.java:427)\nTruncated. see log file for complete stacktrace\nCaused By: java.lang.IllegalStateException: The method public abstract javax.persistence.EntityTransaction javax.persistence.EntityManager.getTransaction() cannot be invoked in the context of a JTA EntityManager.\nat weblogic.deployment.BasePersistenceContextProxyImpl.validateInvocation(BasePersistenceContextProxyImpl.java:121)\nat weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:86)\nat weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:91)\nat weblogic.deployment.BasePersistenceContextProxyImpl.invoke(BasePersistenceContextProxyImpl.java:80)\nat weblogic.deployment.TransactionalEntityManagerProxyImpl.invoke(TransactionalEntityManagerProxyImpl.java:26)\nTruncated. see log file for complete stacktrace\n&gt;<\/pre>\n<p>&nbsp;\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306e\u7ba1\u7406\u3082\u30a2\u30ce\u30c6\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u3063\u3066\u66f8\u304b\u306a\u304d\u3083\u3044\u3051\u306a\u3044\u306e\u306d\u3002<\/p>\n<pre class=\"brush: java; code\">\n@TransactionAttribute(REQUIRED)\nprivate void writeSomethingToDb() {\nlong pk = 1;\nSomeEntity e = em.find(SomeEntity.class, pk);\ne.setSomeField(&quot;foo&quot;);\nem.persist(e);\n}\n<\/pre>\n<p>TransactionAttribute\u306e\u7a2e\u985e\u306b\u95a2\u3057\u3066\u306f\u3001\u30b0\u30b0\u3063\u305f\u6240\u30aa\u30d5\u30a3\u30b7\u30e3\u30eb\u306e\u60c5\u5831\u3088\u308a\u5148\u306b\u3053\u3061\u3089\u306e\u30d6\u30ed\u30b0<a href=\"http:\/\/rio1218.blog26.fc2.com\/blog-entry-25.html\" target=\"_blank\">\u30a8\u30f3\u30c8\u30ea<\/a>\u304c\u51fa\u3066\u304d\u305f\u306e\u3067\u3001\u3068\u308a\u3042\u3048\u305a\u7d39\u4ecb\u3057\u3066\u304a\u304f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30e1\u30e2 \u25a0\u74b0\u5883 WebLogic 11g Release 1&nbsp; \u25a0\u3084\u308a\u305f\u3044\u4e8b EJB 3.0\u306eSession Bean\u306e\u4e2d\u3067\u3001Entity Manager\u3092\u4f7f\u3063\u3066Entity\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u6271\u3046\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[60],"tags":[226,818,819,820,821,822],"class_list":["post-985","post","type-post","status-publish","format-standard","hentry","category-java","tag-ejb","tag-entity","tag-entitymanager","tag-jpa","tag-session-bean","tag-transactionattribute"],"_links":{"self":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts\/985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":0,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"wp:attachment":[{"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kazu.tv\/blog\/wp-json\/wp\/v2\/tags?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}