Ce contenu n'est pas disponible dans la langue sélectionnée.
9.4. Operation Selectors
9.4.1. Operation Selector Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
Use the
OperationSelector to determine which service operation should be invoked for the message exchange.
9.4.2. Types of Operation Selectors Copier lienLien copié sur presse-papiers!
Copier lienLien copié sur presse-papiers!
SwitchYard provides the following options for Operation Selectors.
Important
Operation selectors are used in combination with a service binding to help SwitchYard determine the target operation for a service invocation. When a service only has a single operation, an operation selector should not be used. If an operation selector is used for a service with a single operation, failure to assign an operation in the operation selector will not result in an error. If an operation selector fails to assign an operation for a service with multiple operations an error is reported.
- Static Operation Selector
- You can specify an operation name in the configuration. Here is what a Static Operation Selector configuration looks like:
<hornetq:binding.hornetq> <swyd:operationSelector operationName="greet" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </hornetq:binding.hornetq><hornetq:binding.hornetq> <swyd:operationSelector operationName="greet" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </hornetq:binding.hornetq>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - XPath Operation Selector
- You can specify an XPath location which contains an operation name to be invoked in the message contents. Here is what an XPath Operation Selector configuration looks like:
<jca:binding.jca> <swyd:operationSelector.xpath expression="//person/language" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </jca:binding.jca><jca:binding.jca> <swyd:operationSelector.xpath expression="//person/language" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </jca:binding.jca>Copy to Clipboard Copied! Toggle word wrap Toggle overflow For this configuration, if you specify the following message content, then the operationspanish()is invoked:<person> <name>Fernando</name> <language>spanish</language> </person><person> <name>Fernando</name> <language>spanish</language> </person>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Regex Operation Selector
- You can specify a regular expression to find an operation name to be invoked in the message contents. Here is what a Regex Operation Selector configuration looks like:
<http:binding.http> <swyd:operationSelector.regex expression="[a-zA-Z]*Operation" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </http:binding.http><http:binding.http> <swyd:operationSelector.regex expression="[a-zA-Z]*Operation" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </http:binding.http>Copy to Clipboard Copied! Toggle word wrap Toggle overflow For this configuration, if you specify the following message content, then the operationregexOperation()is invoked:xxx yyy zzz regexOperation aaa bbb ccc
xxx yyy zzz regexOperation aaa bbb cccCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Java Operation Selector
- You can specify a Java class which is able to determine the operation to be invoked. Here is what a Java Operation Selector configuration looks like:
<jca:binding.jca> <swyd:operationSelector.java class="org.switchyard.example.MyOperationSelectorImpl" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </jca:binding.jca><jca:binding.jca> <swyd:operationSelector.java class="org.switchyard.example.MyOperationSelectorImpl" xmlns:swyd="urn:switchyard-config:switchyard:1.0"/> (... snip ...) </jca:binding.jca>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Here, theorg.switchyard.example.MyOperationSelectorImplhas to implementorg.switchyard.selector.OperationSelectoror be a subclass of concrete OperationSelector classes for each service bindings. You can override theselectOperation()method as you like.Following are the default OperationSelector implementation for each service bindings:- Camel :
org.switchyard.component.camel.selector.CamelOperationSelector - JCA/JMS :
org.switchyard.component.jca.selector.JMSOperationSelector - JCA/CCI :
org.switchyard.component.jca.selector.CCIOperationSelector - HTTP :
org.switchyard.component.http.selector.HttpOperationSelector