Проблемы интеграции Spring, Atomikos, Tibco EMS 5.1

Я пытаюсь настроить Atomikos в своем приложении Spring. Я использую:

  • Atomikos 3.7.1 (TransactionsEssentials)
  • Весна 3.0.2
  • Tibco EMS 5.1

Может ли кто-нибудь предоставить мне детали конфигурации фабрики соединений с использованием JNDI для JMS, а также детали конфигурации Tibco EMS?

Я пробовал следующее:

 <bean id="jmsTemplate2" class="org.springframework.jms.core.JmsTemplate" >
    <property name="connectionFactory" ref="amqConnectionFactory" />
    <property name="defaultDestination" ref="queue" />
    <property name="sessionTransacted" value="true"/>
    <property name="messageConverter" ref="messageConverter"></property>
</bean>


<bean id="amqConnectionFactory" class="com.atomikos.jms.AtomikosConnectionFactoryBean"    init-method="init">
    <property name="uniqueResourceName" value="XAEMS" />
    <property name="xaConnectionFactory" ref="connectionFactory" />
    <property name="poolSize" value="10" />
</bean>

<jee:jndi-lookup id="connectionFactory" jndi-name="emsConnectionFactory">
    <jee:environment>
        java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory
        java.naming.provider.url=tibjmsnaming://localhost:7222
    </jee:environment>
</jee:jndi-lookup> 

<jee:jndi-lookup id="queue" jndi-name="emsQueue">
    <jee:environment>
        java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory
        java.naming.provider.url=tibjmsnaming://localhost:7222
    </jee:environment>
</jee:jndi-lookup>

Но получите эту ошибку:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'amqConnectionFactory' defined in file [C:\springsource\vfabric-tc-server-developer-2.6.4.RELEASE\spring-insight-instance\wtpwebapps\iRebal-Backend-Poc-Web-Integration-Final-xa\WEB-INF\classes\META-INF\spring\batch\jobs\priority-queue.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory' to required type 'javax.jms.XAConnectionFactory' for property 'xaConnectionFactory'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory] to required type [javax.jms.XAConnectionFactory] for property 'xaConnectionFactory': no matching editors or conversion strategy found
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 39 more
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory' to required type 'javax.jms.XAConnectionFactory' for property 'xaConnectionFactory'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory] to required type [javax.jms.XAConnectionFactory] for property 'xaConnectionFactory': no matching editors or conversion strategy found
at org.springframework.beans.BeanWrapperImpl

person shashikanthb    schedule 24.04.2012    source источник


Ответы (2)


Этот ответ слишком поздно для OP, но для потомков:

Вам нужен класс com.tibco.tibjms.TibjmsXAConnectionFactory.

person Larry McQueary    schedule 17.03.2014

Кажется, что в классе com.atomikos.jms.AtomikosConnectionFactoryBean у вас есть поле с именем xaConnectionFactory, тип которого (или его возвращаемый тип получателя) - javax.jms.XAConnectionFactory. Однако в файле конфигурации Spring вы настроили это поле для установки экземпляра типа com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory.

Видимо com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory не конвертируется в javax.jms.XAConnectionFactory.

person yair    schedule 24.04.2012
comment
Верно. Я хочу знать, есть ли у tibco класс connectionFactory, реализующий интерфейс javax.jms.XAConnectionFactory. Мне удалось успешно протестировать его с помощью ActiveMQ. - person shashikanthb; 24.04.2012