Hi Gary,
I try to do, what you suggest, but I thing my knowing not enough.
My new config:
Code:
<bean id="mqConnFact" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostName" value="${MQ_HOST}" />
<property name="port" value="${MQ_PORT}" />
<property name="queueManager" value="${MQ_QUEUE_MANAGGER}" />
<property name="CCSID" value="${MQ_CCSID}" />
<property name="channel" value="${MQ_CHANNEL}" />
<property name="transportType">
<util:constant static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" />
</property>
</bean>
<bean id="jmsTrnManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="mqConnFact" />
<property name="" />
</bean>
<int:annotation-config />
<bean id="inputDestination" class="com.ibm.mq.jms.MQQueue">
<constructor-arg value="${MQ_OUTPUT_QUEUE}" />
</bean>
<!-- JMS Queue Template -->
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsQueueConnectionFactory" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="pubSubDomain" value="false" />
<property name="receiveTimeout" value="20000" />
<property name="sessionTransacted" value="true"/>
</bean>
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="mqConnFact" />
<property name="sessionTransacted" value="true" />
<property name="transactionManager" ref="jmsTrnManager" />
<property name="destination" ref="inputDestination" />
<property name="messageListener" ref="imputXMLByTemplate" />
<property name="autoStartup" value="true" />
</bean>
The listener proc:
Code:
@Transactional(value="jmsTrnManager", rollbackFor={Exception.class})
public void onMessage(javax.jms.Message message)
{
Message<Object> convertedMessage = null;
try
{
Map<String, Object> mappedHeaders = this.headerMapper.toHeaders(message);
MessageConverter converter = this.jmsTemplate.getMessageConverter();
Object convertedObject = converter.fromMessage(message);
MessageBuilder<Object> builder;
builder = (convertedObject instanceof Message) ? MessageBuilder.fromMessage((Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject);
convertedMessage = builder.copyHeadersIfAbsent(mappedHeaders).build();
MessagingTemplate mt = new MessagingTemplate();
mt.send(inputChannel, convertedMessage);
}
catch (Exception e)
{
e.printStackTrace();
}
}
But it is not working.
Could you send me an example?
Thank you!
Feri