- java/
- Java Spring是否真的启动了一个新事务?
Java Spring是否真的启动了一个新事务?
Java Spring是否真的启动了一个新事务?,java,jboss,spring-transactions,spring-jms,Java,Jboss,Spring Transactions,Spring Jms,我的spring(4.1.1)应用程序部署在JBoss-6.10-final实例上,因此它使用基于容器的事务管理器和数据源。对于消息传递,我使用带有XA队列连接工厂设置的TIBCO EMS 8.1。Java版本是1.8.0_20。所有这些都在我的Ubuntu 14.04笔记本电脑上运行
我需要通过JMS发送请求,然后等待回复。我从中调用的bean将事务传播设置为propagation.REQUIRED,因此我需要在新事务中发送请求,然后等待回复。这意味着请求在单独的bean中发送,事务传播设置为
我的spring(4.1.1)应用程序部署在JBoss-6.10-final实例上,因此它使用基于容器的事务管理器和数据源。对于消息传递,我使用带有XA队列连接工厂设置的TIBCO EMS 8.1。Java版本是1.8.0_20。所有这些都在我的Ubuntu 14.04笔记本电脑上运行
我需要通过JMS发送请求,然后等待回复。我从中调用的bean将事务传播设置为propagation.REQUIRED,因此我需要在新事务中发送请求,然后等待回复。这意味着请求在单独的bean中发送,事务传播设置为propagation.REQUIRES\u NEW。
它是有效的,但我从JBoss得到了一个令人担忧的警告:
14-10-02 12:06:12902警告
[org.jboss.tm.usertx.UserTransactionRegistry](http-0.0.0-8080-1)
通知侦听器时出错
org.jboss.resource.connectionmanager。CachedConnectionManager@1917b4de
userTransactionStarted的:java.lang.IllegalStateException:正在尝试
更改事务处理简单in
入伍在
org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.list(TxConnectionManager.java:690)
在
org.jboss.resource.connectionmanager.TxConnectionManager.transactionStarted(TxConnectionManager.java:427)
在
org.jboss.resource.connectionmanager.CachedConnectionManager.userTransactionStarted(CachedConnectionManager.java:350)
在
org.jboss.tm.usertx.UserTransactionRegistry.userTransactionStarted(UserTransactionRegistry.java:119)
在
org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:141)
在
org.springframework.transaction.jta.JtaTransactionManager.doJtaBegin(JtaTransactionManager.java:875)
在
org.springframework.transaction.jta.JtaTransactionManager.doBegin(JtaTransactionManager.java:832)
在
org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction(AbstractPlatformTransactionManager.java:425)
在
org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:349)
在
org.springframework.transaction.interceptor.TransactionSpectSupport.createTransactionIfEssential(TransactionSpectSupport.java:438)
在
org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:261)
在
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
在
org.springframework.aop.framework.ReflectiveMethodInvocation.procement(ReflectiveMethodInvocation.java:179)
在
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
在com.sun.proxy.$Proxy234.request(未知源)处
com.izazi.ioriginate.framework.spring.jms.AbstractRequestReply.request(AbstractRequestReply.java:58)
在
com.izazi.ioriginate.service.addressvalidation.AddressValidationServiceImpl.validate(AddressValidationServiceImpl.java:34)
位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:62)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:483)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
在
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
在
org.springframework.aop.framework.ReflectiveMethodInvocation.procedue(ReflectiveMethodInvocation.java:157)
在
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
在
org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:266)
在
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
在
org.springframework.aop.framework.ReflectiveMethodInvocation.procement(ReflectiveMethodInvocation.java:179)
在
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
位于com.sun.proxy.$Proxy235.validate(未知源)
com.izazi.ioriginate.services.dwr.AddressValidation.validate(AddressValidation.java:40)
位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
invoke(NativeMethodAccessorImpl.java:62)
在
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
位于java.lang.reflect.Method.invoke(Method.java:483)
org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)
在
org.directwebremoting.impl.DefaultRemoter$1.doFilter(DefaultRemoter.java:428)
在
org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:431)
在
org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:283)
在
org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)
在
org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
在
org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:146)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
http.HttpServlet.service(HttpServlet.java:847)位于
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324)
在
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242)
在
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
在
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118)
在
org.springf
if (definition.getPropagationBehavior() == TransactionDefinition.PROPAGATION_REQUIRES_NEW) {
if (debugEnabled) {
logger.debug("Suspending current transaction, creating new transaction with name [" +
definition.getName() + "]");
}
SuspendedResourcesHolder suspendedResources = suspend(transaction);
try {
boolean newSynchronization = (getTransactionSynchronization() != SYNCHRONIZATION_NEVER);
DefaultTransactionStatus status = newTransactionStatus(
definition, transaction, true, newSynchronization, debugEnabled, suspendedResources);
doBegin(transaction, definition);
prepareSynchronization(status, definition);
return status;
}
catch (RuntimeException beginEx) {
resumeAfterBeginException(transaction, suspendedResources, beginEx);
throw beginEx;
}
catch (Error beginErr) {
resumeAfterBeginException(transaction, suspendedResources, beginErr);
throw beginErr;
}
}