FeaturesThe FileTransfer component is a Binding Component which supports file transfers. This component allows to:
Exposing a file system access as a service (Provides mode)
UsagePut OperationWhen the put operation is set on the incoming IN message, the component writes the XML message to the configured directory. The created file takes the name described in the service unit (filename parameter) otherwise the operation name is taken. For each file created, the system date is appended to this file name. The IN message looks like : <?xml version="1.0" encoding="UTF-8"?> <ver:put xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3">?</ver:put> The service does not return a message. MPut OperationWhen the mput operation is set on the incoming IN message, the component writes the attachments on the configured directory. <?xml version="1.0" encoding="UTF-8"?> <ver:mput> <ver:attachments xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <!--1 or more repetitions:--> <ver:filename><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:test1.xml"/></ver:filename> <ver:filename><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:test2.xml"/></ver:filename> </ver:attachments> </ver:mput> The service does not return a message. The available exchange pattern is : InOnly. Get OperationWhen the get operation is set on the incoming IN message, the component retrieves ONE file from the configured directory and return it as an XML message content.
The name of the file to retrieve is set in the XML IN content of the message.
The IN message looks like :
<?xml version="1.0" encoding="UTF-8"?> <ver:get xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <ver:filename>file name to retrieve</ver:filename> </ver:get> The OUT message returned to the consumer is the content of the XML file
The service might return a Fault when an element in the request is missing or if an IO error occurs.
The available exchange patterns is : InOut.
GetAsAttachement OperationWhen the getAsAttachment operation is set on the incoming IN message, the component retrieve ONE file from the configured directory according to the filename(or filter) set in the XML request. The IN message looks like: <?xml version="1.0" encoding="UTF-8"?> <ver:getAsAttachment xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <ver:filename>file name to retrieve</ver:filename> </ver:getAsAttachment> The OUT message returned to the consumer contains file, as attachment: <?xml version="1.0" encoding="UTF-8"?> <tns:getAsAttachmentResponse xmlns:tns="http://petals.ow2.org/components/filetransfer/version-3"> <tns:attachment> <tns:filename><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:test1.xml"/></tns:filename> </tns:attachment> </tns:getAsAttachmentResponse> The service might return a Fault when an element in the request is missing or if an IO error occurs. The available exchange pattern is : InOut. MGet OperationWhen the mget operation is set on the incoming IN message, the component retrieves files from the configured directory, according to the filenames (or filters) set in the XML request. Each file is set in the OUT message as an attachment. <?xml version="1.0" encoding="UTF-8"?> <ver:mget xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <\!\--1 or more repetitions:-\-> <ver:filename>*.xml</ver:filename> <ver:filename>myFile.txt</ver:filename> </ver:mget> The OUT message returned to the consumer contains files, as attachments: <?xml version="1.0" encoding="UTF-8"?> <tns:mgetResponse xmlns:tns="http://petals.ow2.org/components/filetransfer/version-3"> <tns:attachments> <tns:filename><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:test1.xml"/></tns:filename> <tns:filename><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:myFile.txt"/></tns:filename> </tns:attachments> </tns:mgetResponse> The service might return a Fault when an element in the request is missing or if an IO error occurs. The available exchange pattern is : InOut. CheckFile OperationWhen the check operation is set on the incoming IN message, the component check <ver:checkFile xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <ver:filename>?</ver:filename> </ver:checkFile> The OUT message returned to the consumer looks like : <ver:checkFileResponse xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <ver:filename>?</ver:filename> <ver:exist>true|false</ver:exist> </ver:checkFileResponse> The service might return an ioFault. Del OperationWhen the del operation is set on the incoming IN message, the component deletes the remote file. The IN message looks like : <?xml version="1.0" encoding="UTF-8"?> <ver:del xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3"> <ver:filename>?</ver:filename> </ver:del> The service does not return a message. The available exchange pattern is : InOnly. Dir OperationWhen the dir operation is set on the incoming IN message, the component returns the file names listed from the configured directory. <?xml version="1.0" encoding="UTF-8"?> <ver:dir xmlns:ver="http://petals.ow2.org/components/filetransfer/version-3" /> The OUT message returned to the consumer looks like : <?xml version="1.0" encoding="UTF-8"?> <tns:dirResponse xmlns:tns="http://petals.ow2.org/components/filetransfer/version-3"> <tns:filename>file.xml</tns:filename> <tns:filename>file1.xml</tns:filename> <tns:filename>file2.xml</tns:filename> </tns:dirResponse> The service might return an ioFault. ConfigurationService Unit descriptorExample of a File Transfer Service Unit descriptor that provides a Service: <?xml version="1.0" encoding="UTF-8"?> <!-- JBI descriptor for the PEtALS' "petals-bc-filetransfer" component (FileTransfer). Originally created for the version 3.0 of the component. --> <jbi:jbi version="1.0" xmlns:filetransfer="http://petals.ow2.org/components/filetransfer/version-3" xmlns:jbi="http://java.sun.com/xml/ns/jbi" xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5" xmlns:generateNs="http://petals.ow2.org/filetransfer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Import a Service into PEtALS or Expose a PEtALS Service => use a BC. --> <jbi:services binding-component="true"> <!-- Import a Service into PEtALS => provides a Service. --> <jbi:provides endpoint-name="myFileTransferSUEndpointName" interface-name="filetransfer:FileTransfer" service-name="filetransfer:myFileTransferSUServiceName"> <!-- CDK specific elements --> <petalsCDK:wsdl>FileTransferService.wsdl</petalsCDK:wsdl> <petalsCDK:validate-wsdl>true</petalsCDK:validate-wsdl> <!-- Component specific elements --> <filetransfer:folder>${PETALS_HOME}/filetransfer/out</filetransfer:folder> <filetransfer:backup-directory>${PETALS_HOME}/filetransfer/backup</filetransfer:backup-directory> <filetransfer:filename>gettingstarted.xml</filetransfer:filename> </jbi:provides> </jbi:services> </jbi:jbi> Configuration of a Service Unit to provide a service (JBI)
Configuration of a Service Unit to provide a service (CDK)
Configuration of a Service Unit to provide a service (File Transfer)
InterceptorExample of an interceptor configuration: <?xml version="1.0" encoding="UTF-8"?> <!--...--> <petalsCDK:su-interceptors> <petalsCDK:send> <petalsCDK:interceptor name="myInterceptorName"> <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param> <petalsCDK:param name="myParamName2">myParamValue2</petalsCDK:param> </petalsCDK:interceptor> </petalsCDK:send> <petalsCDK:accept> <petalsCDK:interceptor name="myInterceptorName"> <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param> </petalsCDK:interceptor> </petalsCDK:accept> <petalsCDK:send-response> <petalsCDK:Interceptor name="myInterceptorName"> <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param> </petalsCDK:Interceptor> </petalsCDK:send-response> <petalsCDK:accept-response> <petalsCDK:Interceptor name="myInterceptorName"> <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param> </petalsCDK:Interceptor> </petalsCDK:accept-response> </petalsCDK:su-interceptors> <!--...--> Interceptors configuration for SU (CDK)
Service Unit contentThe Service Unit has to contain the following elements, packaged in an archive:
service-unit.zip + META-INF - jbi.xml (as defined above) - service.wsdl (optional) Invoking service on incoming file (Consumes mode)If you want to invoke a service in the JBI bus with files, put the files in the configured directory (folder). At each configured polling period (polling-period), the component fetchs the incoming files. For each received files and according to the transfer mode (transfer-mode or base-msg), the component creates a new message exchange and attachs the file, either as source or attachment. If a file is put as a attachment, the name of the attachment is set to the name of the file, and in the source of the message exchange, the component put a XML structure ccording to xop rules. The resulted message exchange(s) are sent to the target endpoint. During the transfer, if the backup directory (backup-directory) is set, the transfered file is moved into it and never deleted by the component. Otherwise the file is moved to the system temporary directory. When deploying a service unit like in the following code snippet, all the files put in the directory $PETALS_HOME/filetransfer/in would be set as the payload of an invocation to the ftContentNoBaseMsgService service. ConfigurationsService Unit descriptorExample 1: use of the parameter transfer-mode <?xml version="1.0" encoding="UTF-8"?> <jbi:jbi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5" xmlns:wsdl="http://petals.ow2.org/filetransfer" xmlns:filetransfer="http://petals.ow2.org/components/filetransfer/version-3" xmlns:jbi="http://java.sun.com/xml/ns/jbi" version="1.0"> <jbi:services binding-component="false"> <jbi:consumes interface-name="wsdl:ftContentNoBaseMsg" service-name="wsdl:ftContentNoBaseMsgService" endpoint-name="ftContentNoBaseMsgEndpoint"> <petalsCDK:timeout>20</petalsCDK:timeout> <petalsCDK:mep>InOnly</petalsCDK:mep> <petalsCDK:operation>simplefiletransfer</petalsCDK:operation> <filetransfer:folder>${PETALS_HOME}/filetransfer/in</filetransfer:folder> <filetransfer:polling-period>3000</filetransfer:polling-period> <filetransfer:transfer-mode>content</filetransfer:transfer-mode> </jbi:consumes> </jbi:services> </jbi:jbi> Example 2 : use of the parameter base-msg <?xml version="1.0" encoding="UTF-8"?> <!-- JBI descriptor for the Petals' "petals-bc-filetransfer" component (FileTransfer). Originally created for the version 3.0 of the component. --> <jbi:jbi version="1.0" xmlns:filetransfer="http://petals.ow2.org/components/filetransfer/version-3" xmlns:generatedNs="http://petals.ow2.org/filetransfer" xmlns:jbi="http://java.sun.com/xml/ns/jbi" xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- Import a Service into Petals or Expose a Petals Service => use a BC. --> <jbi:services binding-component="true"> <!-- Expose a Petals Service => consumes a Service. --> <jbi:consumes interface-name="itfNs:ftAttachmentBaseMsg" service-name="generatedNs:ftAttachmentBaseMsgService" endpoint-name="ftAttachmentBaseMsgEndpoint" xmlns:itfNs="http://petals.ow2.org/filetransfer"> <!-- CDK specific elements --> <petalsCDK:timeout>30000</petalsCDK:timeout> <petalsCDK:mep>InOnly</petalsCDK:mep> <!-- Component specific elements --> <filetransfer:folder>${PETALS_HOME}/filetransfer/in4 </filetransfer:folder> <filetransfer:polling-period>1000</filetransfer:polling-period> <filetransfer:base-message> <![CDATA[<customMessage><attachments><filein>$attachment</filein></attachments></customMessage>]]> </filetransfer:base-message> </jbi:consumes> </jbi:services> </jbi:jbi> Configuration of a Service Unit to consume a service (JBI)
Configuration of a Service Unit to consume a service (CDK)
Configuration of a Service Unit to consume a service (File Transfer)
Component ConfigurationConfiguration of the component (CDK)
Definition of CDK parameter scope :
InterceptorInterceptors can be defined to inject some post or pre processing in the component during service processing. Using interceptor is very sensitive and must be manipulate only by power users. An non properly coded interceptor engaged in a component can lead to uncontrolled behaviors, out of the standard process. Example of an interceptor configuration: <?xml version="1.0" encoding="UTF-8"?> <!--...--> <petalsCDK:component-interceptors> <petalsCDK:interceptor active="true" class="org.ow2.petals.myInterceptor" name="myInterceptorName"> <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param> <petalsCDK:param name="myParamName2">myParamValue2</petalsCDK:param> </petalsCDK:interceptor> </petalsCDK:component-interceptors> <!--...--> Interceptors configuration for Component (CDK)
|
Table of contents Contributors
No contributors found for: authors on selected page(s)
|