2016-07-26 68 views
-1

我正在使用spring jms連接到Websphere MQ。我正試圖通過本地主機連接,而不是現在使用jndi信息。比較方法違反其總合同!當試圖發送消息到Websphere mq

Connection names (all as an example): hostname: <Websphere ip address> http://localhost:9043 
given hostname 12.123.0.12 

In Resources->JMS->Queue connection Factories 
name: MQDemo 
JNDI name: MQDemo 

2 Queues: 
name: MQ.T11.UPDATE.REQUEST 
JNDI name: jms/MQ.T11.UPDATE.REQUEST 

name: MQ.T11.INQUIRY.REPLY 
JNDI name: jms/MQ.T11.UPDATE.REQUEST 

DemoMain.java

在主要方法:

ApplicationContext ctx = new ClassPathXmlApplicationContext("app-context.xml"); 
    // get bean from context 
    JmsMessageSender jmsMessageSender = (JmsMessageSender)ctx.getBean("jmsMessageSender"); 
    // send to default destination 
     jmsMessageSender.send(); 

JMSMessageSender.java

package name: com.java.geek 

@Autowired 
    private JmsTemplate jmsTemplate; 


    /** 
    * send text to default destination 
    * @param text 
    */ 
    @Cacheable("message") 
    public void send() { 
     System.out.println("in send"); 
     jmsTemplate.send(new MessageCreator() { 
     @Override 
     public Message createMessage(Session session)throws JMSException { 

      System.out.println("in create message"); 
     Message message = (Message) session.createTextMessage("Hello JMS"); 
     return message; 
     } 
     }); 

    } 

    public JmsTemplate getJmsTemplate() 
    { 
     return jmsTemplate; 
    } 

    public void setJmsTemplate(JmsTemplate jmsTemplate) 
    { 
     this.jmsTemplate = jmsTemplate; 
    } 

APP-context.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 


    <context:component-scan base-package="com.java.geek" /> 
<bean id="amqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
    <property name="hostName"> 
     <value>http://localhost:9043</value> 
    </property> 
    <property name="port"> 
     <value>1415</value> 
    </property> 
    <property name="queueManager"> 
     <value>MQDemo</value> 
    </property> 
    <property name="transportType"> 
     <value>1</value> 
    </property> 
</bean> 

    <!-- Pooled Spring connection factory --> 
    <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean" lazy-init="true"> 
     <property name="MQDemo" value="java:comp/env/jms/MQDemo" /> 
     <property name="lookupOnStartup" value="false"/> 
      <property name="cache" value="true" /> 
      <property name="proxyInterface" value="javax.jms.QueueConnectionFactory"/> 
     <constructor-arg ref="amqConnectionFactory" /> 
    </bean> 


    <!-- JmsTemplate Definition --> 
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> 
     <property name="connectionFactory"><ref bean="amqConnectionFactory" /> </property> 
     <property name="pubSubDomain"><value>false</value></property> 
     <!-- <property name="defaultDestination"><ref bean="senderQueue" /></property> --> 
    </bean> 

    <!-- ======================================================= --> 
    <!-- JMS Send, define default destination and JmsTemplate --> 
    <!-- ======================================================= --> 

    <!-- Default Destination Queue Definition --> 
    <bean id="senderQueue" class="com.ibm.mq.jms.MQQueue"> 
     <constructor-arg value="MQ.T11.UPDATE.REQUEST"/> 
    </bean> 
    <bean id="jmsMessageSender" class="com.java.geek.JmsMessageSender"> 
     <property name="jmsTemplate"><ref bean="JmsTemplate"/></property>  
    </bean> 

</beans> 

我得到一個錯誤,

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract! 
    at java.util.TimSort.mergeLo(TimSort.java:758) 
    at java.util.TimSort.mergeAt(TimSort.java:494) 
    at java.util.TimSort.mergeCollapse(TimSort.java:421) 
    at java.util.TimSort.sort(TimSort.java:225) 
    at java.util.TimSort.sort(TimSort.java:184) 
    at java.util.Arrays.sort(Arrays.java:670) 
    at com.ibm.mq.constants.MQConstants.getFields(MQConstants.java:277) 
    at com.ibm.mq.constants.MQConstants.lookup(MQConstants.java:204) 
    at com.ibm.mq.constants.MQConstants.lookup(MQConstants.java:264) 
    at com.ibm.mq.constants.MQConstants.lookup(MQConstants.java:254) 
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1862) 
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1144) 
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:337) 
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6772) 
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:6151) 
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:280) 
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6138) 
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115) 
    at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:198) 
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:185) 
    at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:481) 
    at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:566) 
    at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:557) 
    at com.java.geek.JmsMessageSender.send(JmsMessageSender.java:34) 
    at com.java.geek.DemoMain.main(DemoMain.java:20) 

它是在線路

jmsTemplate.send(new MessageCreator() { 

未來我無法連接到WebSphere MQ。請提出代碼中的錯誤。

+0

你沒有發佈比較,這是確切的問題。最有可能的是,它不是傳遞性的。 – chrylis

+0

嗨Chrylis,我是Websphere mq連接的新手。我只使用這麼多文件。額外我有pom.xml。我需要添加一些額外的文件還是有我缺少的東西? – AIM

+0

有沒有人找到問題的根源? – AIM

回答

相關問題