Мы пытаемся настроить приложение Spring для работы с транзакциями JTA. Это не похоже на неудачу, но все, что мы пробовали, просто делает выбор и игнорирует наши операции настойчивости.Невозможно сделать работу JTA на jboss AS7.1 с пружиной 3.1
Как вы можете видеть в следующих журналах, даже несмотря на то сохранить заявление перспективы нет вставки заявления, ни исключение, ни с чем не журналы ошибок/предупреждения
server.log
DEBUG [xxxx.xxxx.persistence] (http--0.0.0.0-8080-1) execute $Proxy363.save([email protected])
DEBUG [org.springframework.data.repository.core.support.TransactionalRepositoryProxyPostProcessor$CustomAnnotationTransactionAttributeSource] (http--0.0.0.0-8080-1) Adding transactional method 'save' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] (http--0.0.0.0-8080-1) Returning cached instance of singleton bean 'transactionManager'
DEBUG [org.springframework.transaction.jta.JtaTransactionManager] (http--0.0.0.0-8080-1) Participating in existing transaction
INFO [xxxx.xxxx.impl.BpmnUserBusinessImpl] (http--0.0.0.0-8080-1) Last Assigned Time Updated to *******, Thu Sep 06 15:48:48 ICT 2012
Это похоже, что сервер приложений считает, что все пошло правильно. Если вы проверили таблицу, не было внесено никаких изменений или изменений.
Источник данных, который мы намерены использовать с весенним приложением, успешно используется с транзакциями JTA при помощи военного приложения Java EE, работающего на том же сервере приложений.
Поскольку мы понятия не имеем, где может быть проблема, я бы хотел поставить все это в полном контексте.
- пружина 3.1.2-RELEASE
- спящий режим 4.1.5.Final
- весенне-данных JPA 1.1.1.Final
- апаша ось 1.4
- JBoss AS7.1
- DB: oracle 10g
Мы пробовали все виды сумасшедшей конфигурации, чтобы попытаться заставить его работать, поэтому я просто скопирую h это самый простой.
standalone.xml
<datasource jta="true" jndi-name="java:jboss/datasources/EngineDS" pool-name="EngineDS" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:oracle:thin:@server:port:****</connection-url>
<driver>oracle</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>100</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>****</user-name>
<password>****</password>
</security>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle.ojdbc6">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
web.xml
[...]
<resource-ref id="DS">
<res-ref-name>EngineDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
<mapped-name>java:jboss/datasources/EngineDS</mapped-name>
</resource-ref>
[...]
весна-JPA-config.xml
<jpa:repositories base-package="whatever.core.repositories" />
<jee:jndi-lookup id="dataSource" jndi-name="EngineDS" cache="true" resource-ref="true" expected-type="javax.sql.DataSource"/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="whatever.core.entities" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="${hibernate.show_sql}" />
<property name="generateDdl" value="${jpa.generateDdl}" />
<property name="databasePlatform" value="${jpa.dialect}" />
</bean>
</property>
</bean>
<tx:annotation-driven />
<tx:jta-transaction-manager />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<bean class="org.springframework.orm.hibernate4.HibernateExceptionTranslator"/>
Мы сделали в прошлом JBoss AS5/Spring приложений 3.0 для работы с транзакциями JTA, так что это не так, как в первый раз, когда я это делаю, и мы искали все возможные варианты gs и проекты с открытым исходным кодом, которые я мог найти. Но все, что кажется гладким для всех, похоже, игнорируется в моем приложении. Я уверен, что должно быть, что мы чего-то действительно глупым, но мы уже пробовали до 70+ разных конфигураций, и ни одна из них не выглядит простой вставкой, которая в противном случае работает, когда вы не пытаетесь использовать JTA.
(Тот факт, что мы используем ось 1.4, может быть уместным или нет, но я хотел бы сказать, потому что наше приложение запускает только действия после вызова веб-службы). На этом этапе мы начинаем верить в конфигурацию паранормальной активности ...
Любые подсказки кого-нибудь?