Я использую hibernate, но я хочу добавить приложение, использующее спящий режим. проблема, с которой я сталкиваюсь, - это когда я хочу выполнить глобальную транзакцию в этом комбинированном приложении. Я использую weblogic как контейнер, теперь проблема в том, что hibernate создал свое собственное соединение, я хочу, чтобы toplink должен использовать только это соединение ... может ли кто-нибудь сказать мне, как я могу это достичь?using toplink from hibernate
ответ
Вы обеспокоены несколькими подключениями или объединением транзакций? Если вы хотите, чтобы ваш код подключаемого модуля и ваш спящий код делились транзакциями, вам, вероятно, придется посмотреть на JTA, чтобы объединить их в распределенную транзакцию. В противном случае, я не понимаю, что именно вы пытаетесь выполнить.
Я предлагаю сохранить мир Hibernate и TopLink отдельно и использовать один компонент сеанса EJB для стороны Hibernate, а другой компонент сеанса EJB для TopLink сторона вещей.
Использование транзакций, управляемых контейнерами, и сервер WebLogic позаботится об фиксации через оба сеансовых вызова. Вам может понадобиться один источник данных + пул соединений для работы TopLink и другой источник данных + пул соединений для работы Hibernate.
Таким образом, у вас есть надлежащее архитектурное разделение между двумя технологиями ORM. Я подозреваю, что попытка использовать одно и то же соединение из работы TopLink и передачи его в Hibernate (или наоборот) не будет работать, потому что один раз, когда один инструмент вызвал фиксацию, другой инструмент не может вызвать откат :-)
Вы делаете что-то на уровне EJB, это будет проще, чем спрятать JTA напрямую. Контейнер должен заботиться о материале JTA для вас.
ya это то, что я хочу. я всегда буду говорить, что фиксация из спящего режима происходит не от toplink. см. некоторые случаи работают на меня. но есть только один случай, который создает проблему. см., поток подобен этому, сначала я вызываю hibernate, затем из hibernate я вызываю toplink, затем управление возвращается в спящий режим для некоторой обработки и, наконец, происходит фиксация из спящего режима. это мой сценарий. теперь, если есть какие-то проблемы в спящем режиме, но toplink работал нормально, то также по мне полная транзакция должна откат, но toplink получает commed adb hibernate получает откат. –
Я предполагаю, что проблема связана с toplink, потому что я создаю собственное соединение, а затем передаю это, чтобы спящий режим использовать, но toplink создает соединение своего ... поэтому я спросил, есть ли способ, которым я могу дать свой создало соединение с toplink, так что tplink может работать на этом –
см., Я хочу сказать, что мое приложение использует hibernate, теперь я хочу вызвать приложение, использующее toplink, с проблемой, с которой я столкнулся, когда я пытаюсь достичь глобальной транзакции. поэтому я думал, что если hibernate и toplink используют одно и то же соединение, тогда мне удастся достичь глобальной транзакции. –
На самом деле это не так, как работают транзакции. Расследуйте распределенные транзакции и как интегрировать в них как toplink, так и hibernate. Я рекомендую atomikos как встраиваемый менеджер JTA – Jherico