2012-02-09 44 views
1

我使用Spring 3.0.5,3.6.7休眠,Atomikos公司TransactionEssentials 3.7.0和MySQL 5.5简历XID上调0:未知

我最近所面对的问题,在我的ConnectionPool已逾时连接8小时后并被服务器重置,从而产生消息“XID恢复'???'提出了0:未知

这里是我的数据源配置:

<bean id="myDataSource" 
     class="com.atomikos.jdbc.AtomikosDataSourceBean" 
     init-method="init" 
     destroy-method="close" 
     depends-on="myConfigurer"> 
    <property name="uniqueResourceName" value="myPUDataSource" /> 
    <property name="xaDataSourceClassName" value="$CONF{database.XAdriver}" /> 
    <property name="poolSize" value="10" /> 
    <property name="xaProperties"> 
     <props> 
      <prop key="user">$CONF{database.user}</prop> 
      <prop key="password">$CONF{database.password}</prop> 
      <prop key="URL">$CONF{database.url}</prop> 
      <prop key="pinGlobalTxToPhysicalConnection">true</prop> 
      <prop key="autoReconnect">true</prop> 
     </props> 
    </property> 
</bean> 

当我调查,我发现,autoReconnect的= TRUE仅坠崖2秒的延迟后,我的断块连接(该选项是configurabe我认为) 浏览网页我发现解决方案建议增加MySQL服务器中的wait_timeout,我认为这不是一个真正的解决方案 应用程序应该能够处理死连接并自动重新连接,因为可能存在其他问题也有连接丢失 (我不想对服务器做任何指示应用程序使用)。

最后我找到了一个很好的解决方案,我会发布答案来帮助人们面对相同或类似的问题。

+0

很伤心。我不能在接下来的8个小时内回答这个问题。为什么总是8小时?每天工作8小时,wait_timeout = 8小时,等待我回答:8小时。这不应该是23或者42? – AlexS 2012-02-09 09:18:58

回答

2

通过插入线:

<property name="testQuery" value="SELECT 1"/> 

上的数据源的配置,似乎连接在使用前进行测试,并重新连接,如果它死了。 我尝试了wait_timeout=60,甚至在我的应用程序正在运行时重新启动MySQL服务器...

结果:没有更多异常和错误!