|
项目部署在Jboss下
jboss下配置的数据源如下:
<local-tx-datasource>
<jndi-name>misOracleDS</jndi-name>
persistence.xml配置如下:
。。。。。。。。。。。。。。
<persistence-unit name="misUnit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>java:misOracleDS</non-jta-data-source>
。。。。。。。。。。。。。。。。。。。。。。。
因为没有JTA事务的需求,所以就配置了RESOURCE_LOCAL和non-jta-data-source
Spring的配置如下:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
</bean>
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:misOracleDS</value>
</property>
</bean>
<!-- 采用Spring的事务管理机制管理EntityManagerFactory -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/><!-- 注入管理器 -->
</bean>
<!--采用注解方式声明事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
想通过上面的配置,利用jboss创建的数据源来进行RESOURCE_LOCAL的本地事务管理
但是部署的时候出错:
Failed to convert property value of type [org.jboss.resource.adapter.jdbc.WrapperDataSource] to required type [javax.sql.DataSource] for property 'dataSource'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [org.jboss.resource.adapter.jdbc.WrapperDataSource] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy found
大意是说:我们通过JNDI的方式java:misOracleDS方式的得到的数据源被jboss包装过了不在是javax.sql.DataSource
为了便于管理数据源,我又不想用下面的方式去创建javax.sql.DataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${driverClassName}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
1)请问大家,怎么样利用jboss配置好的数据源去实现本地事务管理
2)JTA的事务管理我配置好了,这里同时有个疑问,我如果配的JTA的事务,但是系统只需要本地事务,这是不是会事务过重,也消耗系统的一点性能(毕竟JTA有个2此提交协议)
请大家重点帮忙解决问题1);
疑问2)欢迎大家一起探讨下 |
|