To configure a provider endpoint do the following:
Decide what type of provider endpoint to use.
See Types of providers.
Specify the name of the service for which this endpoint is acting as a proxy.
This is specified using the
service
attribute.Tip If you are using a SOAP provider 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
endpoint
attribute.Tip If you are using a SOAP provider 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
connectionFactory
attribute. TheconnectionFactory
attribute'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 theconnectionFactory
attribute 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.
If you are using a JMS SOAP provider, specify the location of the WSDL defining the message exchange using the
wsdl
attribute.If your JMS destination is a topic, set the
pubSubDomaim
attribute totrue
.If your endpoint is interacting with a broker that only supports JMS 1.0.2, set the
jms102
attribute totrue
.
A provider endpoint chooses the destination to use for sending messages with the following algorithm:
If you provided a custom
DestinationChooser
implementation, the endpoint will use that to choose it's endpoint.For more information about providing custom
DestinationChooser
implementations see Using a Custom Destination Chooser.If you did not provide a custom
DestinationChooser
implementation, the endpoint will use its defaultDestinationChooser
implementation to choose an endpoint.The default destination chooser checks the message exchange received from the NMR for a DESTINATION_KEY property. If the message exchange has that property set, it returns that destination.
If the destination chooser does not return a destination, the endpoint will check to see if you configured the destination explicitly.
You configure a destination using a Spring bean. The recommend way to configure the destination is to configure the bean separately and refer the bean using the endpoint's
destination
attribute as shown in Example 4.1. You can also add the bean directly to the endpoint by wrapping it in ajms:destination
child element.Example 4.1. Configuring a Provider's Destination
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" ... > ... <jms:provider service="my:widgetService" endpoint="jbiWidget" destination="#widgetQueue" connectionFactory="#connectionFactory" /> ... <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 the destination chooser does not return a destination and you did not explicitly configure a destination, the endpoint will use the value of the
destinationName
attribute to choose its destination.The
destinationName
attribute takes a string that is used as the name of the destination to use. 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 to resolve the JMS destination.Note You can override the binding component's default behavior by providing a custom
DestinationResolver
implementation. See Using a Custom Destination Resolver.
Example 4.2 shows the basic configuration for a plain JMS provider endpoint.
Example 4.2. Basic Configuration for a Generic Provider Endpoint
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" ... > ... <jms:provider service="my:widgetService" endpoint="jbiWidget" destinationName="widgetQueue" connectionFactory="#connectionFactory" /> ... </beans>
Example 4.3 shows the basic configuration for a SOAP JMS provider endpoint.
Example 4.3. Basic Configuration for a SOAP Provider Endpoint
<beans xmlns:jms="http://servicemix.apache.org/jms/1.0" ... > ... <jms:soap-provider wsdl="classpath:widgets.wsdl" destinationName="widgetQueue" connectionFactory="#connectionFactory" /> ... </beans>