To configure a generic consumer or a SOAP consumer do the following:
Decide what type of consumer endpoint to use.
Specify the name of the service for which this endpoint is acting as a proxy.
This is specified using the
serviceattribute.![[Tip]](imagesdb/tip.gif)
Tip If you are using a SOAP consumer and your WSDL file only has one service defined, you do not need to specify the service name.
Specify the name of the endpoint for which this endpoint is acting as a proxy.
This is specified using the
endpointattribute.![[Tip]](imagesdb/tip.gif)
Tip If you are using a SOAP consumer and your WSDL file only has one endpoint defined, you do not need to specify the endpoint name.
Specify the connection factory the endpoint will use.
The endpoint's connection factory is configured using the endpoint's
connectionFactoryattribute. TheconnectionFactoryattribute's value is a reference to the bean that configures the connection factory. For example, if the connection factory configuration bean is namedwidgetConnectionFactory, the value of theconnectionFactoryattribute would be#widgetConnectionFactory.For information on configuring a connection factory see Configuring the Connection Factory.
Specify the destination onto which the endpoint will place messages.
For more information see Configuring a destination.
Specify the ESB endpoint to which incoming messages are targeted.
For more information see Specifying the target endpoint.
If you are using a JMS SOAP consumer, specify the location of the WSDL defining the message exchange using the
wsdlattribute.If your JMS destination is a topic, set the
pubSubDomaimattribute totrue.If your endpoint is interacting with a broker that only supports JMS 1.0.2, set the
jms102attribute totrue.
A consumer endpoint chooses the destination to use for sending messages with the following algorithm:
The endpoint will check to see if you configured the destination explicitly.
You configure a destination using a Spring bean. You can add the bean directly to the endpoint by wrapping it in a
jms:destinationchild element. You can also configure the bean separately and refer the bean using the endpoint'sdestinationattribute as shown in Example 3.1.Example 3.1. Configuring a Consumer's Destination
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" ... > ... <jms:consumer service="my:widgetService" endpoint="jbiWidget" destination="#widgetQueue" ... /> ... <jee:jndi-lookup id="widgetQueue" jndi-name="my.widget.queue"> <jee:environment> java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory java.naming.provider.url=t3://localhost:7001 </jee:environment> </jee:jndi-lookup> ... </beans>If you did not explicitly configure a destination, the endpoint will use the value of the
destinationNameattribute to choose its destination.The value of the
destinationNameattribute is a string that will be used as the name for the JMS destination. The binding component's default behavior when you provide a destination name is to resolve the destination using the standard JMSSession.createTopic()andSession.createQueue()methods.![[Note]](imagesdb/note.gif)
Note You can override the binding component's default behavior by providing a custom
DestinationResolverimplementation. See Using a Custom Destination Resolver.
There are a number of attributes available for configuring the endpoint to which the generated messages are sent. The poller endpoint will determine the target endpoint in the following manner:
If you explicitly specify an endpoint using both the
targetServiceattribute and thetargetEndpointattribute, the ESB will use that endpoint.The
targetServiceattribute specifies the QName of a service deployed into the ESB. ThetargetEndpointattribute specifies the name of an endpoint deployed by the service specified by thetargetServiceattribute.If you only specify a value for the
targetServiceattribute, the ESB will attempt to find an appropriate endpoint on the specified service.If you do not specify a service name or an endpoint name, you must specify an the name of an interface that can accept the message using the
targetInterfaceattribute. The ESB will attempt to locate an endpoint that implements the specified interface and direct the messages to it.Interface names are specified as QNames. They correspond to the value of the
nameattribute of either a WSDL 1.1serviceTypeelement or a WSDL 2.0interfaceelement.
![]() | Important |
|---|---|
If you specify values for more than one of the target attributes, the consumer endpoint will use the most specific information. |
Example 3.2 shows the basic configuration for a plain JMS provider endpoint.
Example 3.2. Basic Configuration for a Generic Consumer Endpoint
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
... >
...
<jms:consumer service="my:widgetService"
endpoint="jbiWidget"
destinationName="widgetQueue"
connectionFactory="#connectionFactory"
targetService="my:targetService" />
...
</beans>Example 3.3 shows the basic configuration for a SOAP JMS provider endpoint.
Example 3.3. Basic Configuration for a SOAP Consumer Endpoint
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0"
... >
...
<jms:soap-consumer wsdl="classpath:widgets.wsdl"
destinationName="widgetQueue"
connectionFactory="#connectionFactory"
targetService="my:targetService" />
...
</beans>





![[Important]](imagesdb/important.gif)


