6

Websphere appServer7.0で定義されたMQ接続ファクトリに接続しようとしています。

しかし、Springで定義するMQの適切なconnectionfactoryインターフェースを見つけることができませんでした。

ただし、Spring構成ファイルに接続の詳細をハードコーディングしようとすると、キューマネージャーに接続できます。

Websphere applサーバーで定義されたMQ接続ファクトリをロードするためにSpringBeanで使用する適切なインターフェース/フォーマットは何ですか?

ワーキングコード

<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName">
        <value>127.0.0.1</value>
    </property>
    <property name="port">
        <value>1414</value>
    </property>
    <property name="queueManager">
        <value>MYQM</value>
    </property>
    <property name="transportType">
        <value>1</value>
    </property>
</bean>

コードが機能しない

<bean id="mqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jms/WASQM"/>
    <property name="lookupOnStartup" value="false"/>
    <property name="cache" value="true" />
    <property name="proxyInterface"  value="com.ibm.mq.jms.MQQueueConnectionFactoryFactory" />
</bean>

ここで、WASQMは、Websphereで定義されたMQ接続ファクトリーです。

動作しないコードのエラー

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mqConnectionFactory' defined in ServletContext resource [/WEB-INF/config/config-mq.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: [com.ibm.mq.jms.MQQueueConnectionFactoryFactory] is not an interface
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
Caused by: java.lang.IllegalArgumentException: [com.ibm.mq.jms.MQQueueConnectionFactoryFactory] is not an interface

動作しないコードを正しいコードに置き換えるのに助けが必要です。Spring-3.0.5IBMMQおよびWebAppServers-7.0

4

1 に答える 1

4

正しいやり方は

  1. Websphere App Server の Queue Connection Factory にリソースを作成します (Connection Factory ではありません)。
  2. spring config で接続ファクトリーとして javax.jms.QueueConnectionFactory を使用する

    <bean id="mqConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
       <property name="jndiName" value="WASQM"/>
       <property name="lookupOnStartup" value="false"/>
       <property name="cache" value="true" />
       <property name="proxyInterface"  value="javax.jms.QueueConnectionFactory" />
    </bean>
    

このページがヒントになりました。

于 2013-03-22T10:41:41.190 に答える