JMS consumer endpoints specify the type of messages they use. JMS consumer endpoint
can use either a JMS ByteMessage
or a JMS
TextMessage
.
When using an ByteMessage
the consumer endpoint uses a
byte[] as the method for storing data into and retrieving data from the JMS
message body. When messages are sent, the message data, including any formating
information, is packaged into a byte[] and placed into the message body
before it is placed on the wire. When messages are received, the consumer endpoint will
attempt to unmarshall the data stored in the message body as if it were packed in a
byte[].
When using a TextMessage
, the consumer endpoint uses a string
as the method for storing and retrieving data from the message body. When messages are
sent, the message information, including any format-specific information, is converted
into a string and placed into the JMS message body. When messages are received the
consumer endpoint will attempt to unmarshall the data stored in the JMS message body as
if it were packed into a string.
When native JMS applications interact with Fuse Services Framework consumers, the JMS application
is responsible for interpreting the message and the formatting information. For example,
if the Fuse Services Framework contract specifies that the binding used for a JMS endpoint is
SOAP, and the messages are packaged as TextMessage
, the receiving
JMS application will get a text message containing all of the SOAP envelope
information.
The type of messages accepted by a JMS consumer endpoint is configured using the
optional jms:client
element. The
jms:client
element is a child of the WSDL
port
element and has one attribute:
Example 4.6 shows the WSDL for configuring a JMS consumer endpoint.
Example 4.6. WSDL for a JMS consumer endpoint
<service name="JMSService"> <port binding="tns:Greeter_SOAPBinding" name="SoapPort"> <jms:address jndiConnectionFactoryName="ConnectionFactory" jndiDestinationName="dynamicQueues/test.Celtix.jmstransport" > <jms:JMSNamingProperty name="java.naming.factory.initial" value="org.activemq.jndi.ActiveMQInitialContextFactory" /> <jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61616" /> </jms:address> <jms:client messageType="binary" /> </port> </service>