2012-06-20 3 views
1

Мы разрабатываем программное обеспечение с сервером приложений Weblogic (12.1.1.0); У нас есть один домен с двумя приложениями.Основное SQLException (связанное с XA) в приложении Weblogic Сервер

Мы просто переместилась с БД разработки предварительного производства DB (по аналогии с производства), и о мальчик мы получили большую проблему собирается ...
DBA говорит ДЕЦИБЕЛЫ работают в той же версии - Oracle 11 (I не помните точную версию). Единственное различие, которое мы видим, заключается в том, что dvlp DB использует SID для подключения, а два других - имя службы.

Теперь в нашем домене имеется два источника данных X и Y. Оба подключены к одной и той же БД. Мы используем драйвер XA для обоих. Оба наших приложения используют один и тот же «persistence.xml» (и сущности), который имеет два PU (единицы сохранения), каждый из которых использует другой источник данных (X и Y).

Проблема заключается в следующем:

  1. MDB начинает обработку запроса.
  2. Он использует оба PU с EntityManager и источник данных Y с интерфейсом DataSource, который используется для получения соединения (у нас есть код JDBC).
  3. Он вызывает компонент из другого приложения.
  4. Другой компонент пытается использовать один из PU (тот, который подключен к источнику данных X).
  5. SQLException брошено:

    XA error: XAResource.XAER_NOTA start() failed on resource 'x_my_domain': XAER_NOTA : The XID is not valid

Мы искали ошибку на сайте, и мы обнаружили, что мы должны изменить конфигурацию источников данных, в
XASetTransactionTimeout=true
XATransactionTimeout=0
но это не сработало.

Мы также много пытались настроить конфигурацию источников данных, в конечном итоге удалив один из них, поэтому нам нужно только настроить только один из них, но ничего не сработало.

Кроме того, в то время как раз настройки конфигурации, различные SQLException скатилась под нашим радаром и начал выкатились вместо предыдущего:

Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceDisabledException: Pool X is Suspended, cannot allocate resources to applications 

Теперь это один еще более расстраивает, потому что мы испробовали все; сбросить источник данных; удалять и воссоздавать; удалить и воссоздать с другим именем; удалите домен и заново создайте другое имя источника данных; вернуться с помощью dvlp DB; но ничего, исключение, похоже, сохраняется.

Мы действительно не имеем никакого представления о том, как решить эту проблему, и мы не можем идти дальше, не исправляя эту проблему.

ответ

0

Наконец-то мы выяснили, как исправить эту проблему, но чтобы ответить на вопрос, мне придется больше объяснить нашу среду; На самом деле у нас есть два управляемых сервера, и каждое приложение запускается на другом сервере. И администратор-сервер, и одна из MS запускаются на одной машине, а другая MS работает на другой машине (всего две машины).

Дело в том, что когда мы модифицировали один из источников данных (X), который использовался и другой MS, мы не перезапустили другую MS, а только источник данных.Мы предполагаем, что это привело к тому, что источник данных не обновлялся с новыми изменениями на другой MS, что вызвало ошибки, с которыми мы столкнулись.

Проблема была вызвана довольно глупой причиной, но ее было трудно обнаружить, поскольку она повторялась при любой настройке среды для admin-server + first MS part, даже на наших собственных компьютерах с настройкой только администратора, сервер без определения машин. Причина, по которой это произошло, состоит в том, что адрес машины, содержащей другое приложение, был написан в коде (читается из конфигурации XML, но это не сильно меняется).

Ну, рад, что все закончилось.