0

我正在尝试在我的 Spring 应用程序中配置Atomikos 。我在用:

  • Atomikos 3.7.1 (TransactionsEssentials)
  • 春天 3.0.2
  • Tibco EMS 5.1

有人可以给我使用 JNDI for 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
4

2 回答 2

1

这个答案对于OP来说为时已晚,但为了后代:

您想要的类是 com.tibco.tibjms.TibjmsXAConnectionFactory。

于 2014-03-17T20:35:38.097 回答
0

似乎在类中,com.atomikos.jms.AtomikosConnectionFactoryBean您有一个名为xaConnectionFactory其类型(或其 getter 返回类型)的字段为javax.jms.XAConnectionFactory. 但是,在 Spring 配置文件中,您将该字段配置为使用类型为com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory.

显然com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory不能转换为javax.jms.XAConnectionFactory.

于 2012-04-24T06:48:32.897 回答