...
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-ftp 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.
...
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 |
|
...