2013-03-21 10 views
5

Ich versuche, eine Verbindung mit einer MQ-Verbindungsfactory herzustellen, die in WebSphere Server 7.0 definiert ist.Jndi-Suche der MQ-Verbindungsfactory, die im Websphere-Anwendungsserver von Spring definiert wurde

Aber ich konnte nicht finden eine richtige configurfactory Schnittstelle für die MQ im Frühjahr zu definieren.

Wenn ich jedoch versuchte, die Verbindungsdetails in der Spring-Konfigurationsdatei fest zu codieren, kann ich mich mit dem Queue Manager verbinden.

Welche Schnittstelle/welches Format muss in Spring Beans verwendet werden, um die im Websphere-Anwendungsserver definierte MQ-Verbindungsfactory zu laden?

Arbeits-Code

<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> 

Nicht Working-Code

<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> 

wo WASQM die MQ-Verbindung Fabrik in Websphere definiert ist

Fehler mit dem Nicht-konform arbeiten

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 

Ich brauche Hilfe beim Ersetzen des nicht funktionierenden Codes durch einen richtigen Code. Spring - 3.0.5 IBM MQ und Web App-Server - 7.0

Antwort

4

richtigen Weg zu tun ist

  1. Erstellen Sie die Ressource in Warteschlangenverbindungsfactory in Websphere App Server (nicht in Verbindung Factory)
  2. Verwenden javax.jms.QueueConnectionFactory als Verbindungs ​​Fabrik im Frühjahr Config

    <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> 
    

Diese page gab mir den Hinweis.