zu senden, verwende ich Spring jms, um eine Verbindung mit Websphere MQ herzustellen. Ich versuche, mich durch localhost zu verbinden, nicht jndi Info gerade verwendend.Die Vergleichsmethode verletzt ihren allgemeinen Vertrag! Beim Versuch, eine Nachricht an die 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
Im Hauptverfahren:
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>
Ich erhalte eine Fehlermeldung,
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)
, die auf der Leitung kommt
jmsTemplate.send(new MessageCreator() {
Ich bin nicht in der Lage zu Websphere MQ zu verbinden. Bitte geben Sie an, wo ein Fehler im Code liegt.
Sie haben den Komparator nicht veröffentlicht, was das genaue Problem ist. Höchstwahrscheinlich ist es nicht transitiv. – chrylis
Hallo Chrysis, ich bin Anfänger in Websphere mq Verbindung. Ich benutze nur so viele Dateien. extra habe ich pom.xml. Muss ich eine zusätzliche Datei hinzufügen oder fehlt mir etwas? – AIM
Hat jemand die Ursache des Problems gefunden? – AIM