4.2. Basic Configuration
Procedure
To configure a provider endpoint do the following:
- Decide what type of provider endpoint to use.
- Specify the name of the service for which this endpoint is acting as a proxy.This is specified using the
service
attribute.TipIf 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.TipIf 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 Chapter 2, Configuring the Connection Factory. - Specify the destination onto which the endpoint will place messages.For more information see the section called “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
.
Configuring a destination
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 customDestinationChooser
implementations see Section 7.1, “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, “Configuring a Provider's Destination”. 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.ThedestinationName
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.NoteYou can override the binding component's default behavior by providing a customDestinationResolver
implementation. See Section 7.2, “Using a Custom Destination Resolver”.
Examples
Example 4.2, “Basic Configuration for a Generic Provider Endpoint” 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, “Basic Configuration for a SOAP Provider Endpoint” 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>