Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > не могу инециализировать Transavtion Manager


Автор: Asal 25.8.2008, 13:29
Добрый день.
Не могу найти в чем ошибка, делаю все как в примере jpetstore и доках на Spring

В http://static.springframework.org/spring/docs/2.5.x/reference/transaction.html описывается работа с транзакциями.
Там сказанно что достаточно этих двух строк
Код

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myshop"/>
<bean id="txnManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>


в web.xml 
Код

<resource-ref>
  <res-ref-name>jdbc/myshop</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>


в ответ получаю ЭТО
Код

SEVERE: Exception sending context initialized event to listener instance of class com.jetscart.core.listeners.JetscartContextListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txnManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: No JTA UserTransaction available - specify either 'userTransaction' or 'userTransactionName' or 'transactionManager' or 'transactionManagerName'
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    

Автор: ivg 25.8.2008, 13:52
Цитата(Asal @  25.8.2008,  16:29 Найти цитируемый пост)
Там сказанно что достаточно этих двух строк

И там же сказано
Цитата

If we use JTA in a J2EE container, as in the 'dataAccessContext-jta.xml'  file from the same sample application, we use a container DataSource, obtained via JNDI, in conjunction with Spring's JtaTransactionManager. The JtaTransactionManager doesn't need to know about the DataSource, or any other specific resources, as it will use the container's global transaction management infrastructure.
 У вас J2EE контейнер?

Автор: Asal 25.8.2008, 13:59
Цитата(ivg @  25.8.2008,  13:52 Найти цитируемый пост)
У вас J2EE контейнер?

У меня Tomcat

Автор: ivg 25.8.2008, 14:15
Цитата(Asal @  25.8.2008,  16:59 Найти цитируемый пост)
У меня Tomcat

Тогда видимо вам нужен DataSourceTransactionManager.

Автор: Asal 26.8.2008, 10:28
Подскажите пожалуйста что и где нужно указать если использовать GlassFish. 
Указания JNDI имени в web.xml явно маловато.

Автор: Asal 27.8.2008, 11:37
разобрался.
нужно создать connection pool и затем jdbc resource,
тогда data source будет виден через JNDI.

Автор: toxel 17.10.2008, 12:22
а если у меня standalone приложения то как в этом случае настроить JtaTransactionManager ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)