Red Hat Training
A Red Hat training course is available for JBoss Enterprise SOA Platform
10.11. Configuring an FTP Provider
Table 10.7. FTP Provider Configuration
Property | Description | Required |
---|---|---|
hostname | Can be a combination of <host:port> of just <host> which will use port 21. | Yes |
username | Username that will be used for the FTP connection. | Yes |
password | Password for the above user | Yes |
directory | The FTP directory that is monitored for incoming new files | Yes |
input-suffix | The file suffix used to filter files targeted for consumption by the ESB (note: add the dot, so something like '.esbIn'). This can also be specified as an empty string to specify that all files should be retrieved. | Yes |
work-suffix | The file suffix used while the file is being process, so that another thread or process won't pick it up too. Defaults to .esbInProcess. | No |
post-delete | If true, the file will be deleted after it is processed. Note that in that case post-directory and post-suffix have no effect. Defaults to true. | No |
post-directory | The FTP directory to which the file will be moved after it is processed by the ESB. Defaults to the value of directory above. | No |
post-suffix | The file suffix which will be added to the file name after it is processed. Defaults to .esbDone . | No |
error-delete | If true, the file will be deleted if an error occurs during processing. Note that in that case error-directory and error-suffix have no effect. This defaults to "true." | No |
error-directory | The FTP directory to which the file will be moved after when an error occurs during processing. This defaults to the value of directory above. | No |
error-suffix | The suffix which will be added to the file name after an error occurs during processing. Defaults to .esbError . | No |
protocol | The protocol, can be one of:
| No |
passive | Indicates that the FTP connection is in passive mode. Setting this to "true" means the FTP client will establish two connections to the ftpserver. Defaults to false, meaning that the client will tell the FTP Server the port to which it should connect. The FTP Server then establishes the connection to the client. | No |
read-only | If true, the FTP Server does not permit write operations on files. Note that, in this case, the following properties have no effect: work-suffix, post-delete,post-directory, post-suffix, error-delete, error-directory, and error-suffix. Defaults to false. See section Read-only FTP Listener for more information. | No |
certificate-url | The URL to a public server certificate for FTPS server verification or to a private certificate for SFTP client verification. An SFTP certificate can be located as a resource embedded within a deployment artifact | No |
certificate-name | The common name for a certificate for FTPS server verification | No |
certificate-passphrase | The pass-phrase of the private key for SFTP client verification. | No |
You can configure a schedule listener that polls for remote files based on the configured schedule (scheduleidref).
Setting the ftp-provider property “read-only” to "true" will tell the system that the remote file system does not allow write operations. This is often the case when the FTP server is running on a mainframe computer where permissions are given to a specific file.
The read-only implementation uses JBoss TreeCache to hold a list of the filenames that have been retrieved and only fetch those that have not previously been retrieved. The cache should be configured to use a cacheloader to persist the cache to stable storage.
Note
There must exist a strategy for removing the filenames from the cache. There might be an archiving process on the mainframe that moves the files to a different location on a regular basis. The removal of filenames from the cache could be done by having a database procedure that removes all filenames from the cache every couple of days. Another strategy would be to specify a TreeCacheListener that upon evicting filenames from the cache also removes them from the cacheloader. The eviction period would then be configurable. This can be configured by setting a property (removeFilesystemStrategy-cacheListener) in the ftp-listener configuration.
Table 10.8. Read-only FTP Listener Configuration
Name | Description |
---|---|
scheduleidref | Schedule used by the FTP listener. See Service Scheduling. |
remoteFileSystemStrategy-class | Override the remote file system strategy with a class that implements: org.jboss.soa.esb.listeners.gateway.remotestrategies.RemoteFileSystemStrategy . Defaults to org.jboss.soa.esb.listeners.gateway.remotestrategies.ReadOnlyRemoteFileSystemStrategy |
remoteFilesystemStrategy-configFile | Specify a JBoss TreeCache configuration file on the local file system or one that exists on the classpath. Defaults to looking for a file named /ftpfile-cache-config.xml which it expects to find in the root of the classpath |
removeFilesystemStrategy-cacheListener | Specifies an JBoss TreeCacheListener implementation to be used with the TreeCache. Default is no TreeCacheListener. |
maxNodes | The maximum number of files that will be stored in the cache. 0 denotes no limit |
timeToLiveSeconds | Time to idle (in seconds) before the node is swept away. 0 denotes no limit |
maxAgeSeconds | Time an object should exist in TreeCache (in seconds) regardless of idle time before the node is swept away. 0 denotes no limit |
Here is an example configuration:
<ftp-listener name="FtpGateway" busidref="helloFTPChannel" maxThreads="1" is-gateway="true" schedule-frequency="5"> <property name="remoteFileSystemStrategy-configFile" value="./ftpfile-cache-config.xml"/> <property name="remoteFileSystemStrategy-cacheListener" value= "org.jboss.soa.esb.listeners.gateway.remotestrategies.cache.DeleteOnEvictTreeCacheListener"/> </ftp-listener>
Here is some more sample code, demonstrating how to configure the JBoss Cache component:
<region name="/ftp/cache"> <attribute name="maxNodes">5000</attribute> <attribute name="timeToLiveSeconds">1000</attribute> <attribute name="maxAgeSeconds">86400</attribute> </region>
Table 10.9. Configuration
Property | Description | Comments |
---|---|---|
maxNodes | The maximum number of files that will be stored in the cache. | 0 denotes no limit |
timeToLiveSeconds | Time to idle (in seconds) before the node is swept away. | 0 denotes no limit |
maxAgeSeconds | Time an object should exist in TreeCache (in seconds) regardless of idle time before the node is swept away | 0 denotes no limit |
Note
The helloworld_ftp_action quick start demonstrates the read-only configuration. Run 'ant help' in the helloworld_ftp_action quick start directory for instructions on running the quick start. .