[英]Can not use Websphere WebSphereUowTransactionManager with Spring 3.0 on WAS 7.0
我们试图从Spring 1.2.8升级到Spring 3.0,但是当我们尝试为Websphere配置txManager时,总是会遇到类强制转换异常。 我们基于IBM提供的无效示例进行了尝试。 我正在使用WAS 7.0,Spring.3.0.5和hibernate.3.6.jars ...这是Spring配置:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="ewpDataSource" />
<property name="mappingResources">
<list>
<value>com/fme/example/model/Person.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.default_schema">ORIG</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
<prop key="hibernate.use_sql_comments">true</prop>
<prop key="hibernate.transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</prop>
<prop key="hibernate.transaction.manager_lookup_class">
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
</prop>
</props>
</property>
</bean>
<!-- Our Data source --->
<bean id="ewpDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/TOI_ORIG" />
</bean>
<!--- Get the Web sphere Specific TX manager -->
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
</beans>
我阅读了这篇文章,并尝试完全按照规定进行。 http://www.ibm.com/developerworks/websphere/techjournal/0609_alcott/0609_alcott.html并且还尝试了http://robertmaldon.blogspot.com/2006/09/using-websphere-transaction-manager.html
但是我们得到了这个异常。
Caused by: java.lang.IllegalStateException: Cannot convert value of type [org.springframework.transaction.jta.WebSphereUowTransactionManager] to required type [javax.transaction.TransactionManager] for property 'transactionManager': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:447)
我看到为Websphere提供的org.springframework.transaction.jta.WebSphereUowTransactionManager类没有在层次结构中的任何地方实现javax.transaction.TransactionManager。
任何想法?
我知道了 除了上面的休眠设置,这也是我所做的。
The object of type WebSphereUowTransactionManager is not an instance of
javax.transaction.TransactionManager
but there is superclass method inside WebSphereUowTransactionManager
called getTransactionManager()
this returns object of type javax.transaction.TransactionManager
<bean id="wasUOWTxnManagerObj"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
<!--
Now call get getTransactionManager on WebSphereUowTransactionManager
object.
-->
<bean id="tranSactionManager"
class="javax.transaction.TransactionManager"
factory-bean="wasUOWTxnManagerObj"
factory-method="getTransactionManager">
</bean>
现在,通过此更改,您可以使用WebSphereUowTransactionManager。 希望这可以帮助。
使用Spring时,通常不需要直接使用javax.transaction.TransactionManager
。
请改用Spring提供的事务管理方法,请参见10.事务管理 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.