![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| DmitryPS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.4.2007 Где: Казань Репутация: нет Всего: 1 |
Всем доброго времени суток. Столкнулся со следующей проблемой:
Используем JBoss 4.2.1, Oracle 10 задача из одного session bean открыть несколько соединений с ораклом под разными пользователями в случае если коннект один, все работает хорошо. Хорошо все работает так же в случае 2-х коннектов под одним пользователем. Пользователь естественно оракловый и не обязательно POOL_ADMINISTRATION который описан в oracle_ds.xml Но вот в случае 2-х разных пользователей имеем эксешен: Wrong credentials passed to getConnection!; - nested throwable: (org.jboss.resource.JBossResourceException: Wrong credentials passed to getConnection!) Причина ошибки не понятна. Вот что пишут на jboss http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJBossJCA http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJCASubPooling http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfigJCACommon Так как проблема непонятна, пытаюсь её решить методом научного тыка. Может что то элементарное упустил. Помогите чем можете (можно и материально код тестовой процедуры
настройка dataSource
Это сообщение отредактировал(а) DmitryPS - 22.8.2007, 13:58 |
||||
|
|||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
а если под другого ораклиного юзера сделать еще один дата соурс?
-------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| DmitryPS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.4.2007 Где: Казань Репутация: нет Всего: 1 |
Забыл добавить.
Пробовал добавить в _ds.xml параметр <application-managed-security/> как рекомендует JBoss в итоге имеем новый эксепшен Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: a000015:b2c:46cc1ef1:4b status: ActionStatus.ABORT_ONLY >); - nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: a000015:b2c:46cc1ef1:4b status: ActionStatus.ABORT_ONLY >)) http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJCASubPooling
Добавлено через 12 минут Сделал. в итоге имеем Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: a000015:bd3:46cc2358:3d status: ActionStatus.ABORT_ONLY >); - nested throwable: (org.jboss.resource.JBossResourceException: Could not enlist in transaction on entering meta-aware object!; - nested throwable: (javax.transaction.SystemException: java.lang.Throwable: Unabled to enlist resource, see the previous warnings. tx=TransactionImple < ac, BasicAction: a000015:bd3:46cc2358:3d status: ActionStatus.ABORT_ONLY >)) Вот код (второй dataSource отличается от вышеприведенного 1. Именем 2. Пользователем + паролем)
З.Ы. пользователе может быть много , и дата сурсы на каждого не напишешь. По сути система работает с ораклом либо через пользователя хозяина пула, либо реально существующего ораклового пользователя (которых может быть много и менятся они могут достаточно динамично) |
||||
|
|||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
в ejb 2.x чтобы аутентифицироваться перед ресурсом под учеткой, отличной от той, что указано при конфигурации пула, надо в дескрипторе развертывания бина в разделе описания resource reference указать <auth-type>Application</auth-type>.
думаю, в ejb3 похожую вещь можно замутить. |
|||
|
||||
| DmitryPS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.4.2007 Где: Казань Репутация: нет Всего: 1 |
По моему речь идет об одном и том же, но настроенном разными путями. Хотя могу ошибаться. |
|||
|
||||
| ekr |
|
|||
![]() ...и это пройдет... ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 6.5.2007 Где: Moscow, RU Репутация: 12 Всего: 19 |
то, что описал я - это часть спецификации ejb, а описанное на http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfigJCACommon - детали настройки конкретного сервера. т.е. с помощью настройки ejb-jar настраивается политика аутентификации для resource reference, а настройка ds.xml - для resource (datasource). эти настройки действуют совместно ) |
|||
|
||||
| DmitryPS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.4.2007 Где: Казань Репутация: нет Всего: 1 |
в EJB3 аналогичные описания ресурса прописываются следующим образом @Resource(mappedName = "java:OracleDS", authenticationType=javax.annotation.Resource.AuthenticationType.CONTAINER) DataSource ds; К сожалению как появлялся exception Could not enlist in transaction on entering meta-aware object!, так и появляется. Такое ощущение, что дело в транзакциях. а вот что вываливает JBoss почему то не могу разместить лог в тексте :( приаттачу файлом начало лога следующее 16:16:46,265 WARN [loggerI18N] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] Adding multiple last resources is disallowed. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@36acab 16:18:41,677 WARN [loggerI18N] [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] [com.arjuna.ats.internal.jta.transaction.arjunacore.enliststarterror] TransactionImple.enlistResource - XAResource.start returned: XAException.XAER_PROTO for < 131075, 25, 23, 1-a000015:a41:46cecb5d:4ca000015:a41:46cecb5d:50 Это сообщение отредактировал(а) DmitryPS - 24.8.2007, 15:18 |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: 7 Всего: 13 |
как настроены секьюрити в аппсервере и оракле?
Как настроены XA транзакции длля оракла? Если не может от энлистить транзакцию при работе с ораклой, то, скорее всего, где-то не хватает каких-то грантов. Выполнялся скрипт из $orahome/rdbms/admin/xaview.sql (не обращая внимание, что в доке написано, что под винду типо не нужно выполнять)? вот такое еще попробуй (не обращая внимание, что это для WAS написано): http://publib.boulder.ibm.com/infocenter/w...ss2__XArecovery Это сообщение отредактировал(а) y3u - 24.8.2007, 15:53 -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| DmitryPS |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.4.2007 Где: Казань Репутация: нет Всего: 1 |
Кратко резюмируя данную ситуацию.
Частично вышеописанную проблему удалось решить. Напомню , что версия JBoss 4.2.1g 1. Проблема в настройках секьюрити. Из одного session bean не мог открыть 2 коннекта к ораклу под двумя разными пользователями получал exception Wrong credentials passed to getConnection!;
Решение: в _ds.xml добавить параметр <application-managed-security/> более подробно описать ресурс
2. Выполнив данные действия, получаем новую , свежую проблему при попытке выполнить код имеем exception Could not enlist in transaction on entering meta-aware object! и в логах JBoss - а можно увидеть следующее 16:16:46,265 WARN [loggerI18N] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.disallow] Adding multiple last resources is disallowed. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@36acab Решение которое позволило вышеприведенному коду отработать. в jbossjta-propeties.xml добавить <property name="com.arjuna.ats.jta.allowMultipleLastResources" value="true"/> подчерпнуто из http://www.jboss.com/index.html?module=bb&...asc&start=0 в итоге код работает, но в логах jboss появляется не очень радующий варнинг 14:24:26,967 WARN [loggerI18N] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.multipleWarning] [com.arjuna.ats.internal.jta.transaction.arjunacore.lastResource.multipleWarning] Multiple last resources have been added to the current transaction. This is transactionally unsafe and should not be relied upon. Current resource is org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@122cbaf вообщем надо насчет транзакций в j2ee и в jboss еще почитать если кто сможет прокомментировать работу с транзакциями и последний варнинг , будет интересно |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |