...
The ServiceMix FTP component provides JBI integration to the FTP servers. It can be used to read & write files over FTPor FTP or to periodically poll directories for new files.
Installation
Installing the servicemix-http component can be done in several ways:
- drop the installer zip in an hotdeploy directory monitored by ServiceMix
- using ant tasks
Note that when using ant tasks, the component is not started, you will have to start it manually using ant tasks or a console.
XBean deployment
You can deploy Service Units containing a file named xbean.xml for activating consumer and provider endpoints.
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 ftp namespace with
...
<beans xmlns:ftp="http://servicemix.apache.org/ftp/1.0">
...
</beans>
Maven Archetype
The Maven servicemix-ftp-service-unit archetype creates a FTP Service Unit including poller and sender endpoints sample:
Code Block |
---|
mvn archetype:create \
-DarchetypeGroupId=org.apache.servicemix.tooling \
-DarchetypeArtifactId=servicemix-ftp-service-unit \
-DarchetypeVersion=2010.01 \
-DgroupId=your.group.id \
-DartifactId=your.artifact.id \
-Dversion=your-version
|
Once you've customized the service unit, simply install the SU:
Info |
---|
Remember that to be deployable in ServiceMix, the ServiceUnit has to be embedded in a Service Assembly: only the Service Assembly zip file can be deployed in ServiceMix. To add your SU in a SA, you need to define it in the dependency sets: Code Block |
---|
<dependency>
<groupId>your.group.id</groupId>
<artifactId>your.artifact.id</artifactId>
<version>your-version</version>
</dependency>
|
|
Endpoint Configuration
FTP Poller Endpoint
FTP
Any numbers of endpoints can be specified in the xbean.xml file.
Poller endpoint
Poller endpoints can be used to poll a FTP server directory for files, download them, and send an InOnly JBI exchange to the configured JBI service.
The following snipped snippet shows a minimal definition of a poller endpoint:
...
Info |
---|
title | Poller endpoint attributes |
---|
borderStyle | solidbgColor='lighblue' |
---|
|
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 | no | targetService | QName | the service name of the target endpoint | one of targetService, targetInterface or targetUri must be specified | targetEndpoint | String | the endpoint name of the target endpoint | one of targetService, targetInterface or targetUri must be specified | targetInterface | QName | the interface name of the target endpoint | one of targetService, targetInterface or targetUri must be specified | targetUri | String | the uri of the target endpoint | one of targetService, targetInterface or targetUri must be specified | uri | URI | the ftp uri to access the FTP server (see #URI) | yes | autoCreateDirectory | boolean | creates dir if doesn't exist (available since 2009.01) | true | archive | URI | sets the directory uri to archive files before deleting them (available since 2009.01) | null | deleteFile | boolean | whether the file should be deleted from the FTP server after processing | no (defaults to true ) | stateless | boolean | whether the polled file should be sent asynchronous or synchronous to the nmr | no (defaults to true ) | recursive | boolean | whether subdirectories should be polled | no (defaults to true ) | filter | java.io.FileFilter | a filter used when polling files: files that do not match this filter will be ignored | no | marshaler | FileMarshaler | a marshaler can be used to customize how the file is read / written (see #Marshalers) | no | lockManager | o.a.s.locks.LockManager | a custom lock manager can be used to cluster poller endpoints or to keep track of processed files when the deleteFile attribute is set to false | no | clientPool | FTPClientPool | | no |
|
FTP Sender
...
Endpoint
FTP Sender endpoints are used are provider endpoints (in the JBI sense) which accepts incoming InOnly exchanges and write the content of the exchange to a file on the FTP server.
Here is an example of a simple sender endpoint.:
Code Block |
---|
|
<ftp:sender service="test:service"
endpoint="endpoint"
uri="ftp://servicemix:rocks@localhost/smx/test" />
|
Info |
---|
title | Sender endpoint attributes |
---|
borderStyle | solidbgColor='lighblue' |
---|
|
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 | no | uri | URI | the ftp uri to access the FTP server (see #URI) | yes | autoCreateDirectory | boolean | creates dir if doesn't exist (available since 2009.01) | true | overwrite | boolean | if a file with the same name already exists on the FTP server, overwrite it | no (defaults to false ) | uniqueFileName | String | name used to create unique files when the marshaler can not give a specific file name | no (defaults to "ServiceMix") | marshaler | FileMarshaler | a marshaler can be used to customize how the file is read / written (see #Marshalers) | no | clientPool | FTPClientPool | provide specific configuration for the FTP client pool (see {#FTPClientPool]) | no | uploadSuffix | String | the file will be uploaded with this suffix (e.g. .tmp) and renamed when the upload is complete (available since version 3.1.1) | no |
|
...
The FTPClientPool is used to to retrieve connections and perform FTP calls to the server. By default, one is created and populated with the information retrieved from the URI (login, password, host, port). However, if more informations need information needs to be configured, this is the place to do so.