...
The new HTTP endpoints are documented here.
...
Name | Type | Description | Default |
---|---|---|---|
streamingEnabled | boolean | send client side requests using HTTP streaming | false |
jettyConnectorClassName | String | Jetty connector class name | org.mortbay.nio.SelectChannelConnector |
jettyThreadPoolSize | int | thread pool size for server side requests | 255 |
maxConnectionsPerHost | int | max number of simultaneous connections to a given host | 32 |
maxTotalConnections | int | max number of total |
...
simultaneous connections | 256 |
...
This xml file should respect the given syntax, though this is a spring based xml configuration file from where all beans of class HttpEndpoint are retrieved.
See a full example here. Note that you have to define the http namespace with
...
...
Any numbers of endpoints can be specified in the xbean.xml file.
...
A consumer endpoint is a server-side http endpoint that will consumer consume plain HTTP, or HTTP+SOAP requests and send them into the NMR to a given JBI endpoint, which is called the proxied endpoint.
...
Name | Type | Description | Required |
---|---|---|---|
service | QName | the service name of the proxied endpoint | yes |
endpoint | String | the endpoint name of the proxied endpoint | yes |
interfaceName | QName | the interface name of the proxied endpoint |
|
targetService | QName | the service name of the target endpoint | no (defaults to the service attribute) |
targetEndpoint | String | the endpoint name of the target endpoint | no (defaults to the endpoint attribute) |
targetInterfaceName | QName | the interface name of the target endpoint |
|
role | String | must be 'consumer' | yes |
locationURI | URI | the http url where this proxy endpoint will be exposed | yes |
defaultMEP | URI | the default MEP uri to use | no |
defaultOperation | QName | the default operation name to set on the JBI exchange. if not set, it defaults to the QName of the root xml element | no |
soap | boolean | if set, the component will parse the soap requests and send the content into the NMR | no (defaults to false) |
soapVersion | string | can be set to '1.1' to force the use of SOAP 1.1 messages | no |
wsdlResource | if set, the wsdl will be retrieved from the given Spring resource | no |
...
authMethod | string | HTTP authentication method to use, e.g. basic | no |
...
...
The locationUri is usually something like *http://0.0.0.0:8192/jbi/Service*
The 0.0.0.0 IP address binds the server socket to all networks that the host
is in. If you use localhost, you will only be able to access the URL from
the same computer.
...
If you deploy your service unit to a ServiceMix Web application in Tomcat, the URLs of your services will be rewritten. For instance, a service with an XBean file specifying the service location URI:
...
... will be published at:
...
... instead.
...
The targetService, targetEndpoint and targetInterfaceName attributes can be used to specify the routing method to use (routing by interface, service or endpoint) and is also useful to allow several proxy endpoints to be created for the same JBI endpoint. For example to create an HTTP only endpoint and an HTTP+SOAP endpoint, both http endpoints will have the same targetEndpoint and targetService, but they must have different endpoint names.
Basic authentication configuration
The consumer endpoint supports basic authentication.
Warning |
---|
Basic authentication credentials are passed in plain text across the network. Please use additional encryption for better security, or use a stronger mechanism other than basic authentication. |
Basic authentication can be provided using the following syntax:
...
.
...
title | BasicAuthCredentials attributes |
---|---|
borderStyle | solidbgColor='lighblue' |
...
Name
...
Type
...
Description
...
Required
...
username
...
String
...
Authentication username
...
...
password
...
String
...
Authentication password
...
Provider endpoint
A provider endpoint is a client-side jbi endpoint which can receive requests from the NMR and send them to a given url where the service is provided.
...
Name | Type | Description | Required |
---|---|---|---|
service | QName | the service name of the exposed jbi endpoint | yes |
endpoint | String | the endpoint name of the exposed jbi endpoint | yes |
interfaceName | QName | the interface name of the exposed jbi endpoint | no |
role | String | must be 'provider' | yes |
locationURI | URI | the http url of the target service | yes |
soap | boolean | if set, the component will parse the soap requests and send the content into the NMR | no (defaults to false) |
soapAction | String | the SOAPAction header to send when invoking the web service | no (defaults to "") |
wsdlResource | if set, the wsdl will be retrieved from the given Spring resource | no |
...
It is important to note that you need to include the classpath element in your xbean.xml if you are deploying the HTTP Provider in a service unit so that the wsdlResource can correctly find the classpath element. Also you need to ensure that the service name and endpoint match the service and port elements of the WSDL that you wish to use to correctly return WSDL for the endpoint, remembering that the service name will use the targetNamespace for the WSDL.
Basic authentication configuration
The provider endpoint supports basic authentication.
...
Basic authentication credentials are passed in plain text across the network. Please use additional encryption for better security, or use a stronger mechanism other than basic authentication.
...
Basic authentication for a servicemix-http provider can be setup as follows:
...
... and for a servicemix-http consumer:
...
Name | Type | Description | Required |
---|---|---|---|
username | String | Authentication username |
|
password | String | Authentication password |
|
...
SSL configuration
Both consumer and provider endpoints support SSL.
...
Name | Type | Description | Required |
---|---|---|---|
keyPassword | String | key password | Defaults to keyStorePassword |
keyStore | URL | url to access the key store | Yes (defaults to system property 'javax.net.ssl.keyStore') |
keyStorePassword | String | the password to access the keystore | Yes (defaults to system property 'javax.net.ssl.keyStorePassword') |
keyStoreType | String | type of the key store | JKS |
trustStore | URL | url to access the trust store |
|
trustStorePassword | String | the password to access the trust store | If trustStore is specified, defaults to system property 'javax.net.ssl.trustStorePassword' |
trustStoreType | String | type of the trust store | JKS |
protocol | String | standard name of the requested secure socket protocol | TLS |
algorithm | String | algorithm used for key management | SunX509 |
wantClientAuth | boolean | configures the socket for consumer endpoints to accept client side authentication | false |
needClientAuth | boolean | configures the socket for consumer endpoints to require client side authentication | false |
...
In addition to xbean based deployment, the component accepts WSDL-based deployment.
The service unit may contain any number of WSDL files, each one being parsed and activating the specified endpoints.
To retrieve the necessary informations information from the wsdl, the component can recognize a jbi extension, in addition to the standard http and soap bindings, which specified the role of the component and the default MEP to use for JBI exchanges.
Here is an example of a WSDL:
...
Lightweight mode
The servicemix-http component can also be configured in a spring/xbean configuration file, for use in an embedded ServiceMix.
Here is an example of such a configuration:
...
...
When using the servicemix.xml configuration file to create http endpoints, you must include the servicemix-http-xxx.jar in your classpath.
You will find this file inside the component installer (./components/servicemix-http-xxx.zip).
Failing this, an IllegalArgumentException will be thrown with the following message:
Component name: xxxxxx is bound to an object which is not a JBI component, it is of type: javax.xml.namespace.QName
...
Accessing WSDLs
WSDLs for consumer endpoints are retrieved using the following method:
...
You can also browse the list of available services on a given port:
...
...
WS-Addressing
When used on a SOAP consumer endpoint, servicemix-http handles the WS-Adressing Action and To headers.
...
The header uses the following syntax:
...
...
where:
...
- \[delimiter\] is ":" when the \ [target namespace\] is a URN, otherwise "/".
\[target namespace\] is the namespace of the interface.Wiki Markup Wiki Markup - \[interface name\] is the name of the interface.unmigrated-wiki-markup\
- [operation name\] is the name of the operation.
For example, the following header
...
will be used to address the JBI exchange with the following properties:
- interface name: {http://example.com/stockquote\}StockQuoteInterface
- operation name: {http://example.com/stockquote\}GetLastTradePrice
...
The header uses the following syntax:
...
...
where:
\[delimiter\] is ":" when the \ [target namespace\] is a URN, otherwise "/".unmigrated-wiki-markupWiki Markup - \[target namespace\] is the namespace of the interface.
\[service name\] is the name of the service.Wiki Markup Wiki Markup - \[endpoint name\] is the name of the endpoint.
For example, the following header
...
will be used to address the JBI exchange with the following properties:
...