У меня возникла проблема с подключением 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()
.
Является ли ваш EJB анонимным с любой транзакцией? Анотация? –
Сделка управляется контейнером – rfders
Спасибо, что вы дали мне идею, я сменил менеджера транзакций на bean-manage, и он отлично работает – rfders