Невозможно использовать Websphere WebSphereUowTransactionManager с Spring 3.0 на WAS 7.0 - PullRequest
2 голосов
/ 02 февраля 2012

Мы пытаемся перейти с Spring 1.2.8 на Spring 3.0 Однако когда мы пытаемся настроить txManager для Websphere, я всегда получаю исключение приведения класса. Мы попытались на основе примера, предоставленного 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)

Я вижу, что класс org.springframework.transaction.jta.WebSphereUowTransactionManager Предоставленный для Websphere не реализует javax.transaction.TransactionManager где-либо в иерархии.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 18 февраля 2012

Я получил это работает.В дополнение к вышеупомянутым настройкам гибернации вот что я сделал.

    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.Надеюсь это поможет.

2 голосов
/ 02 февраля 2012

При использовании Spring вам обычно не нужно использовать javax.transaction.TransactionManager напрямую.

Вместо этого используйте подходы управления транзакциями, предоставленные Spring, см. 10.Управление транзакциями .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...