You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@servicemix.apache.org by jrrosel <je...@landsend.com> on 2009/10/21 17:14:58 UTC

JMSXUserID invalid message property

I'm currently trying to work with Websphere MQ. (JMS endoints, camel router)
I am having a problem sending messages back out from requests that come from
messages that originate outside of servicemix. I appear to be able to read
the message in fine however I get the following exception when attempting to
send back out. javax.jms.MessageFormatException: MQJMS1058: Invalid message
property name: JMSXUserID. Has anyone else run into this? This simple
example attempts to read the message in and just send it back out to another
queue. 

JMS xbean:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
       xmlns:tutorial="urn:org:apache:servicemix:tutorial:camel"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:bean="http://servicemix.apache.org/bean/1.0">

    <jms:provider service="tutorial:jms"
              endpoint="provider"
              destinationName="JRR.TESTOUT.Q"
              connectionFactory="#mqConnectionFactory" 
              marshaler="#producerMarshaler"
              />
              
    <jms:consumer service="tutorial:jms"
              endpoint="consumer"
              destinationName="JRR.TESTIN.Q"
              connectionFactory="#mqConnectionFactory" 
              marshaler="#consumerMarshaler" 
              targetService="tutorial:jms"
	      targetEndpoint="consumer" />

  <bean id="producerMarshaler" 
	class="org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler"> 
	<property name="needJavaIdentifiers" value="true" /> 
  </bean> 
  <bean id="consumerMarshaler"
class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
   <property name="needJavaIdentifiers" value="true" />
  </bean>
  
  <bean id="mqConnectionFactory"
class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <!-- <property name="transportType" value="1" /> -->
    <property name="transportType" >
	   <util:constant
static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" />
    </property> 
    <property name="queueManager" value="####" />
    <property name="hostName" value="#### />
    <property name="channel" value="JAVA.CHANNEL" />
    <property name="port" value="1414" />
  </bean>
</beans>

Camel Router:
public class MyRouteBuilder extends RouteBuilder {

    public void configure() {
    
from("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:consumer")  
    	    .to("log:tutorial-consumer")                                          
    	   
.to("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:provider");
    }
}
-- 
View this message in context: http://www.nabble.com/JMSXUserID-invalid-message-property-tp25994484p25994484.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.


Re: JMSXUserID invalid message property

Posted by Dave Stanley <ds...@gmail.com>.
Websphere MQ doesn't like the "JMSXUserID". I think you need to remove
the JMSXUserID from the jms header before sending the message with
your provider. You might be able to do this by plugging in your own
provider marshaller.

Hope this helps
/Dave


On Wed, Oct 21, 2009 at 11:14 AM, jrrosel <je...@landsend.com> wrote:
>
> I'm currently trying to work with Websphere MQ. (JMS endoints, camel router)
> I am having a problem sending messages back out from requests that come from
> messages that originate outside of servicemix. I appear to be able to read
> the message in fine however I get the following exception when attempting to
> send back out. javax.jms.MessageFormatException: MQJMS1058: Invalid message
> property name: JMSXUserID. Has anyone else run into this? This simple
> example attempts to read the message in and just send it back out to another
> queue.
>
> JMS xbean:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
>       xmlns:tutorial="urn:org:apache:servicemix:tutorial:camel"
>       xmlns:util="http://www.springframework.org/schema/util"
>       xmlns:bean="http://servicemix.apache.org/bean/1.0">
>
>    <jms:provider service="tutorial:jms"
>              endpoint="provider"
>              destinationName="JRR.TESTOUT.Q"
>              connectionFactory="#mqConnectionFactory"
>              marshaler="#producerMarshaler"
>              />
>
>    <jms:consumer service="tutorial:jms"
>              endpoint="consumer"
>              destinationName="JRR.TESTIN.Q"
>              connectionFactory="#mqConnectionFactory"
>              marshaler="#consumerMarshaler"
>              targetService="tutorial:jms"
>              targetEndpoint="consumer" />
>
>  <bean id="producerMarshaler"
>        class="org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler">
>        <property name="needJavaIdentifiers" value="true" />
>  </bean>
>  <bean id="consumerMarshaler"
> class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
>   <property name="needJavaIdentifiers" value="true" />
>  </bean>
>
>  <bean id="mqConnectionFactory"
> class="com.ibm.mq.jms.MQQueueConnectionFactory">
>    <!-- <property name="transportType" value="1" /> -->
>    <property name="transportType" >
>           <util:constant
> static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" />
>    </property>
>    <property name="queueManager" value="####" />
>    <property name="hostName" value="#### />
>    <property name="channel" value="JAVA.CHANNEL" />
>    <property name="port" value="1414" />
>  </bean>
> </beans>
>
> Camel Router:
> public class MyRouteBuilder extends RouteBuilder {
>
>    public void configure() {
>
> from("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:consumer")
>            .to("log:tutorial-consumer")
>
> .to("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:provider");
>    }
> }
> --
> View this message in context: http://www.nabble.com/JMSXUserID-invalid-message-property-tp25994484p25994484.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.
>
>

