2010-09-30 1 views
3

У меня возникла проблема с подключением JDBC в EJB SessionBean. Ошибка:Ошибка при подключении JDBC: не удалось заручиться транзакцией при вводе объекта с метаобъявлением

org.jboss.util.NestedSQLException: Не удалось заручиться транзакцией при вводе объекта метаобнаружения !; - вложенная Throwable:. (Javax.transaction.SystemException: java.lang.Throwable: Unabled привлечь ресурс, увидеть предыдущие предупреждения

Я думал, что это происходит потому, что у меня уже есть открытое соединение с другого источника данных, так что я настроен источник данных XA, чтобы избежать проблем транзакций, но он не работает на всех, так что я не знаю, если я делаю что-то неправильно в моем коде Вот он:.

try 
    { 
     Properties p = new Properties(); 
     p.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 
     p.put(Context.PROVIDER_URL,"jnp://localhost:11099"); 
     p.put("java.naming.factory.url.pkgs", "org.jboss.naming"); 

     InitialContext ic = new InitialContext(p); 

     DataSource dataSource = (DataSource)ic.lookup("java:/jdbc/etlreportservices"); 

     return dataSource.getConnection(); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 

исключение вызывается при вызове dataSource.getConnection().

+0

Является ли ваш EJB анонимным с любой транзакцией? Анотация? –

+0

Сделка управляется контейнером – rfders

+0

Спасибо, что вы дали мне идею, я сменил менеджера транзакций на bean-manage, и он отлично работает – rfders

ответ

-3

Я сменил менеджера транзакций на bean-manage, и он отлично работает.

+0

Да, но как?Это очень не помогло мне. Вероятно, правильный ответ, но недостаточно тщательный. –

1

Я заметил это в случаях, когда время tx. FWIW.

0

Использование JBoss 6.0.0, сообщение об ошибке немного отличается:

Вызванный: org.jboss.resource.JBossResourceException: Не удалось завербовать в транзакции при входе в мета-Aware объект!


Что касается причины: Цитата из here

В том же процессе, два вызова были сделаны к различным источникам данных без XA. Это не поддерживается по умолчанию для JBoss.

На том же сайте представлено решение, которое не применимо к JBoss 6.0.0.


Общее решение заключается в изменении все источники данных, участвующих в одной и той же транзакции в XA источников данных. Затем он работает как с bean-управлением и контейнеры управляемые транзакции. Например, это решение предлагается в CodeRanch и в JBoss forum.

5

Может попробовать, для старой Jboss-х годов: /server/all/conf/jbossjta-properties.xml

<properties depends="arjuna" name="jta"> 
    <property name="com.arjuna.ats.jta.allowMultipleLastResources" value="true"/> 
</properties> 

для нового: автономный \ Конфигурация \ standalone.xml (или другое, что вам использование)

<system-properties> 
    <property name="com.arjuna.ats.arjuna.allowMultipleLastResources" value="true"/> 
</system-properties> 

 Смежные вопросы

  • Нет связанных вопросов^_^