Я использую Spring 3.0.5, Hibernate 3.6.7, Atomikos TransactionEssentials 3.7.0 и MySQL 5.5резюме для XID поднял 0: неизвестно
Недавно я столкнулся с проблемой, что связи в моем connectionpool timedout после 8 часов и были сброшены сервером, вызывая сообщение «резюме для XID» ??? поднятые 0: неизвестно
Вот моя конфигурация DataSource:
<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 = верно только воссоединяется мое неисправное соединение после задержки в 2 секунды (что configurabe I Думаю) Просмотр в Интернете Я нашел решения, предлагающие увеличить wait_timeout в MySQL-Server, что, я думаю, не является реальным решением. Приложение должно иметь возможность обрабатывать мертвые соединения и автоматически подключаться, поскольку могут возникнуть другие проблемы, вызывающие потеря связи тоже. (И я не хочу делать какие-либо директивы для серверов любого рода приложение использует).
Наконец-то я нашел хорошее решение для этого, которое я опубликую в качестве ответа, чтобы помочь людям, сталкивающимся с теми же или похожими проблемами.
Это печально. Я не могу ответить на это в течение следующих 8 часов. Почему это всегда 8 часов? Работа 8 часов в день, wait_timeout = 8 часов, подождите, пока мне позволено ответить: 8 часов. Разве это не должно быть 23 или, может быть, 42? – AlexS