Re: JMSXUserID invalid message property

Posted by Scott Ford <sc...@corelinksolutions.com>.
We had this same problem.  You can weed out properties you don't care about
by blacklisting them in your marshallers.  We added the propertyBlackList
property to the consumer marshaller.  That way the undesired properties are
left off from the very beginning.  I included our marshaler bean below:

<bean id="marshaler"
class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
        <property name="propertyBlackList" >
            <list>
                <value>JMSXUserID</value>
                <value>JMSXAppID</value>
                <value>JMSXDeliveryCount</value>
                <value>Content-Type</value>
            </list>
        </property>
</bean>

Hopefully this will work for you as well.



jrrosel wrote:
> 
> I'm currently trying to work with Websphere MQ. (JMS endoints, camel
> router) I am having a problem sending messages back out from requests that
> come from messages that originate outside of servicemix. I appear to be
> able to read the message in fine however I get the following exception
> when attempting to send back out. javax.jms.MessageFormatException:
> MQJMS1058: Invalid message property name: JMSXUserID. Has anyone else run
> into this? This simple example attempts to read the message in and just
> send it back out to another queue. 
> 
> JMS xbean:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
>        xmlns:tutorial="urn:org:apache:servicemix:tutorial:camel"
>        xmlns:util="http://www.springframework.org/schema/util"
>        xmlns:bean="http://servicemix.apache.org/bean/1.0">
> 
>     <jms:provider service="tutorial:jms"
>               endpoint="provider"
>               destinationName="JRR.TESTOUT.Q"
>               connectionFactory="#mqConnectionFactory" 
>               marshaler="#producerMarshaler"
>               />
>               
>     <jms:consumer service="tutorial:jms"
>               endpoint="consumer"
>               destinationName="JRR.TESTIN.Q"
>               connectionFactory="#mqConnectionFactory" 
>               marshaler="#consumerMarshaler" 
>               targetService="tutorial:jms"
> 	      targetEndpoint="consumer" />
> 
>   <bean id="producerMarshaler" 
> 	class="org.apache.servicemix.jms.endpoints.DefaultProviderMarshaler"> 
> 	<property name="needJavaIdentifiers" value="true" /> 
>   </bean> 
>   <bean id="consumerMarshaler"
> class="org.apache.servicemix.jms.endpoints.DefaultConsumerMarshaler">
>    <property name="needJavaIdentifiers" value="true" />
>   </bean>
>   
>   <bean id="mqConnectionFactory"
> class="com.ibm.mq.jms.MQQueueConnectionFactory">
>     <!-- <property name="transportType" value="1" /> -->
>     <property name="transportType" >
> 	   <util:constant
> static-field="com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP" />
>     </property> 
>     <property name="queueManager" value="####" />
>     <property name="hostName" value="#### />
>     <property name="channel" value="JAVA.CHANNEL" />
>     <property name="port" value="1414" />
>   </bean>
> </beans>
> 
> Camel Router:
> public class MyRouteBuilder extends RouteBuilder {
> 
>     public void configure() {
>     
> from("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:consumer")  
>     	    .to("log:tutorial-consumer")                                          
>     	   
> .to("jbi:endpoint:urn:org:apache:servicemix:tutorial:camel:jms:provider");
>     }
> }
> 

-- 
View this message in context: http://www.nabble.com/JMSXUserID-invalid-message-property-tp25994484p26031415.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.