The file component provides integration to the file system. It can be used to read and write files via URI. It can also be configured to periodically poll directories for new files.
It allows for the creation of two types of endpoint:
- poller endpoint
A poller endpoint polls a specified location on the file system for files. When it finds a file it reads the file and sends it to the NMR for delivery to the appropriate endpoint.
Important A poller endpoint can only create in-only message exchanges.
- sender endpoint
A sender endpoint receives messages from the NMR. It then writes the contents of the message to a specified location on the file system.
The file component has the following advanced features:
custom filters for selecting files
custom marshalers for converting the contents of a file to and from a normalized message
custom locking mechanism for controlling file access during reads
archiving of read files
A service unit that configures the file binding component will contain two artifacts:
xbean.xml
The
xbean.xml
file contains the XML configuration for the endpoint defined by the service unit. The contents of this file are the focus of this guide.Note The service unit can define more than one endpoint.
meta-inf/jbi.xml
The
jbi.xml
file is the JBI descriptor for the service unit. Example 1.1 shows a JBI descriptor for a file component service unit.Example 1.1. JBI descriptor for a file component service unit
<jbi xmlns="http://java.sun.com/xml/ns/jbi" version="1.0"> <services binding-component="false" /> </jbi>
Tip The developer typically does not need to hand code this file. It is generated by the Fuse ESB Maven tooling.
You can package file endpoints in an OSGi bundle. To do so, you need to make two minor changes:
you will need to include an OSGi bundle manifest in the
META-INF
folder of the bundle.You need to add the following to your service unit's configuration file:
<bean class="org.apache.servicemix.common.osgi.EndpointExporter" />
![]() | Important |
---|---|
When you deploy file endpoints in an OSGi bundle, the resulting endpoints are deployed as a JBI service unit. |
For more information on using the OSGi packaging see Appendix D.
The elements used to configure file endpoints are defined in the
http://servicemix.apache.org/file/1.0
namespace. You will need to add a
namespace declaration similar to the one in Example 1.2 to your
xbean.xml
file's beans
element.
Example 1.2. Namespace declaration for using file endpoints
<beans ...
xmlns:file="http://servicemix.apache.org/file/1.0"
... >
...
</beans>
In addition, you need to add the schema location to the Spring beans
element's xsi:schemaLocation
as shown in Example 1.3.
Example 1.3. Schema location for using file endpoints
<beans ...
xsi:schemaLocation="...
http://servicemix.apache.org/file/1.0 http://servicemix.apache.org/file/1.0/servicemix-file.xsd
...">
...
</beans>