Сессия не найдена для текущего потока с Spring3 + Hibernate4 с использованием JTA TransactionManager

Я пытаюсь выполнить миграцию из

весна 1.2.9 с спящим режимом 3.2.0.ga

to

spring 3.1.1.RELEASE со спящим режимом 4.0.1.Final

Большая часть связывания bean-компонентов выполняется с помощью xml вместо аннотаций. Я внес необходимые изменения, а также провел модульное тестирование объектов dao, сервисов и контроллеров перед развертыванием, чтобы обеспечить совместимость с существующей конфигурацией Spring.

Когда я развертываю JBoss AS 7.1.1.Final, я получаю «Сеанс не найден для текущего потока». Я искал ответ на этом форуме, а также в документации по весне и спящему режиму, и я до сих пор не могу найти решение, применимое к моей проблеме.

Вот журналы исключений гибернации

> 06:18:25,703 ERROR [com.test.customer.dao.InvoicingInfoDAOImpl] (http--12
7.0.0.1-8080-1) selectBillingInfoIdById:Runtime error.: org.hibernate.HibernateE
xception: **No Session found for current thread**
        at org.springframework.orm.hibernate4.SpringSessionContext.currentSessio
n(SpringSessionContext.java:97) [spring-orm-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFa
ctoryImpl.java:883) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
        at com.test.customer.dao.InvoicingInfoDAOImpl.selectBillingInfoBy
