ServiceMix VFS
The ServiceMix VFS component provides support for reading from and writing to virtual file systems via the enterprise service bus by using the Apache commons-vfs library.
| Availability
Note that this component is only available in releases >= 3.3. |
Endpoints
<vfs:poller service="test:vfsPoller"
endpoint="pollerEndpoint"
path="file:///home/lhein/input/"
targetService="test:vfsSender"
period="10000"
deleteFile="true"
recursive="true" >
<property name="marshaler">
<bean class="org.apache.servicemix.components.util.BinaryFileMarshaler" />
</property>
</vfs:poller>
<vfs:sender service="test:vfsSender"
endpoint="senderEndpoint"
path="file:///home/lhein/output/">
<property name="marshaler">
<bean class="org.apache.servicemix.components.util.BinaryFileMarshaler" />
</property>
</vfs:sender>
Poller generates an InOnly message
| Poller endpoint attributes
Name |
Type |
Description |
Default |
service |
QName |
the service name of the endpoint |
required to be spec'd |
endpoint |
string |
the endpoint name of the endpoint |
required to be spec'd |
interfaceName |
QName |
the interface name of the endpoint |
|
targetService |
QName |
the service name of the target endpoint |
|
targetEndPoint |
string |
the endpoint name of the target endpoint |
|
targetInterface |
QName |
the interface name of the target endpoint |
|
targetUri |
string |
the uri of the target endpoint |
|
firstTime |
date |
datetime before first poll can take place |
null (first poll right after start) |
delay |
long |
amount of time first polling is delayed after start |
0 |
period |
long |
amount of time between polls |
5000 |
path |
string |
sets the vfs path to poll |
null (must be spec'd) |
deleteFile |
boolean |
delete file when it is processed |
true |
recursive |
boolean |
process sub directories |
true |
marshaler |
class |
org.apache.servicemix.components.util.FileMarshaler |
DefaultFileMarshaler |
lockManager |
class |
org.apache.servicemix.locks.LockManager |
SimpleLockManager |
selector |
class |
import org.apache.commons.vfs.FileSelector |
null - no selector |
fileSystemManager |
class |
sets the vfs file system manager object |
null (using VFS.getManager() ) |
|
| Sender endpoint attributes
Name |
Type |
Description |
Default |
service |
QName |
the service name of the endpoint |
required to be spec'd |
endpoint |
string |
the endpoint name of the endpoint |
required to be spec'd |
path |
string |
sets the vfs path to poll |
null (must be spec'd) |
marshaler |
class |
org.apache.servicemix.components.util.FileMarshaler |
DefaultFileMarshaler |
fileSystemManager |
class |
sets the vfs file system manager object |
null (using VFS.getManager() ) |
|
For all xbean file endpoint configuration take a look at Xml schemas
Marshalers
By default, poller endpoints expect the content of the file to be in xml format.
Below is an example of a non-XML file marshaler that moves a file from an inbox to an outbox directory. The binary marshaler sends a message with the file attached. This allows any file to be processed.
The contents below were used in an xbean.xml file for a service unit named filemover
<?xml version="1.0"?>
<beans xmlns:vfs="http://servicemix.apache.org/vfs/1.0"
xmlns:proj="http://servicemix.apache.org/samples/filemover"
xmlns:sm="http://servicemix.apache.org/config/1.0">
<vfs:poller service="proj:vfsPoller"
endpoint="pollerEndpoint"
path="file:///C:/opensrc/test/myInbox"
targetService="proj:vfsSender"
period="10000"
deleteFile="true"
recursive="true" >
<property name="marshaler">
<bean class="org.apache.servicemix.components.util.BinaryFileMarshaler" />
</property>
</vfs:poller>
<vfs:sender service="proj:vfsSender"
endpoint="senderEndpoint"
path="file:///C:/opensrc/test/myOutbox/">
<property name="marshaler">
<bean class="org.apache.servicemix.components.util.BinaryFileMarshaler" />
</property>
</vfs:sender>
</beans>
The path attribute
Have a look at the Apache Commons-VFS Supported File Systems page.
| Attention
Some of the VFS are accessed read-only. Those file system types can't be used for sender endpoints and will
throw Exceptions when trying to do so. Have a look at the comments on the above linked page. It is stated what kind
of access is provided by which system. |