JBI User's GuideApache ServiceMix
Version 4.5.0
1
www.princexml.comPrince - Non-commercial LicenseThis document was created with Prince, a great way of getting web content onto paper.
1. Introduction to JBI1.1. What is JBI?
TODO: Describe what the JBI specification is all about
1.2. Message Exchange PatternsTODO: Describe the four standard JBI MEPs
1.3. JBI APITODO: Describe the standard JBI API (MessageExchange, NormalizedMessage, ...)
Apache ServiceMix 4.5.0
2
2. JBI Components2.1. servicemix-bean
OverviewThe ServiceMix Bean component provides integration with beans (POJOs) with the JBI bus to make iteasy to use POJOs to process JBI message exchanges. Like in an Message Driven Bean in J2EE a POJOwill receive a message from the NMR and process it in any way it likes. Unlike in a JMS componentwhere the coding is already done the Bean component gives the developer the freedom to create anytype of message handling but it must be hand coded all the way.
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/bean/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-bean component only defines one endpoint, called bean:endpoint. It can be usedto receive and send message exchanges from/to the NMR.
Endpoint bean:endpointThere are two ways to configure the bean endpoint. The first is using the fully qualified name of theclass and the second is by passing to the endpoint a reference to an existing bean.
Using a Java class
When definining a bean:endpoint specifying a Java class name, a new instance of this class will becreated for handling a single message exchange.
Using a spring bean
Alternative, a reference to an existing bean can be passed to the bean endpoint.
Apache ServiceMix 4.5.0
3
Attention: The Bean Endpoint schema allows to set a Bean or a Bean Name. The Bean will create asingle instance of the POJO per endpoint whereas the Bean Name will create an instance per request(message exchange).
Endpoint properties
Property Name Type Description
applicationContext org.springframework.context.ApplicationContext
Set the SpringApplicationContextwhere the bean canbe found. Defaultsto the contextdefined inxbean.xml
bean java.lang.ObjectSet the bean to beused for handlingexchanges
beanClassName java.lang.String
Set the bean classname to be usedfor handlingexchanges. A newinstance will becreated on the flyfor every exchange.
beanInfo org.apache.servicemix.bean.support.BeanInfo
Set a custom beaninfo object todefine the bean tobe used forhandlingexchanges
beanName java.lang.String
Set the name of thebean in theapplication contextto be used forhandlingexchanges
beanType java.lang.Class
Set the bean classto be used forhandlingexchanges. A newinstance will becreated on the flyfor every exchange.
component org.apache.servicemix.bean.BeanComponent
correlationExpression org.apache.servicemix.expression.Expression
Set a customexpression to usefor correlatingexchanges into asingle requesthandled by thesame beaninstance. Thedefault expressionuses a correlation
Apache ServiceMix 4.5.0
4
ID set on theexchangeproperties.
endpoint java.lang.String
Get theendpointimplementation.
interfaceName javax.xml.namespace.QName
Get thequalified name ofthe endpointinterface.
methodInvocationStrategy org.apache.servicemix.bean.support.MethodInvocationStrategy
Set a custominvocation strategyto define how thebean is beinginvoked. Thedefaultimplementationtakes someadditionalparameterannotations intoaccount.
service javax.xml.namespace.QName
Get theservice qualifiedname of theendpoint.
serviceEndpoint javax.jbi.servicedesc.ServiceEndpoint
MessageExchangeListenerThe first kind of POJOs you can deploy implement the MessageExchagneListener interface. In sucha case, servicemix-bean acts as a replacement of the lightweight container component. This leveloffers the most control on the exchange received and sent. This is usually used with the injectedDeliveryChannel to send back the exchanges, or if the POJOs needs to act as a consumer (i.e.creating and sending exchanges to other services).These POJOs are low-level POJOs: you need to understand the JBI Api and Message ExchangePatterns to correctly handle incoming exchanges.Note that at this point (v 3.1), there is no base class that you can inherit to speed you in this processof implementing a POJO to handle JBI exchanges, but hopefully it will come in the future.
ExamplesThis example on the right shows the most simple bean. When it receives an exchange, it will print itto the console and set the status to DONE before sending the exchange back. This bean can nothandle InOut exchanges, as it does not set any response (an exception would be thrown in such acase).
Apache ServiceMix 4.5.0
5
http://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/core/servicemix-core/apidocs/org/apache/servicemix/MessageExchangeListener.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/core/servicemix-core/apidocs/org/apache/servicemix/MessageExchangeListener.html
importimport org.apache.servicemix.jbi.listener.MessageExchangeListener;
importimport javax.annotation.Resource;importimport javax.jbi.messaging.DeliveryChannel;importimport javax.jbi.messaging.ExchangeStatus;importimport javax.jbi.messaging.MessageExchange;importimport javax.jbi.messaging.MessagingException;
publicpublic classclass ListenerBean implementsimplements MessageExchangeListener {
@Resourceprivateprivate DeliveryChannel channel;
publicpublic voidvoid onMessageExchange(MessageExchange exchange) throwsthrows MessagingException {System.out.println("Received exchange: " + exchange);exchange.setStatus(ExchangeStatus.DONE);channel.send(exchange);
}
}
This example will handle an InOut exchange and will send back the input as the response.Note that this example would fail if receiving an InOnly exchange, as setting a response on anInOnly exchange is not a legal operation.
importimport org.apache.servicemix.jbi.listener.MessageExchangeListener;importimport org.apache.servicemix.jbi.util.MessageUtil;
importimport javax.annotation.Resource;importimport javax.jbi.messaging.DeliveryChannel;importimport javax.jbi.messaging.ExchangeStatus;importimport javax.jbi.messaging.MessageExchange;importimport javax.jbi.messaging.MessagingException;
publicpublic classclass ListenerBean implementsimplements MessageExchangeListener {
@Resourceprivateprivate DeliveryChannel channel;
publicpublic voidvoid onMessageExchange(MessageExchange exchange) throwsthrows MessagingException {ifif (exchange.getStatus() == ExchangeStatus.ACTIVE) {
MessageUtil.transferInToOut(exchange, exchange);channel.send(exchange);
}}
}
This is similar example as the one from above (also works only for InOut exchange) but it showshow you can extract message from an exchange in order to process it and send back.
Apache ServiceMix 4.5.0
6
importimport org.apache.servicemix.jbi.listener.MessageExchangeListener;importimport org.apache.servicemix.jbi.util.MessageUtil;importimport org.apache.servicemix.jbi.jaxp.SourceTransformer;
importimport javax.annotation.Resource;importimport javax.jbi.messaging.DeliveryChannel;importimport javax.jbi.messaging.ExchangeStatus;importimport javax.jbi.messaging.MessageExchange;importimport javax.jbi.messaging.MessagingException;importimport javax.jbi.messaging.NormalizedMessage;importimport javax.xml.transform.Source;
publicpublic classclass ListenerBean implementsimplements MessageExchangeListener {
@Resourceprivateprivate DeliveryChannel channel;
publicpublic voidvoid onMessageExchange(MessageExchange exchange) throwsthrows MessagingException {ifif (exchange.getStatus() == ExchangeStatus.ACTIVE) {
NormalizedMessage message = exchange.getMessage("in");Source content = message.getContent();//process content according to your logic//e.g. to access the message body as a String useString body = (newnew SourceTransformer()).toString(content);
message.setContent(content);exchange.setMessage(message, "out");channel.send(exchange);
}}
}
DisclaimerIn versions 3.1 to 3.1.2 the ServiceMix Bean component will not handle asynchronous messagescorrectly because the final send of the message marked as DONE back to the NMR will be handled asa consumer message and that fails because there is no corresponding provider message. The onlyworkaround is to send the messages synchronously.Note: This was resolved in 3.1.3, 3.2.x and later via SM-1110.
MessageExchange dispatchingIf the POJO deployed implements the org.apache.servicemix.MessageExchangeListener, everymessage received for this POJO will be dispatched to the onMessageExchange method.
In other cases, exchanges in a provider role will be dispatched according to theMethodInvocationStrategy configured on the endpoint. The default one try to find the methodaccording to the operation name defined on the exchange. If there is only a single method acting asan operation, it will always be used.
AnnotationsThe servicemix-bean component can accept different kind of POJOs. These POJOs may beannotated to customize their behavior. All the following annotations belong to theorg.apache.servicemix.bean package.
Annotation Target Description
Apache ServiceMix 4.5.0
7
https://issues.apache.org/jira/browse/SM-1110
Callback MethodContent ParameterCorrelation TypeEndpoint Type This annotation is mandatory if the bean is automatically searched from a list ofpackages.ExchangeTarget FieldOperation MethodProperty ParameterXPath Parameter
In addition, standard annotations can be used:
Annotation Target Description
Resource FieldThe Resource annotation marks a resource that is needed by the application. Currently,this annotation is only supported on fields of type ComponentContext andDeliveryChannel. The component will inject the specified resource when the POJO isinstantiated.
PostConstruct Method The PostConstruct annotation is used on a method that needs to be executed afterdependency injection is done to perform any initialization.PreDestroy Method The PreDestroy annotation is used on methods as a callback notification to signal thatthe instance is in the process of being removed by the container.
The following interfaces are part of this API:
Interface Description
MessageExchangeListener When the POJO implements this interface, all exchanges will be dispatched to theonMessageExchange method.
DestinationThis interface can be used to define a property on the bean, annotated with the@ExchangeTarget annotation. This is a very simple API to send exchanges from aPOJO. More complex use cases can use an injected DeliveryChannel directly or tocreate a ServiceMix client.
More Examples• AnnotatedBean• AutoDeployedBean• ConsumerBean• ListenerBean• PlainBean
2.2. servicemix-camelOverviewThe servicemix-camel component provides support for using Apache Camel to provide a full set ofEnterprise Integration Patterns and flexible routing and transformation in both Java code or SpringXML to route services on the Normalized Message Router.
Apache ServiceMix 4.5.0
8
http://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Callback.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Content.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Correlation.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Endpoint.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/ExchangeTarget.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Operation.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Property.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/XPath.htmlhttp://java.sun.com/javase/6/docs/api/javax/annotation/Resource.htmlhttp://java.sun.com/javase/6/docs/api/javax/annotation/PostConstruct.htmlhttp://java.sun.com/javase/6/docs/api/javax/annotation/PreDestroy.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/core/servicemix-core/apidocs/org/apache/servicemix/MessageExchangeListener.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/apidocs/org/apache/servicemix/bean/Destination.html/Users/gertv/Projects/ASF/servicemix-documentation/target/sitegen/jbi/Client API.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/xref-test/org/apache/servicemix/bean/beans/AnnotatedBean.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/xref-test/org/apache/servicemix/bean/beans/AutoDeployedBean.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/xref-test/org/apache/servicemix/bean/beans/ConsumerBean.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/xref-test/org/apache/servicemix/bean/beans/ListenerBean.htmlhttp://incubator.apache.org/servicemix/dist/servicemix-3.1-incubating/site/deployables/serviceengines/servicemix-bean/xref-test/org/apache/servicemix/bean/beans/PlainBean.html
Namespace and camel-context.xml
When creating a servicemix-camel service unit, we reuse the default Camel namespacehttp://camel.apache.org/schema/spring.
This is an example camel-context.xml which uses the Spring DSL to define the Camel routes
>
It is also possible to use the Java DSL inside a servicemix-camel service unit by referring to thepackage that contains the RouteBuilder classes. An example: this camel-context.xml file willactivate all routes defined by RouteBuilders in the org.apache.servicemix.example.camelpackage.
>
org.apache.servicemix.examples.camel
URICamel routes use URIs to interact with the ESB. You can use these URIs to expose new endpoints onthe ESB as well as to send message exchanges to existing endpoints.The snippet below automatically exposes a new endpoint to the bus, where the service QName isMyService and the endpoint name is MyEndpoint.
from("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint")
When a JBI endpoint appears at the end of a route, as in the example below, that will send
to("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint")
The messages sent by this producer endpoint are sent to the already deployed JBI endpoint.
Apache ServiceMix 4.5.0
9
URI format
jbi:service:serviceNamespace[sep]serviceName[?options]jbi:endpoint:serviceNamespace[sep]serviceName[sep]endpointName[?options]jbi:name:endpointName[?options]
The separator that should be used in the endpoint URL is:• / (forward slash), if serviceNamespace starts with http://
• : (colon), if serviceNamespace starts with urn:.
You can append query options to the URI in the following format, ?option=value&ption=value&..
Examples
Using jbi:service
jbi:service:http://foo.bar.org/MyServicejbi:service:urn:foo:bar:MyService
Using jbi:endpoint
jbi:endpoint:urn:foo:bar:MyService:MyEndpointjbi:endpoint:http://foo.bar.org/MyService/MyEndpoint
Using jbi:name
When using jbi:name, the component uses http://activemq.apache.org/camel/schema/jbi}endpoint as the default Service QName.
jbi:name:MyEndpoint
URI options
Name Default value Description
mepMEP of theCamelExchange
Allows users to override the MEP set on the Exchange object. Validvalues for this option are in-only, in-out, robust-in-out and in-optional-out.
operationValue of thejbi.operationheader property
Specifies the JBI operation for the MessageExchange. If no value issupplied, the JBI binding will use the value of the jbi.operation headerproperty.
serialization basic
Default value (basic) will check if headers are serializable by looking atthe type, setting this option to strict will detect objects that can not beserialized although they implement the Serializable interface. Set tonocheck to disable this check altogether, note that this should only beused for in-memory transports like SEDAFlow, otherwise you can expectto get NotSerializableException thrown at runtime.
convertException false false: send any exceptions thrown from the Camel route backunmodified
Apache ServiceMix 4.5.0
10
true: convert all exceptions to a JBI FaultException (can be used to avoidnon-serializable exceptions or to implement generic error handling
Examples
jbi:service:http://foo.bar.org/MyService?mep=in-out (override the MEP, use InOut JBI MessageExchanges)jbi:endpoint:urn:foo:bar:MyService:MyEndpoint?mep=in (override the MEP, use InOnly JBI MessageExchanges)jbi:endpoint:urn:foo:bar:MyService:MyEndpoint?operation={http://www.mycompany.org}AddNumbers(overide the operation for the JBI Exchange to {http://www.mycompany.org}AddNumbers)
Example routes
Simple Spring route
This simple Spring route registers a new endpoint on the ESB (service Router, endpoint nameorders). The message exchange contents will be logged and then forwarded to another JBI serviceendpoint (service OrderService)
>
The same route using the Java DSL
When we implement the same route in the Java DSL, we first code our RouteBuilderimplementation
packagepackage org.apache.servicemix.example;
importimport org.apache.camel.builder.RouteBuilder;
publicpublic classclass JbiRouteBuilder extendsextends RouteBuilder {
@Overridepublicpublic voidvoid configure() throwsthrows Exception {
from("jbi:endpoint:urn:org:example:Router:orders").to("log:OrderLogging").to("jbi:service:http://services.example.org/OrderService");
}}
In our camel-context.xml file, we just refer to the org.apache.servicemix.example packagethat contains our JbiRouteBuilder.
Apache ServiceMix 4.5.0
11
>
org.apache.servicemix.example
Special considerations
Stream handling
If you are using a stream type as the message body, you should be aware that a stream is onlycapable of being read once. So if you enable DEBUG logging, the body is usually logged and thusread. To deal with this, Camel has a streamCaching option that can cache the stream, enabling youto read it multiple times.
from("jbi:endpoint:http://foo.bar.org/MyService/MyEndpoint").streamCaching().to("xslt:transform.xsl", "bean:doSomething");
Camel will cache large input streams (by default, over 64K) in a temp file usingCachedOutputStream. When you close the input stream, the temp file will be deleted.
2.3. servicemix-cxf-bcOverviewA JBI compliant HTTP/SOAP or JMS/SOAP binding component named servicemix-cxf-bc which useapache cxf internally.The main features are:
• JBI compliant Binding Component• Usable in a lightweight mode in servicemix.xml configuration files• SOAP 1.1 and 1.2 support• MIME attachments• Support for all MEPs as consumers or providers• SSL support• WS-Security support
Apache ServiceMix 4.5.0
12
• WS-Policy support• WS-RM support• WS-Addressing support
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/cxfbc/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-cxf-bc component defines two endpoints:▪ cxfbc:consumer :: a server-side cxf endpoint that will consume plain HTTP+SOAP requests
and send them into the NMR to a given JBI endpoint▪ cxfbc:provider :: a client-side jbi endpoint which can receive requests from the NMR and
send them to a given url where the service is provided
cxfbc:consumerEndpoint properties
Property Name Type Description
busCfg java.lang.Stringthe location of the CXF configuration fileused to configure the CXF bus. This allowsyou to configure features like WS-RM andJMS runtime behavior.
delegateToJaas booleanSpecifies if the endpoint delegate toJAASAuthenticationService to do theauthentication.
endpoint java.lang.String
Get the endpoint implementation.
features (java.lang.Object)\* Specifies the cxf features set for thisendpointinFaultInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess incoming faultsinInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess incoming responsesinterfaceName javax.xml.namespace.QNameGet the qualified name of the endpointinterface.
jaasDomain java.lang.String jaasDomain of this cxfbc consumer endpoint
locationURI java.lang.Stringthe HTTP address to which requests aresent. This value will overide any valuespecified in the WSDL.
mtomEnabled boolean Specifies if MTOM / attachment support isenabled. Default is false.
Apache ServiceMix 4.5.0
13
outFaultInterceptors (java.lang.Object)\*a list of beans configuring interceptors thatprocess fault messages being returned tothe consumer
outInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess requestsproperties java.util.Map Sets arbitrary properties that are added tothe CXF context at the Endpoint levelprovidedBus org.apache.cxf.Bus a preconfigured CXF Bus object to use;overrides busCfg
schemaValidationEnabled booleanSpecifies if the endpoint useschemavalidation for the incoming/outgoingmessage.
service javax.xml.namespace.QName
Get the service qualified name of theendpoint.
synchronous boolean Specifies if the endpoint expects sendmessageExchange by sendSync .targetEndpoint java.lang.String the name of the endpoint to which requestsare senttargetInterface javax.xml.namespace.QName the QName of the interface to whichrequests are senttargetOperation javax.xml.namespace.QName the QName of the operation to whichrequests are senttargetService javax.xml.namespace.QName the QName of the service to which requestsare senttargetUri java.lang.StringGets the target URI of the consumerendpoint.
timeout long the number of second the endpoint will waitfor a response. The default is unlimited.
useJBIWrapper booleanSpecifies if the JBI wrapper is sent in thebody of the message. Default istrue.
useSOAPEnvelope boolean Specifies if the endpoint expects soapmessages when useJBIWrapper is false,wsdl org.springframework.core.io.Resource the location of the WSDL document definingthe endpoint's interfacex509 boolean Specifies if the endpoint use X.509Certificate to do the authentication.
cxfbc:providerEndpoint properties
Property Name Type Description
busCfg java.lang.Stringthe location of the CXF configuration fileused to configure the CXF bus. This allowsyou to configure features like WS-RM andJMS runtime behavior.
endpoint java.lang.String
Get the endpoint implementation.
features (java.lang.Object)\* Specifies the cxf features set for thisendpointinFaultInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess incoming faultsinInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess incoming requests
Apache ServiceMix 4.5.0
14
interfaceName javax.xml.namespace.QName
Get the qualified name of the endpointinterface.
locationURI java.net.URIthe HTTP address of the exposed service.This value will overide any value specified inthe WSDL.
mtomEnabled boolean Specifies if MTOM / attachment support isenabled. Default is false.
outFaultInterceptors (java.lang.Object)\*a list of beans configuring interceptors thatprocess fault messages being returned tothe consumer
outInterceptors (java.lang.Object)\* a list of beans configuring interceptors thatprocess responsesproperties java.util.Map Sets arbitrary properties that are added tothe CXF context at the Endpoint levelprovidedBus org.apache.cxf.Bus a preconfigured CXF Bus object to use;overrides busCfg
schemaValidationEnabled booleanSpecifies if the endpoint useschemavalidation for the incoming/outgoingmessage.
service javax.xml.namespace.QName
Get the service qualified name of theendpoint.
synchronous booleanSpecifies if the endpoints send messagesynchronously to external server usingunderlying
useJBIWrapper booleanSpecifies if the JBI wrapper is sent in thebody of the message. Default istrue.
useSOAPEnvelope boolean Specifies if the endpoint expects soapmessages when useJBIWrapper is false,wsdl org.springframework.core.io.Resource the location of the WSDL document definingthe endpoint's interface
Examples
Configuring the CXF JMS Transport
The ServiceMix CXF binding component also allows using the CXF JMS Transport to send and receivemessages. You can use the element to add and configure theorg.apache.cxf.transport.jms.JMSConfigFeature on the endpoint, as in the example below.
Apache ServiceMix 4.5.0
15
5
test.jmstransport.text.provider
false
The jms_conduit_config.xml file specified in the busCfg parameter, is optional and can be usedto specify additional JMS transport parameters:
Configuring the CXF HTTP Transport
In order to configure the underlying HTTP transport used by a CXF BC endpoint, you can specify anadditional busCfg file as in the example below.
Apache ServiceMix 4.5.0
16
The http_conduit_config.xml file can then specify the additional CXF configuration. Have a lookat this page for an overview of all the options supported by CXF.
>
2.4. servicemix-cxf-seOverviewServiceMix CXF SE component is a JBI Service Engine exposing (annotated) POJO as services on theJBI Bus.It uses Apache CXF internally to perform service invocations and xml marshaling.Features:
• jsr181 annotations• jaxb2/aegis/xmlbeans databinding• wsdl auto generation• java proxy support• MTOM / attachments support
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/cxfse/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Apache ServiceMix 4.5.0
17
http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html
Endpoint types
The servicemix-cxf-bc component defines one endpoint type:▪ cxfse:endpoint :: no description yet
cxfse:endpointEndpoint properties
Property Name Type Description
dataBinding org.apache.cxf.databinding.AbstractDataBinding Specifies dataBinding used by theEndpointendpoint java.lang.String
Get the endpoint implementation.
inFaultInterceptors (java.lang.Object)\* a list of beans configuring interceptorsthat process incoming faultsinInterceptors (java.lang.Object)\* a list of beans configuring interceptorsthat process incoming requestsinterfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
mtomEnabled booleanSpecifies if the service can consumeMTOM formatted binary data. Thedefault is false.
outFaultInterceptors (java.lang.Object)\*a list of beans configuring interceptorsthat process fault messages beingreturned to the consumer
outInterceptors (java.lang.Object)\* a list of beans configuring interceptorsthat process response messages
pojo java.lang.Objecta bean configuring the JAX-WSannotated implementation for theendpoint
pojoEndpoint javax.xml.namespace.QNameSpecifies the servicemodel endpointname generated from the pojo. Thedefault is null.
pojoInterfaceName javax.xml.namespace.QNameSpecifies the servicemodel interfacename generated from the pojo. Thedefault is null.
pojoService javax.xml.namespace.QNameSpecifies the servicemodel service namegenerated from the pojo. The default isnull.
properties java.util.Map Specifies a map of propertiesservice javax.xml.namespace.QName
Get the service qualified name ofthe endpoint.
useAegis booleanSpecifies if the endpoint use aegisdatabinding to marshall/unmarshallmessage. The default isfalse.
useJBIWrapper boolean
Specifies if the endpoint expects toreceive the JBI wrapper in the messagereceived from the NMR. The default istrue. Ignore the valueof useSOAPEnvelope if useJBIWrapper istrue
useSOAPEnvelope boolean Specifies if the endpoint expects soapmessages when useJBIWrapper is false,
Apache ServiceMix 4.5.0
18
if useJBIWrapper is true then ignoreuseSOAPEnvelope. The default istrue.
useXmlBeans booleanSpecifies if the endpoint use xmlbeansdatabinding to marshell/unmarshellmessage. The default isfalse.
cxfbc:proxyEndpoint properties
Property Name Type Description
clearClientResponseContext booleanSpecifies if the CXF client responsecontext is cleared after each proxyinvocation. The default is
componentRegistry java.lang.ObjectAllows injecting a custom componentregistry for looking up the proxyingendpoint.
container org.apache.servicemix.jbi.api.Container Allows injecting a JBI Containerinstance (e.g. for testing purposes).context javax.jbi.component.ComponentContext Allows injecting theComponentContextendpoint java.lang.String The name of the endpoint.factory org.apache.servicemix.jbi.api.ClientFactory Allows injecting a ClientFactoryinterfaceName javax.xml.namespace.QName Specifies the servicemodel interfacename
mtomEnabled booleanSpecifies if the service can consumeMTOM formatted binary data. Thedefault is false.
name java.lang.StringSpecifies the JNDI name for lookingup the ClientFactory. Defaults tojava:comp/env/jbi/ClientFactory.
propagateSecuritySubject booleanWhen set to true,the security subject is propagatedalong to the proxied endpoint.Defaults to false.
service javax.xml.namespace.QName Specifies the servicemodel servicenametype java.lang.Class Specifies the webservice POJO type
useJBIWrapper boolean
Specifies if the endpoint expects toreceive the JBI wrapper in themessage received from the NMR. Thedefault is true.Ignore the value of useSOAPEnvelopeif useJBIWrapper is true
useSOAPEnvelope booleanSpecifies if the endpoint expectssoap messages when useJBIWrapperis false, if useJBIWrapper is true thenignore useSOAPEnvelope. The defaultis true.
Apache ServiceMix 4.5.0
19
2.5. servicemix-droolsOverviewThe ServiceMix Drools component provides JBI integration to the Drools Rules Engine.This Service Engine can be used to deploy a rules set that will implement a router or an actualservice.A router will mostly act as a transparent proxy between the consumer and the target serviceprovider mad will mostly be implemented by the jbi.route(uri) method below. This method creates anew exchange identical to the one received by the component and will send it to the specifieddestination. You can also send back a Fault if needed. A router can also be implemented by usingdirectly the JBI Apis (available with the jbi helper) by using the provided client.
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/drools/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-drools component defines one endpoint type:▪ drools:endpoint :: no description yet
drools:endpointEndpoint properties
Property Name Type Description
assertedObjects (java.lang.Object)\*List of additional objects to beinserted into the drools workingmemory for evaluating rules.
autoReply booleanWill this endpoint automatically replyto any exchanges not handled by theDrools rulebase?
component org.apache.servicemix.common.DefaultComponent
defaultTargetService javax.xml.namespace.QNameThe default service that theexchange will be sent to if none ofthe rules have handled it.
defaultTargetURI java.lang.StringThe default endpoint URI that theexchange will be sent to if none ofthe rules have handled it.
endpoint java.lang.String
Get the endpointimplementation.
Apache ServiceMix 4.5.0
20
globals java.util.MapThe global variables that areavailable while evaluating the rulebase.
interfaceName javax.xml.namespace.QName
Get the qualified name of theendpoint interface.
namespaceContext javax.xml.namespace.NamespaceContext The namespace context to use whenevaluating the rules.ruleBase org.drools.RuleBase Set the rule base to be used forhandling the exchangesruleBaseResource org.springframework.core.io.Resource Specifies the resource location toload the rule base from (.drl file)ruleBaseURL java.net.URL Specifies a URL to load the rule basefrom (.drl file)service javax.xml.namespace.QNameGet the service qualified nameof the endpoint.
su org.apache.servicemix.common.ServiceUnit
2.6. servicemix-eipOverviewThe servicemix-eip component is a routing container where different routing patterns can bedeployed as service unit.This component is based on the great Enterprise Integration Patterns book.
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/eip/1.0. This is an example of an xbean.xml file with a namespace definition with prefix eip.
Endpoint types
The servicemix-eip component defines several endpoint types:▪ eip:content-based-router :: Implements the Content-Based Router EIP
▪ eip:message-filter :: Implements the Message Filter EIP
▪ eip:pipeline :: Implements the Pipeline EIP
Apache ServiceMix 4.5.0
21
▪ eip:static-recipient-list :: Implements the Static Recipient List EIP
▪ eip:static-routing-slip :: Implements the Static Routing Slip EIP
▪ eip:wire-tap :: Implements the Wire Tap EIP
▪ eip:xpath-splitter :: Uses XPath to split a message
▪ eip:split-aggregator :: Aggregates messages that have been split by the xpath-splitter
▪ eip:content-enricher :: Implements the Content Enricher EIP
▪ eip:resequencer :: Implements the Resequencer EIP
▪ eip:async-bridge :: Handles an InOut exchange by correlating to separate InOnlyexchanges
In addition, this component can use all ServiceMix flows (including clustered and transactionalflows), can be configured to be resilient to crashes and supports full fail-over to another node whenclustered.
Content Based RouterContentBasedRouter can be used for all kind of content-based routing.This pattern implements the Content-Based Router pattern.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpointimplementation.
forwardOperation boolean Forward the operation qname whensending the exchange to the target.interfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
rules (org.apache.servicemix.eip.support.RoutingRule)\* The list of routing rules.service javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
Apache ServiceMix 4.5.0
22
http://www.enterpriseintegrationpatterns.com/ContentBasedRouter.html
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memoryonly factory will be created.
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a defaultimplementation will be provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to loadthe WSDL describing this endpoint.This can be used when the endpointproxies another endpoint so that thesame WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resourcewill be used to load the WSDL thatwill be exposed as a description forthis endpoint. This property can beused to explicitely define the WSDLto be exposed by this endpoint. Thisproperty takes precedence over thewsdlExchangeTarget property.
Message FilterMessageFilter allows filtering incoming JBI exchanges. As it drops unwanted messages and in anInOut exchange a response is required, MessageFilter and InOut MEPs cannot be used together.This pattern implements the Message Filter pattern.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpointimplementation.
filter org.apache.servicemix.eip.support.Predicate The filter to use on incomingmessagesinterfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
Apache ServiceMix 4.5.0
23
http://www.enterpriseintegrationpatterns.com/Filter.html
reportErrors boolean
Indicates if faults and errors fromrecipients should be sent back tothe consumer. In such a case, onlythe first fault or error received willbe reported. Note that if theconsumer is synchronous, it will beblocked until all recipientssuccessfully acked the exchange, ora fault or error is reported, and theexchange will be kept in the storefor recovery.
service javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memoryonly factory will be created.
target org.apache.servicemix.eip.support.ExchangeTarget The main target destination whichwill receive the exchange
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a defaultimplementation will be provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to loadthe WSDL describing this endpoint.This can be used when the endpointproxies another endpoint so that thesame WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resourcewill be used to load the WSDL thatwill be exposed as a description forthis endpoint. This property can beused to explicitely define the WSDLto be exposed by this endpoint. Thisproperty takes precedence over thewsdlExchangeTarget property.
PipelineThe Pipeline component is a bridge between an In-Only (or Robust-In-Only) MEP and an In-OutMEP. When the Pipeline receives an In-Only MEP, it will send the input in an In-Out MEP to thetranformer destination and forward the response in an In-Only MEP to the target destination.The old org.apache.servicemix.components.util.PipelineComponent will be deprecated. This oneoffers the same feature but can be safely clustered and use in a transactional enviromnent.
In the default configuration, faults sent by the transformer component are sent back to theconsumer as faults if the exchange MEP supports them, or as errors (for InOnly exchanges). Thisbehavior can be changed by setting the sendFaultsToTarget attribute to true, in which case faultswill be sent to the target component, or by adding a faultsTarget element where faults should besent.
Apache ServiceMix 4.5.0
24
Endpoint properties
Property Name Type Description
copyAttachments boolean Should message attachments becopied ?copyProperties boolean Should message properties becopied ?endpoint java.lang.String
Get the endpointimplementation.
faultsTarget org.apache.servicemix.eip.support.ExchangeTarget The address of the endpoint to sendfaults tointerfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
sendFaultsToTarget booleanWhen the faultsTarget is notspecified, faults may be sent to thetarget endpoint if this flag is set totrue
service javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memoryonly factory will be created.
target org.apache.servicemix.eip.support.ExchangeTarget The address of the target endpoint
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a defaultimplementation will be provided.
transformer org.apache.servicemix.eip.support.ExchangeTarget The adress of the in-out endpointacting as a transformer
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to loadthe WSDL describing this endpoint.This can be used when the endpointproxies another endpoint so that thesame WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resourcewill be used to load the WSDL thatwill be exposed as a description forthis endpoint. This property can beused to explicitely define the WSDLto be exposed by this endpoint. Thisproperty takes precedence over thewsdlExchangeTarget property.
Static Recipeint ListThe StaticRecipientList component will forward an input In-Only or Robust-In-Only exchange to alist of known recipients.
Apache ServiceMix 4.5.0
25
This component implements the Recipient List pattern, with the limitation that the recipient list isstatic.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpointimplementation.
interfaceName javax.xml.namespace.QNameGet the qualified name ofthe endpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a defaultimplementation will be provided.
recipients (org.apache.servicemix.eip.support.ExchangeTarget)\*A list of recipients that will eachreceive a copy of the inputmessage.
reportErrors boolean
Indicates if faults and errors fromrecipients should be sent back tothe consumer. In such a case,only the first fault or errorreceived will be reported. Notethat if the consumer issynchronous, it will be blockeduntil all recipients successfullyacked the exchange, or a fault orerror is reported, and theexchange will be kept in thestore for recovery.
service javax.xml.namespace.QName
Get the service qualifiedname of the endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. Ifnone is explicitely configured,the storeFactory will be used tocreate one.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memory only factory will becreated.
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use forthis endpoint. If none isexplicitely configured, a defaultimplementation will be provided.
Apache ServiceMix 4.5.0
26
http://www.enterpriseintegrationpatterns.com/RecipientList.html
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to aJBI endpoint that will be used toload the WSDL describing thisendpoint. This can be used whenthe endpoint proxies anotherendpoint so that the same WSDLdefinition will be exposed."
wsdlResource org.springframework.core.io.Resource
When specified, this springresource will be used to load theWSDL that will be exposed as adescription for this endpoint.This property can be used toexplicitely define the WSDL to beexposed by this endpoint. Thisproperty takes precedence overthe wsdlExchangeTargetproperty.
Static Routing SlipA RoutingSlip component can be used to route an incoming In-Out exchange through a series oftarget services.This component implements the Routing Slip pattern, with the limitation that the routing table isstatic.This component only uses In-Out MEPs and errors or faults sent by targets are reported back to theconsumer, thus interrupting the routing process.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpointimplementation.
interfaceName javax.xml.namespace.QNameGet the qualified name ofthe endpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a defaultimplementation will be provided.
service javax.xml.namespace.QName
Get the service qualifiedname of the endpoint.
store org.apache.servicemix.store.Store Configure the store to use. Ifnone is explicitely configured,
Apache ServiceMix 4.5.0
27
http://www.enterpriseintegrationpatterns.com/RoutingTable.html
the storeFactory will be used tocreate one.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memory only factory will becreated.
targets (org.apache.servicemix.eip.support.ExchangeTarget)\* List of target endpoints used inthe RoutingSlip
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use forthis endpoint. If none isexplicitely configured, a defaultimplementation will be provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to aJBI endpoint that will be used toload the WSDL describing thisendpoint. This can be used whenthe endpoint proxies anotherendpoint so that the same WSDLdefinition will be exposed."
wsdlResource org.springframework.core.io.Resource
When specified, this springresource will be used to load theWSDL that will be exposed as adescription for this endpoint.This property can be used toexplicitely define the WSDL to beexposed by this endpoint. Thisproperty takes precedence overthe wsdlExchangeTargetproperty.
Wire TapA WireTap component can be used to forward a copy of the input message to a listener in a proxyfashion.This component implements the WireTap pattern.It can handle all four standard MEPs, but will only send an In-Only MEP to the listener.The originating service must be configured to send messages to the WireTap directly.In the case of an In-Out MEP, this means that the WireTap needs to be configured to send theexchange along to the destination service.
Similar to the example above, the WireTap can also be used:• to forward the output message of an exchange using
Apache ServiceMix 4.5.0
28
http://www.enterpriseintegrationpatterns.com/WireTap.html
• to forward the fault message of an exchange using
Endpoint properties
Property Name Type Description
copyProperties booleanIf copyProperties istrue, properties onthe in message will be copied to theout / fault message before it is sent.
endpoint java.lang.String
Get the endpointimplementation.
faultListener org.apache.servicemix.eip.support.ExchangeTarget The listener destination for faultmessagesinListener org.apache.servicemix.eip.support.ExchangeTarget The listener destination for inmessagesinterfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
outListener org.apache.servicemix.eip.support.ExchangeTarget The listener destination for outmessagesservice javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memoryonly factory will be created.
target org.apache.servicemix.eip.support.ExchangeTarget The main target destination whichwill receive the exchange
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a defaultimplementation will be provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to loadthe WSDL describing this endpoint.This can be used when the endpointproxies another endpoint so that thesame WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resourcewill be used to load the WSDL thatwill be exposed as a description forthis endpoint. This property can beused to explicitely define the WSDLto be exposed by this endpoint. Thisproperty takes precedence over thewsdlExchangeTarget property.
Apache ServiceMix 4.5.0
29
XPath SplitterThe XPathSplitter component implements the Splitter pattern using an xpath expression to split theincoming xml.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpoint implementation.
factory javax.xml.xpath.XPathFactoryThe XPath factory. If no factory is explicitelyconfigured, a defaut one will be createdusingXPathFactory.newInstance().
forwardAttachments boolean Indicates if incoming attachments should beforwarded with the new exchanges.forwardProperties boolean Indicates if properties on the incomingmessage should be forwarded.functionResolver javax.xml.xpath.XPathFunctionResolver The function resolver.interfaceName javax.xml.namespace.QName
Get the qualified name of the endpointinterface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for this endpoint. Ifnone is explicitely specified a defaultimplementation will be provided.
namespaceContext javax.xml.namespace.NamespaceContext The namespace context to use whenevaluating the xpath expression
reportErrors boolean
Indicates if faults and errors from splittedparts should be sent back to the consumer.In such a case, only the first fault or errorreceived will be reported. Note that if theconsumer is synchronous, it will be blockeduntil all parts have been successfully acked,or a fault or error is reported, and theexchange will be kept in the store forrecovery.
service javax.xml.namespace.QName
Get the service qualified name of theendpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, the storeFactory willbe used to create one.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use when creating astore. If no factory is explicitely defined, anin-memory only factory will be created.
synchronous boolean Specifies wether exchanges for all parts aresent synchronously or not.target org.apache.servicemix.eip.support.ExchangeTarget The address of the target endpoint.
Apache ServiceMix 4.5.0
30
http://www.enterpriseintegrationpatterns.com/Sequencer.html
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for this endpoint.If none is explicitely configured, a defaultimplementation will be provided.
variableResolver org.apache.servicemix.expression.MessageVariableResolverThe variable resolver. The default one willenable the use of properties on themessage, exchange, as well as makingsystem properties and environmentproperties available.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to load the WSDLdescribing this endpoint. This can be usedwhen the endpoint proxies another endpointso that the same WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resource will beused to load the WSDL that will be exposedas a description for this endpoint. Thisproperty can be used to explicitely definethe WSDL to be exposed by this endpoint.This property takes precedence over thewsdlExchangeTarget property.
xpath java.lang.String The xpath expression used to split the inputmessage.
Split AggregatorThe SplitAggregator is an aggregator mainly usefull to collect messages that have been createdusing a splitter.It relies on several properties that should be set on the exchanges (count, index, correlationId).
Endpoint properties
Content EnricherWith a Content Enricher you can extract additional information from a source and add thisinformation to your message. This is useful if the calling service for example extracts a 'userID' andyour target system is only aware of a 'userName'. By using the Content-Enricher you could extractthis information from a source system and add this additional information ('userName') to yourmessage.
Apache ServiceMix 4.5.0
31
Endpoint properties
Property Name Type Description
copyAttachments boolean
If this is set totrue, messageattachments from the incomingexchange and the enricherexchange will be copied to theoutgoing message exchange. Thedefault value isfalse (do not copymessage atachments).
copyProperties boolean
If this is set totrue, messageproperties from the incomingexchange and the enricherexchange will be copied to theoutgoing message exchange. Thedefault value isfalse (do not copymessage properties).
endpoint java.lang.String
Get the endpointimplementation.
enricherElementName javax.xml.namespace.QName returns the QName of the resultingroot node
enricherTarget org.apache.servicemix.eip.support.ExchangeTargetThe target that will receive a copyof the input message and return anaddtitional content.
interfaceName javax.xml.namespace.QName
Get the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
Apache ServiceMix 4.5.0
32
requestElementName javax.xml.namespace.QNameReturns the QName of the elementwhich contains the 'IN Message'within the response message
resultElementName javax.xml.namespace.QNameReturns the QName of the elementwhich contains the message whichwas produced by theenricherTarget within the responsemessage
service javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If noneis explicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use whencreating a store. If no factory isexplicitely defined, an in-memoryonly factory will be created.
target org.apache.servicemix.eip.support.ExchangeTarget The target where the enrichedexchanges are sent.
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a defaultimplementation will be provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to aJBI endpoint that will be used toload the WSDL describing thisendpoint. This can be used whenthe endpoint proxies anotherendpoint so that the same WSDLdefinition will be exposed."
wsdlResource org.springframework.core.io.Resource
When specified, this springresource will be used to load theWSDL that will be exposed as adescription for this endpoint. Thisproperty can be used to explicitelydefine the WSDL to be exposed bythis endpoint. This property takesprecedence over thewsdlExchangeTarget property.
Eip ResequencerA resequencer re-orders incoming In-Only or Robust-In-Only exchanges and sends themsynchronously to a targets service. Synchronous sending ensures that messages arrive in correctorder at the target service. This component implements the Resequencer pattern.
It works on (continuous) streams of message exchanges using a timeout policy. Since theresequencer doesn't make batch reads there's no need to know the number of messages to be re-ordered in advance (although a capacity parameter prevents the resequencer from running out of
Apache ServiceMix 4.5.0
33
http://www.enterpriseintegrationpatterns.com/Resequencer.html
memory). If the maximum out-of-sequence time difference between messages in a message streamis known, the resequencer's timeout parameter should be set to this value (milliseconds). In thiscase it is guaranteed that all elements of a stream are delivered in correct order to the targetservice. The lower the timeout value is compared to the out-of-sequence time difference thehigher is the probability for out-of-sequence messages sent by this resequencer. Large timeoutvalues should be supported by sufficiently high capacity values.
For comparing elements of a sequence the resequencer component can be configured with asequence element comparator. A default comparator is provided that compares message exchangesbased on Long sequence numbers. This comparator expects the sequence number to be the value ofthe org.apache.servicemix.eip.sequence.number property of the exchanges's in\-NormalizedMessage. The name of the property can be customized in the comparator configuration(see below). You may also provide a custom comparator by implementing theSequenceElementComparator interface.
A running example can be downloaded from here. In this example, a custom-coded message sendersends messages in "wrong" order to the resequencer. The resequencer re-orders these messagesand (synchronously) sends them to a file sender-endpoint. The file sender-enpoint writes themessages (in proper order) to the work/output directory.
Endpoint properties
Property Name Type Description
capacity int
The capacity of thisresequencer. Thecapacity determinesthe maximumnumber of messagethat will be kept inmemory to put themessages back insequence. Thisdetermine how fartwo messages canbe in the list ofmessages while stillbeing put back insequence.
comparator org.apache.servicemix.eip.support.resequence.SequenceElementComparatorThe comparatorused to determinethe sequence orderof elements.
Apache ServiceMix 4.5.0
34
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-eip/trunk/src/main/java/org/apache/servicemix/eip/support/resequence/SequenceElementComparator.java?view=markup/Users/gertv/Projects/ASF/servicemix-documentation/target/sitegen/jbi/^resequencer-sample.zip
endpoint java.lang.String
Get theendpointimplementation.
interfaceName javax.xml.namespace.QName
Get thequalified name ofthe endpointinterface.
lockManager org.apache.servicemix.common.locks.LockManager
The lock managerto use for thisendpoint. If none isexplicitely specifieda defaultimplementation willbe provided.
service javax.xml.namespace.QName
Get the servicequalified name ofthe endpoint.
store org.apache.servicemix.store.Store
Configure the storeto use. If none isexplicitelyconfigured, thestoreFactory will beused to create one.
storeFactory org.apache.servicemix.store.StoreFactory
The store factory touse when creating astore. If no factoryis explicitelydefined, an in-memory onlyfactory will becreated.
target org.apache.servicemix.eip.support.ExchangeTarget
timeout long
Set the timeout ofthis resequencer.This specifies themaximum numberof milliseconds thatcan elapse betweentwo out-of-syncmessages.
timerManager org.apache.servicemix.timers.TimerManager
The timer managerto use for thisendpoint. If none isexplicitelyconfigured, adefaultimplementation willbe provided.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange targetpointing to a JBIendpoint that willbe used to load theWSDL describingthis endpoint. Thiscan be used whenthe endpointproxies anotherendpoint so that thesame WSDLdefinition will beexposed."
Apache ServiceMix 4.5.0
35
wsdlResource org.springframework.core.io.Resource
When specified, thisspring resource willbe used to load theWSDL that will beexposed as adescription for thisendpoint. Thisproperty can beused to explicitelydefine the WSDL tobe exposed by thisendpoint. Thisproperty takesprecedence over thewsdlExchangeTargetproperty.
Async BridgeThe AsyncBridge expects an InOut mep as input. It then uses the exchange id of the InOut mep asthe correlation id and creates an InOnly message by copying the input message and sends it to thetarget (with the correlation id set as a property). Next it expects an InOnly to come back with thesame correlation id property. When this happens, the message is copied to the out message of theoriginal exchange and sent back. If no response is received during the configured amount of time(timeout property in milliseconds), an error will be sent back to the original consumer.
As you can see from the sample above the responseCorrIdProperty is used to set the name of theproperty that the target will query to get the correlation id sent by the AsyncBridge. In other words,the target will do something like this to extract the correlation id
String correlationId = exchange.getProperty("correlationIdProperty");
The responseCorrId is set with an instance of type org.apache.servicemix.expression.Expression, inthis case the class org.apache.servicemix.expression.JAXPStringXPathExpression.This expression resolves the location of the correlation id coming back from the target. In the aboveexample the expression shows that the correlation id comes as part of the message payload in anattribute called "corrId" of the /my-response/message element. In a similar manner the classorg.apache.servicemix.expression.PropertyExpression could have been used to locate the correlationid in a message property.
Endpoint properties
Property Name Type Description
endpoint java.lang.String
Get the endpointimplementation.
interfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerThe lock manager to use for thisendpoint. If none is explicitelyspecified a default implementationwill be provided.
requestCorrId org.apache.servicemix.expression.Expression
The expression used to compute thecorrelation id used to correlate theresponse and the request. The defaultbehavior is to use the exchange id ofthe incoming In-Out exchange as thecorrelation id.
responseCorrId org.apache.servicemix.expression.Expression
The expression used to compute thecorrelation id from the responseexchange. The value computed by thisexpression must match the one fromthe {@link #setRequestCorrId}expression. The default value is null,but if no specific expression isconfigured, an expression will becreated which will extract theresponse correlation id from the{@link#setResponseCorrIdProperty(String)}property on the exchange.
responseCorrIdProperty java.lang.StringName of the property used by defaultto compute the correlation id on theresponse exchange.
service javax.xml.namespace.QName
Get the service qualified name ofthe endpoint.
store org.apache.servicemix.store.StoreConfigure the store to use. If none isexplicitely configured, thestoreFactory will be used to createone.
storeFactory org.apache.servicemix.store.StoreFactoryThe store factory to use when creatinga store. If no factory is explicitelydefined, an in-memory only factorywill be created.
Apache ServiceMix 4.5.0
37
target org.apache.servicemix.eip.support.ExchangeTarget
The target which will be used to sendan In-Only or Robust-In-Onlyexchange to. When receiving an In-Out exchange, the async bridge willcreate an In-Only request and send itto the specified target. It then expectsanother In-Only exchange to comeback as the response, which will beset as the Out message on the In-Outexchange. This property is mandatoryand must be set to a valid target.
timeout long
The timeout property controls theamount of time that the async bridgewill wait for the response after havingsent the request. The default value is0 which means that no timeout apply.If set to a non zero value, a timer willbe started when after the request issent. When the timer expires, the In-Out exchange will be sent back withan error status and a {@linkjava.util.concurrent.TimeoutException}as the cause of the error. The valuerepresents the number of millisecondsto wait.
timerManager org.apache.servicemix.timers.TimerManagerThe timer manager to use for thisendpoint. If none is explicitelyconfigured, a default implementationwill be provided.
useRobustInOnly boolean
Boolean flag to control if In-Only orRobust-In-Only exchange should beused when sending the request. Thedefault value is falsewhich means that an In-Onlyexchange will be used. When using aRobust-In-Only exchange and when afault is received, this fault will be sentback to the consumer on the In-Outexchange and the response exchange(if any) would be discarded. For bothIn-Only and Robust-In-Only, if therequest exchange comes back with anError status, this error will beconveyed back to the consumer in thesame way.
wsdlExchangeTarget org.apache.servicemix.eip.support.ExchangeTarget
An exchange target pointing to a JBIendpoint that will be used to load theWSDL describing this endpoint. Thiscan be used when the endpointproxies another endpoint so that thesame WSDL definition will beexposed."
wsdlResource org.springframework.core.io.Resource
When specified, this spring resourcewill be used to load the WSDL that willbe exposed as a description for thisendpoint. This property can be usedto explicitely define the WSDL to beexposed by this endpoint. Thisproperty takes precedence over thewsdlExchangeTarget property.
Apache ServiceMix 4.5.0
38
Tips
ExchangeTarget
All patterns use the tag to specify the target of a JBI exchange.This element has the following attributes:
Name Type Descriptioninterface QName the QName of the target interface. One of service or interface attribute is requiredoperation QName the QName of the target operation (optional)service QName the QName of the target service. One of service or interface attribute is requiredendpoint String the name of the target JBI endpoint, only used when service is seturi String uri used to target the exchange (see URIs)
NamespaceContext
Some patterns use XPath expression. To use such expressions on an xml with namespaces, youneed to define a NamespaceContext.
This NamespaceContext can be referenced by a namespaceContext attribute as shown in theXPathSplitter or MessageFilter examples.
Predicates
Some patterns uses predicates to test a given JBI exchange. The only predicate currentlyimplemented is the XPathPredicate, but you can implement your own and deploy it with the serviceunit.
Configuring temporary message storage
Many of the pattern implementation need to store MessageExchanges temporarily. An example: theaggregator will need to keep track of the MessageExchange it is aggregating. By default, the EIPsuse a plain MemoryStoreFactory to create in-memory stores, but there are other options. If you setthe timeout property on the MemoryStoreFactory, it will evict old object from the in-memorystore to avoid a memory leak. You can also use a JDBCStoreFactory to store data in a databaseinstead of in memory.Example: to use an in-memory store with timeout for a storing active and closed aggregations in a, you can do
Apache ServiceMix 4.5.0
39
/Users/gertv/Projects/ASF/servicemix-documentation/target/sitegen/jbi/URIs.html
Creating your own patterns
Some classes have been designed to be extensible, this includes:• org.apache.servicemix.eip.support.AbstractAggregator• org.apache.servicemix.eip.support.AbstractSplitter
2.7. servicemix-execOverviewThe ServiceMix Exec component is used to invoke commands (executables, binaries, shellcommands, shell scripts, etc). The command can be static (defined in the endpoint attributes) ordynamic (provided in the incoming message, including arguments).
Namespace and xbean.xml
The namespace URI for the servicemix-exec component is http://servicemix.apache.org/exec/1.0. The is an example of xbean.xml with a namespace definition withprefix exec.
Endpoints types
The ServiceMix Exec component only defines one endpoint, called exec:endpoint.
Endpoint exec:endpointEndpoint properties
PropertyName Type Description
command java.lang.String
This attribute specifies the defaultcommand to use if no is provided in theincoming message.
nbsp; hedefault value is null.
endpoint java.lang.String
Get the endpoint implementation.
interfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
marshaler org.apache.servicemix.exec.marshaler.ExecMarshalerSupport
With this method you can specifya marshaler class which provides thelogic for converting a message into aexecution command. This class has toimplement the interface classExecMarshalerSupport.If you don't specify a marshaler, the
Apache ServiceMix 4.5.0
40
DefaultExecMarshalerwill be used.
service javax.xml.namespace.QName
Get the service qualified name ofthe endpoint.
wsdl org.springframework.core.io.Resource
This attribute specifies theabstract WSDL describing the endpointbehavior.
Abstract WSDLTODO
How it works
TODO
2.8. servicemix-fileOverviewThe ServiceMix File component provides JBI integration to the file system. It can be used to read &write files via URI or to periodically poll directories for new files.
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/file/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-file component defines two endpoint type:▪ file:poller :: Periodically polls a directory for files and sends an exchange for every file
▪ file:sender :: Writes the contents of an exchange to a file
file:pollerEndpoint properties
Property Name Type Description
archive java.io.File Specifies a directory relative to the polling directory to which processed files arearchived.
Apache ServiceMix 4.5.0
41
autoCreateDirectory booleanSpecifies if the endpoint should create the target directory, if it does not alreadyexist. If you set this to false and the directory does not exist,the endpoint will not do anything. Default value is true.
comparator java.util.ComparatorSpecifies a Comparator which will be used to sort File listingbefore starting to process. The default is null, means no sorting.Comparator objects are implementations ofjava.util.Comparator.
component org.apache.servicemix.common.DefaultComponentconcurrentPolling boolean
Sets whether more than one poll can be active at a time (true means yes).Default value is false.
delay longSets the amount of time in milliseconds that the endpoint should waitbefore making the first poll.
deleteFile boolean Specifies if files should be deleted after they are processed. Default value istrue.endpoint java.lang.StringGet the endpoint implementation.
file java.io.FileSpecifies the file or directory to be polled. If it is a directory, all files in thedirectory or its sub-directories will be processed by the endpoint. If it is a file,only files matching the filename will be processed."
filter java.io.FileFilter Bean defining the class implementing the file filtering strategy. This bean mustbe an implementation of the java.io.FileFilter interface.
firstTime java.util.Date
Sets the date on which the first poll will be executed. If a delay is also setusing setDelay, the delay interval will be added after the datespecified.
interfaceName javax.xml.namespace.QName
Get the qualified name of the endpoint interface.
lockManager org.apache.servicemix.common.locks.LockManagerBean defining the class implementing the file locking strategy. This bean mustbe an implementation of theorg.apache.servicemix.locks.LockManager interface. By default,this will be set to an instances oforg.apache.servicemix.common.locks.impl.SimpleLockManager.
marshaler org.apache.servicemix.components.util.FileMarshalerSpecifies a FileMarshaler object that will marshal file data intothe NMR. The default file marshaller can read valid XML data.FileMarshaler objects are implementations oforg.apache.servicemix.components.util.FileMarshaler.
maxConcurrent int How many open exchanges can be pending. Default is -1 for unboundedpending exchanges. Set to 1...n to engage throttling of polled file processing.period long
Sets the number of milliseconds between polling attempts.
recursive booleanSpecifies if sub-directories are polled; if false then the poller will only poll thespecified directory. If the endpoint is configured to poll for a specific file ratherthan a directory then this attribute is ignored. Default is true.
scheduler org.apache.servicemix.common.scheduler.Scheduler
Sets a custom scheduler implementation if you need more fine-grainedcontrol over the polling schedule.
service javax.xml.namespace.QNameGet the service qualified name of the endpoint.
serviceUnit org.apache.servicemix.common.ServiceUnittargetEndpoint java.lang.String the name of the endpoint to which requests are senttargetInterface javax.xml.namespace.QName the QName of the interface to which requests are senttargetOperation javax.xml.namespace.QName the QName of the operation to which requests are senttargetService javax.xml.namespace.QName the QName of the service to which requests are senttargetUri java.lang.StringGets the target URI of the consumer endpoint.
file:senderEndpoint properties
Property Name Type Description
Apache ServiceMix 4.5.0
42
append booleanSpecifies if the endpoint appends data to existing files or if it willoverwrite existing files. The default is for the endpoint to overwriteexisting files. Setting this to true instructs theendpoint to append data. Default value is false.
autoCreateDirectory booleanSpecifies if the endpoint should create the target directory if it doesnot exist. If you set this to false and the directorydoes not exist, the endpoint will not do anything. Default value:true.
component org.apache.servicemix.file.FileComponentdirectory java.io.File Specifies the directory where the endpoint writes files.endpoint java.lang.String
Get the endpoint implementation.
interfaceName javax.xml.namespace.QNameGet the qualified name of the endpoint interface.
marshaler org.apache.servicemix.components.util.FileMarshalerSpecifies a FileMarshaler object that will marshalmessage data from the NMR into a file. The default file marshaler canwrite valid XML data. FileMarshaler objects areimplementations oforg.apache.servicemix.components.util.FileMarshaler.
overwrite booleanSpecifies if the endpoint overwrites existing files or not. The default isfor the endpoint to not overwrite existing files. Setting this totrue instructs the endpoint to overwrite existing files.Default value is false.
service javax.xml.namespace.QName
Get the service qualified name of the endpoint.
tempFilePrefix java.lang.String Specifies a string to prefix to the beginning of generated file names.tempFileSuffix java.lang.String Specifies a string to append to generated file names.
2.9. servicemix-ftpOverviewThe ServiceMix FTP component provides JBI integration to the FTP servers. It can be used to read &write files over FTPor to periodically poll directories for new files.
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/ftp/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-ftp component defines two endpoint type:▪ ftp:poller :: Periodically polls a directory on an FTP server for files and sends an
exchange for every file▪ ftp:sender :: Writes the contents of an exchange to a file on an FTP server
Apache ServiceMix 4.5.0
43
ftp:pollerEndpoint properties
Property Name Type Description
archive java.net.URISpecifies a directory relative tothe polling directory to whichprocessed files are archived.
autoCreateDirectory boolean
Specifies if the endpointshould create the targetdirectory, if it does not alreadyexist. If you set this tofalse and thedirectory does not exist, theendpoint will not do anything.Default value istrue.
changeWorkingDirectory boolean
When set totrue, thepoller will do an explicitcwd into thedirectory to be polled. Defaultto false.Recursive polling will not bepossible if this feature isenabled.
clientPool org.apache.servicemix.ftp.FTPClientPool
Set a custom FTPClientPool. Ifthis property has not been set,the FTP client pool will becreated based on theinformation provided in theURI.
component org.apache.servicemix.common.DefaultComponentthecomponentimplementation to use
concurrentPolling boolean
Sets whether more thanone poll can be active at a time(true means yes). Default valueis false.
delay long
Sets the amount of timein milliseconds that theendpoint should wait beforemaking the first poll.
deleteFile booleanDelete the file after it has beensuccesfully processed?Defaults totrue
endpoint java.lang.String
Get the endpointimplementation.
filter java.io.FileFilterSets the filter to select whichfiles have to be processed.When not set, all files will bepicked up by the poller.
firstTime java.util.Date
Sets the date on whichthe first poll will be executed.If a delay is also set usingsetDelay, thedelay interval will be addedafter the date specified.
Apache ServiceMix 4.5.0
44
interfaceName javax.xml.namespace.QName
Get the qualified name ofthe endpoint interface.
lockManager org.apache.servicemix.common.locks.LockManager
Set a custom LockManagerimplementation for keepingtrack of which files are alreadybeing processed. The defaultimplementation is a simple,in-memory lock managementsystem.
marshaler org.apache.servicemix.components.util.FileMarshaler
Set a custom FileMarshalerimplementation to control howthe file contents is beingtranslated into a JBI message.The default implementationreads XML contents from thefile.
period long
Sets the number ofmilliseconds between pollingattempts.
recursive booleanSpecifies whethersubdirectories should bepolled. Defaults totrue
scheduler org.apache.servicemix.common.scheduler.Scheduler
Sets a custom schedulerimplementation if you needmore fine-grained control overthe polling schedule.
service javax.xml.namespace.QName
Get the service qualifiedname of the endpoint.
serviceUnit org.apache.servicemix.common.ServiceUnitstateless boolean When set tofalsetargetEndpoint java.lang.String the name of the endpoint towhich requests are senttargetInterface javax.xml.namespace.QName the QName of the interface towhich requests are senttargetOperation javax.xml.namespace.QName Set the operation to beinvoked on the target service.targetService javax.xml.namespace.QName the QName of the service towhich requests are senttargetUri java.lang.StringGets the target URI of theconsumer endpoint.
uri java.net.URI Configures the endpoint froma URI.
ftp:senderEndpoint properties
Property Name Type Description
autoCreateDirectory boolean
Specifies if the endpoint shouldcreate the target directory, if itdoes not already exist. If you setthis to false andthe directory does not exist, theendpoint will not do anything.Default value istrue.
Apache ServiceMix 4.5.0
45
checkDuplicates booleanSpecifies whether duplicatesshould be checked. Defaults totrue.
clientPool org.apache.servicemix.ftp.FTPClientPoolSet a custom FTPClientPool. If thisproperty has not been set, the FTPclient pool will be created based onthe information provided in theURI.
component org.apache.servicemix.ftp.FtpComponentendpoint java.lang.String
Get the endpointimplementation.
interfaceName javax.xml.namespace.QNameGet the qualified name of theendpoint interface.
marshaler org.apache.servicemix.components.util.FileMarshaler
Set a custom FileMarshalerimplementation to control how thefile contents is being translatedinto a JBI message. The defaultimplementation reads XMLcontents from the file.
overwrite booleanSpecifies if a file with the samename already exists on the FTPserver, the file should beoverwritten. Defaults tofalse.
service javax.xml.namespace.QName
Get the service qualified nameof the endpoint.
uniqueFileName java.lang.StringSets the name used to make aunique name if no file name isavailable on the message.
uploadPrefix java.lang.String
Set the file name prefix usedduring upload. The prefix will beautomatically removed as soon asthe upload has completed. Thisallows other processes to discerncompleted files from files that arebeing uploaded.
uploadSuffix java.lang.String
Set the file name suffix usedduring upload. The suffix will beautomatically removed as soon asthe upload has completed. Thisallows other processes to discerncompleted files from files that arebeing uploaded.
uri java.net.URI Configures the endpoint from a URI
Examples
Using ftp:pool to configure the FTP connections
In order to gain more control over the FTP connection parameters (active/passive, timeout, ...) thatare being used, you can define your own FTP connection pool. Afterward, you can refer to the poolobject from both a sender and poller endpoint.
Apache ServiceMix 4.5.0
46
The table below shows the full list of options offered by ftp:pool:
Property Name Type Descriptionaddress java.net.InetAddress Set the remote internet address to connect to.binaryMode boolean Use binary mode transfers. Defaults totrue.
config org.apache.commons.net.ftp.FTPClientConfigConfigure a custom FTPClientConfig instanceto allow more fine-grained control over theFTP connections in the pool.
controlEncoding java.lang.StringConfigure the encoding used in the FTPcontrol connections. Defaults toISO-8859-1
dataTimeout intSpecifies a timeout used on the FTP dataconnection. Defaults to120000
host java.lang.String Set the remote host name to connect to.localAddress java.net.InetAddress Set the local IP address to be used whenestablishing the connection.localPort int Set the local TCP/IP port to be used whenestablishing the connection.passiveMode boolean Use passive mode FTP transfers. Defaults tofalsepassword java.lang.String Set the password for logging into the FTPserver.pool org.apache.commons.pool.ObjectPool Set a custom ObjectPool instance to use forthe connection pooling.port int Set the remote port number to connect to.username java.lang.String Set the login to use to access the FTP server.
If you need even more fine-grained control over the FTP connections or the way the payloads arebeing handled, have a look at the Camel FTP component, which offers a lot of options out of thebox, but also allows setting any property on its underlying Commons NET FTPClient andFTPClientConfig instances.
2.10. servicemix-httpOverviewServiceMix ships with a JBI compliant HTTP/SOAP binding component named servicemix-http.Here are the main features:
• JBI compliant Binding Component
Apache ServiceMix 4.5.0
47
http://camel.apache.org/ftp2.htmlhttp://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.htmlhttp://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClientConfig.html
• Usable in a lightweight mode in servicemix.xml configuration files• Integrated HTTP server based on Jetty 6• HTTP Client using Jakarta Commons HTTP Client• Highly performant and scalable using Jetty 6 continuations• SOAP 1.1 and 1.2 support• MIME attachments• WS-Addressing support• WSDL based and XBean based deployments• Support for all MEPs as consumers or providers• SSL support• WS-Security support
Namespace and xbean.xml
The namespace URI for the servicemix-bean JBI component is http://servicemix.apache.org/http/1.0. This is an example of an xbean.xml file with a namespace definition with prefix bean.
Endpoint types
The servicemix-http component defines four endpoint type:▪ http:consumer :: This endpoint allows you to expose a service in the ESB to the outside
world over HTTP. Whenever it receives an HTTP request, it will interact with the configuredservices on the ESB to provide the HTTP response.
▪ http:soap-consumer :: Similar to http:consumer, but specifically geared towards handingSOAP requests and responses
▪ http:provider :: This endpoint allows you to access remote services from within the ESB.It will perform an external HTTP request whenever it receives a JBI MessageExchange
▪ http:soap-provider :: Similar to http:provider, but specifically geared towardsperforming SOAP requests
It also provides one additional legacy endpoints, which are still available to ease migration fromServiceMix 3:
▪ http:endpoint :: (Deprecated) Legacy endpoint, capable to acting as a consumer orprovider based on the configuration
Apache ServiceMix 4.5.0
48
http:endpointEndpoint properties
Property Name Type Description
authMethod java.lang.String a string naming th