[ https://issues.apache.org/jira/browse/TOMEE-2050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16034495#comment-16034495 ]
Svetlin Zarev edited comment on TOMEE-2050 at 6/2/17 10:55 AM: --------------------------------------------------------------- Servlet: {code} @WebServlet("/userTransaction") public final class CdiTransactionaltest extends HttpServlet { @Resource UserTransaction transaction; @Inject TransactionalBean transactionalBean; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { final PrintWriter out = resp.getWriter(); resp.setContentType("text/plain"); //other test cases here try { out.println("Testing with UserTransaction inside transactional bean..."); transactionalBean.testWithTxRequiredAndUserTransaction(); } catch (Exception ex) { out.println("Exception: " + ex); ex.printStackTrace(out); } } } {code} Transactional bean: {code} @Default public class TransactionalBean { @Resource UserTransaction userTransaction; //other test methods here @Transactional(TxType.REQUIRED) public void testWithTxRequiredAndUserTransaction() throws Exception { userTransaction.begin(); userTransaction.commit(); } } {code} Stack trace from test case: {code} Testing with UserTransaction inside transactional bean... Exception: javax.transaction.NotSupportedException: Nested Transactions are not supported javax.transaction.NotSupportedException: Nested Transactions are not supported at org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin(TransactionManagerImpl.java:157) at org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin(TransactionManagerImpl.java:152) at org.example.TransactionalBean.testWithTxRequiredAndUserTransaction(TransactionalBean.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113) at org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106) at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67) at org.apache.openejb.cdi.transactional.InterceptorBase.intercept(InterceptorBase.java:67) at org.apache.openejb.cdi.transactional.RequiredInterceptor.intercept(RequiredInterceptor.java:35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:136) at org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:63) at org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:139) at org.example.TransactionalBean$$OwbInterceptProxy0.testWithTxRequiredAndUserTransaction(org/example/TransactionalBean.java) at org.example.CdiTransactionaltest.doGet(CdiTransactionaltest.java:81) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) {code} Attaching zip with sample app (war + source) was (Author: svetlinzarev): Servlet: {code} @WebServlet("/userTransaction") public final class CdiTransactionaltest extends HttpServlet { @Resource UserTransaction transaction; @Inject TransactionalBean transactionalBean; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { final PrintWriter out = resp.getWriter(); resp.setContentType("text/plain"); //other test cases here try { out.println("Testing with UserTransaction inside transactional bean..."); transactionalBean.testWithTxRequiredAndUserTransaction(); } catch (Exception ex) { out.println("Exception: " + ex); ex.printStackTrace(out); } } } {code} Transactional bean: {code} @Default public class TransactionalBean { @Resource UserTransaction userTransaction; //other test methods here @Transactional(TxType.REQUIRED) public void testWithTxRequiredAndUserTransaction() throws Exception { userTransaction.begin(); userTransaction.commit(); } } {code} Attaching zip with sample app (war + source) > JTA 1.2 compliance: Calling UserTransaction methods from @Transactional bean > ---------------------------------------------------------------------------- > > Key: TOMEE-2050 > URL: https://issues.apache.org/jira/browse/TOMEE-2050 > Project: TomEE > Issue Type: Bug > Reporter: Svetlin Zarev > Attachments: sample.zip > > > JTA 1.2, section 3.7: > {code} > If an attempt is made to call any method of the UserTransaction interface > from within the scope of a bean or method annotated with @Transactional and a > Transactional.TxType other than NOT_SUPPORTED or NEVER, an > IllegalStateException must be thrown. > {code} > Instead TomEE throws: > {code} > 13:38:03.710 [http-nio-8080-exec-7] ERROR java.lang.Throwable - > javax.transaction.NotSupportedException: Nested Transactions are not supported > 13:38:03.713 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin(TransactionManagerImpl.java:157) > 13:38:03.716 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.geronimo.transaction.manager.TransactionManagerImpl.begin(TransactionManagerImpl.java:152) > ... > ... > ... > 13:38:03.737 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.webbeans.intercept.AbstractInvocationContext.directProceed(AbstractInvocationContext.java:113) > 13:38:03.758 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:106) > 13:38:03.761 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:67) > 13:38:03.766 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.openejb.cdi.transactional.InterceptorBase.intercept(InterceptorBase.java:67) > 13:38:03.770 [http-nio-8080-exec-7] ERROR java.lang.Throwable - at > org.apache.openejb.cdi.transactional.RequiredInterceptor.intercept(RequiredInterceptor.java:35) > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)