Id(InvoicingInfoDAOImpl.java:58) [classes:]
        at com.test.customer.services.CustomerServiceImpl.getBillingInfo(
CustomerServiceImpl.java:535) [classes:]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1
.6.0_25]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39) [rt.jar:1.6.0_25]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25) [rt.jar:1.6.0_25]
        at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_25]
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti
on(AopUtils.java:318) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo
inpoint(ReflectiveMethodInvocation.java:183) [spring-aop-3.1.1.RELEASE.jar:3.1.1
.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:150) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE
]
        at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:110) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE
]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:172) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE
]
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami
cAopProxy.java:202) [spring-aop-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at $Proxy22.getBillingInfo(Unknown Source)      at com.test.custo
mer.CustomerController.getBillingInfo(CustomerController.java:205) [classes:]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1
.6.0_25]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39) [rt.jar:1.6.0_25]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25) [rt.jar:1.6.0_25]
        at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_25]
        at org.springframework.web.method.support.InvocableHandlerMethod.invoke(
InvocableHandlerMethod.java:213) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeF
orRequest(InvocableHandlerMethod.java:126) [spring-web-3.1.1.RELEASE.jar:3.1.1.R
ELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocabl
eHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) [spring-we
bmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
andlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) [spring
-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingH
andlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) [spring-webm
vc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapt
er.handle(AbstractHandlerMethodAdapter.java:80) [spring-webmvc-3.1.1.RELEASE.jar
:3.1.1.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(Dispatch
erServlet.java:923) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(Dispatche
rServlet.java:852) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(Frame
workServlet.java:882) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServ
let.java:789) [spring-webmvc-3.1.1.RELEASE.jar:3.1.1.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [jboss-s
ervlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-s
ervlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:275) [jbossweb-7.0.13.Final.jar:]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:161) [jbossweb-7.0.13.Final.jar:]
        at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(Secu
rityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]

Вот конфигурация spring для фабрики сеансов и диспетчера транзакций (здесь используется jta)

> <!-- Configuration of Hibernate SessionFactory -->
    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="csvliteDataSource" />
        </property>
        <property name="hibernateProperties">
            <ref bean="csvliteHibernateProperties" />
        </property>
        <property name="mappingResources">
            <list>
                <!-- Customer Domain Mapping -->
                <value>com/test/customer/domain/InvoicingInfo.hbm.xml</value>
                <value>com/test/customer/domain/PickupAddress.hbm.xml</value>
            </list>
        </property>
    </bean>

    <!-- Configurationof Hibernate Configuration Properties -->
    <bean id="csvliteHibernateProperties" class="java.util.Properties">
        <constructor-arg>
            <props>
                <!-- Hibernate Configuration Properties -->
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>             
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                <!-- Hibernate Configuration Properties - enabled only if debugging -->
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <!-- Hibernate Cache Properties -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>         
            </props>
        </constructor-arg>
    </bean>

    <!-- Configuration of Data Source -->
    <bean id="csvliteDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:jboss/datasources/CSLiteDS</value>
        </property>
    </bean>

    <!-- Configuration of Transaction Manager -->
    <bean id="csvliteTxManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName">
            <value>java:jboss/TransactionManager</value>
        </property>
    </bean>

Вот конфигурация spring для соответствующих дао и сервисных объектов (он использует TransactionProxyFactoryBean для каждого сервисного объекта)

<bean id="invoicingInfoDAO"
    class="com.test.customer.dao.InvoicingInfoDAOImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="pickupAddressDAO"
    class="com.test.customer.dao.PickupAddressDAOImpl">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="customerService"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="csvliteTxManager"/>
    <property name="target" ref="customerServiceImpl"/>
    <property name="transactionAttributes"> 
        <props>     
            <prop key="getBillingInfo">PROPAGATION_REQUIRES_NEW, -Throwable</prop>                                              
            <prop key="addBillingInfo">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="updateBillingInfo">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="addPickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="updatePickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="getPickupAddress">PROPAGATION_REQUIRES_NEW, -Throwable</prop>
            <prop key="unlockPickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="lockPickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="lockBillingInfo">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="unlockBillingInfo">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="closePickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="processPurgePickupAddress">PROPAGATION_REQUIRED, -Throwable</prop>
            <prop key="getMultiplePickupAddress">PROPAGATION_REQUIRES_NEW, -Throwable</prop>           
        </props>
    </property>     
</bean> 
<bean id="customerServiceImpl" class="com.test.customer.services.CustomerServiceImpl">
    <property name="invoicingInfoDAO" ref="invoicingInfoDAO"/>  
    <property name="pickupAddressDAO" ref="pickupAddressDAO"/>
</bean>

Что я действительно упустил в своей конфигурации?

=========================

[Обновление - 20121101]

Я принял предложение от @adrian-shum и сделал перекрестную ссылку с некоторой информацией, которую нашел в сети.

Я сделал следующие тесты, но все тесты не работают, за исключением случаев, когда я переключаюсь на HibernateTransaction вместо транзакции JTA.

Тест 1 - УСПЕХ

(с HibernateTransactionManager)

<!-- Configurationof Hibernate Configuration Properties -->
    <bean id="csvliteHibernateProperties" class="java.util.Properties">
        <constructor-arg>
            <props>
                <!-- Hibernate Configuration Properties -->
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>             
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>

        <!-- Hibernate Configuration Properties - enabled only if debugging -->
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <!-- Hibernate Cache Properties -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>         
            </props>
        </constructor-arg>
    </bean>

    <!-- Configuration of Data Source -->
    <bean id="csvliteDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:jboss/datasources/CSLiteDS</value>
        </property>
    </bean>

    <!-- Configuration of Transaction Manager -->
    <bean id="csvliteTxManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

ТЕСТ 2 - НЕ ПРОШЕЛ

(с JtaTransactionManager - hibernate.transaction.manager_lookup_class + hibernate.transaction.factory_class)

<!-- Configurationof Hibernate Configuration Properties -->
    <bean id="csvliteHibernateProperties" class="java.util.Properties">
        <constructor-arg>
            <props>
                <!-- Hibernate Configuration Properties -->
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>             
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                <prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JtaTransactionFactory</prop>
                <prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</prop>

                <!-- Hibernate Configuration Properties - enabled only if debugging -->
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <!-- Hibernate Cache Properties -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>         
            </props>
        </constructor-arg>
    </bean>

    <!-- Configuration of Data Source -->
    <bean id="csvliteDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:jboss/datasources/CSLiteDS</value>
        </property>
    </bean>

    <!-- Configuration of Transaction Manager -->   
    <bean id="csvliteTxManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName">
            <value>java:jboss/TransactionManager</value>
        </property>
    </bean>

ТЕСТ 3 - НЕ ПРОШЕЛ

(со свойством JtaTransactionManager - hibernate.transaction.jta.platform)

<!-- Configurationof Hibernate Configuration Properties -->
    <bean id="csvliteHibernateProperties" class="java.util.Properties">
        <constructor-arg>
            <props>
                <!-- Hibernate Configuration Properties -->
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</prop>             
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
                <!-- prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform</prop-->
                <prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform</prop>

                <!-- Hibernate Configuration Properties - enabled only if debugging -->
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.generate_statistics">true</prop>
                <prop key="hibernate.use_sql_comments">true</prop>
                <!-- Hibernate Cache Properties -->
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>         
            </props>
        </constructor-arg>
    </bean>

    <!-- Configuration of Data Source -->
    <bean id="csvliteDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:jboss/datasources/CSLiteDS</value>
        </property>
    </bean>

    <!-- Configuration of Transaction Manager -->
    <bean id="csvliteTxManager"
        class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManagerName">
            <value>java:jboss/TransactionManager</value>
        </property>
    </bean>

Использование Hibernate Transaction для меня не вариант. Что мне нужно сделать на стороне JBoss AS 7, чтобы транзакция JTA работала?

=========================

[Обновление - 20121101]

В принципе, я не нашел никакого другого исключения в журнале, кроме исключения, которое я разместил ранее.

Однако, что интересно, я не видел никакой записи в журнале, которая показывает привязку диспетчера транзакций к JNDI, который я указал, и всегда говорит, что будет использовать «HHH000399: использование стратегии транзакций по умолчанию (прямые транзакции JDBC)»

15:46:00,548 INFO  [org.springframework.transaction.jta.JtaTransactionManager] (
MSC service thread 1-5) Using JTA UserTransaction: org.jboss.tm.usertx.client.Se
rverVMClientUserTransaction@307c44
15:46:00,548 INFO  [org.springframework.transaction.jta.JtaTransactionManager] (
MSC service thread 1-5) Using JTA TransactionManager: com.arjuna.ats.jbossatx.jt
a.TransactionManagerDelegate@a2f435
15:46:00,548 INFO  [org.springframework.transaction.jta.JtaTransactionManager] (
MSC service thread 1-5) Using JTA TransactionSynchronizationRegistry: com.arjuna
.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple
@4ef523
15:46:01,736 INFO  [org.hibernate.annotations.common.Version] (MSC service threa
d 1-5) HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
15:46:01,767 INFO  [org.hibernate.Version] (MSC service thread 1-5) HHH000412: H
ibernate Core {4.0.1.Final}
15:46:01,783 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-5) HHH0
00206: hibernate.properties not found
15:46:01,783 INFO  [org.hibernate.cfg.Environment] (MSC service thread 1-5) HHH0
00021: Bytecode provider name : javassist
15:46:06,142 INFO  [org.hibernate.dialect.Dialect] (MSC service thread 1-5) HHH0
00400: Using dialect: org.hibernate.dialect.SQLServer2008Dialect
15:46:06,189 INFO  [org.hibernate.engine.transaction.internal.TransactionFactory
Initiator] (MSC service thread 1-5) HHH000399: Using default transaction strateg
y (direct JDBC transactions)
15:46:06,205 INFO  [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (M
SC service thread 1-5) HHH000397: Using ASTQueryTranslatorFactory
15:46:06,361 INFO  [org.hibernate.validator.util.Version] (MSC service thread 1-
5) Hibernate Validator 4.2.0.Final

Не уверен, что это причина... если да, то что мне нужно делать тогда?

=========================

[Обновление - 20130425]

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

Я все еще ценю, если кто-то может просветить меня, что может быть возможной причиной.

[Обновление - 20130426]

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

Кто-нибудь пробовал настроить глобальную поддержку транзакций JTA с помощью JBoss7.1.1.final+Spring3.1.1.RELEASE+Hibernate4.0.1.Final+MS SQL server 2008?

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
  <datasources>
    <xa-datasource jta="true" jndi-name="java:jboss/datasources/CSLiteDS" pool-name="CSLiteDS" enabled="true" use-java-context="true">
      <xa-datasource-property name="ServerName">{someServerName}</xa-datasource-property>
      <xa-datasource-property name="PortNumber">{somePortNo}</xa-datasource-property>
      <xa-datasource-property name="DatabaseName">{someDatabaseName}</xa-datasource-property>
      <xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>
      <driver>sqljdbc</driver>
      <security>
        <user-name>{someUserName}</user-name>
        <password>{somePassword}</password>
      </security>
    </xa-datasource>
    <xa-datasource jta="true" jndi-name="java:jboss/datasources/CRDDataSource" pool-name="CRDDataSource" enabled="true" use-java-context="true">
      <xa-datasource-property name="ServerName">{someServerName}</xa-datasource-property>
      <xa-datasource-property name="PortNumber">{somePortNo}</xa-datasource-property>
      <xa-datasource-property name="DatabaseName">{someDatabaseName}</xa-datasource-property>
      <xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>
      <driver>sqljdbc</driver>
      <security>
        <user-name>{someUserName}</user-name>
        <password>{somePassword}</password>
      </security>
    </xa-datasource>
    <drivers>
      <driver name="sqljdbc" module="com.microsoft.sqlserver.jdbc">
        <driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
        <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerXADataSource</xa-datasource-class>
      </driver>
    </drivers>
  </datasources>
</subsystem>

person cjc    schedule 25.10.2012    source источник


Ответы (2)


Я решил эту проблему, установив в hibernate sessionfactory атрибут jtaTransactionManager

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="packagesToScan" value="com.foo" />
        <property name="dataSource" ref="myDataSource" />
        <property name="jtaTransactionManager" ref="transactionManager" />
...
</bean>
person Feli    schedule 06.11.2012
comment
Я не думаю, что это решение для меня. Когда я запускаю APIDOC для LocalSessionFactoryBean, для jtaTransactionManager нет свойства. - person cjc; 25.04.2013

Просто краткое сканирование, я думаю, вам нужно определить свойство hibernate.transaction.manager_lookup_class + hibernate.transaction.factory_class или hibernate.transaction.jta.platform в свойствах Hibernate.

person Adrian Shum    schedule 26.10.2012
comment
Привет @adrian-shum, я попробовал, как ты советуешь. Но тоже не получилось. Я обновил результат теста в пост. Как вы думаете, я что-то пропустил на стороне JBoss? - person cjc; 01.11.2012
comment
честно говоря я не знаком с JBoss. Мой ответ основан на моем опыте работы с другим контейнером (Websphere/Weblogic). Обычно нам не нужно много делать на стороне контейнера. кстати, вы уверены, что JNDI - это java:jboss/TransactionManager вместо java:TransactionManager? Есть ли специальный журнал ошибок? Я никогда раньше не использовал current_session_context_class (хотя в основном настраиваю JPA+Hibernate). Просто некоторые направления, которые вы можете попробовать... - person Adrian Shum; 01.11.2012
comment
Что ж, я не видел в журнале никаких исключений NameNotFoundException или каких-либо других связанных исключений. Однако, что интересно, я не видел никакого журнала, показывающего привязку диспетчера транзакций к JNDI, который у меня есть, и он всегда говорит, что будет использовать HHH000399: Использование стратегии транзакций по умолчанию (прямые транзакции JDBC) (я обновил свой пост на соответствующий журнал). Не уверен, что это причина... если да, то что мне нужно делать тогда? - person cjc; 01.11.2012