RFT: Developer's Guide

>Setting up an RFT Service
Service Data Elements for RFT

Setting up an RFT Grid Service

The Core Final distributions include a deployable GAR for RFT named multirft.gar.

Building the GAR from source distribution

This step is optional and is only necessary if you downloaded the RFT source code. Otherwise, go to step 2.

Make a deployable GAR file as follows:


Change the ogsacore.javadir property in build.xml to point to the ogsa/impl/java directory in your ogsa installation.

Another alternative is to override the default property by running:

 ant -Dogsacore.dir=<your ogsa installation> compile


$ cd data_management/multirft 
$ ant deployGar

This builds a GAR that can be deployed in a service container.

Configure multirft-server-config.wsdd

Set the following parameters in multirft-server-config.wsdd:


Name of the JDBC Driver for the database you want to use. For a PostgreSQL installation as described above this value is: org.postgresql.Driver

The driver is shipped along with our distribution.

connectionURL URL for the Database in order make the connection. For postgres this is jdbc:postgresql:<db>, and in our example above it would be jdbc:postgresql:ogsa
username Local user with access to the database. (On windows this would be Administrator)
password Password set up to access the database for the particular user.
connection.pooling Optional. If set to true, this option forces RFT to reuse the data channel when transferring a large number of files between the same hosts.
Deploy GAR

Deploy the GAR by running the following command in $GLOBUS_LOCATION:

$ ant -f build-packages.xml deployGar \ -Dgar.name=<location of multirft.gar>    
Testing the RFT Service

Deploy multirft.gar by running:

$ source setenv.sh 

You can provide the list of transfers in the form of a file. The format of the file is as follows (the "# comments" are provided for explanation of the parameters and should not be included in the transfers list):

true        # type of transfer true=binary false=ascii
16000       # block size in bytes
16000       # TCP buffer size in bytes
false       # Notpt
1           # Number of parallel streams
true        # DCAU
2           # Concurrency
/DC=org/DC=doegrids/OU=Services/CN=dg0n1.mcs.anl.gov   # Source Host Subject 
/DC=org/DC=doegrids/OU=Services/CN=dg0n1.mcs.anl.gov   # Destination Host Subject
gsiftp://dg0n1.mcs.anl.gov/sandbox/madduri/smalltest   # source URL1
gsiftp://dg0n1.mcs.anl.gov/sandbox/madduri/test1       # destination URL1
gsiftp://dg0n1.mcs.anl.gov/sandbox/madduri/smalltest   # source URL2
gsiftp://dg0n1.mcs.anl.gov/sandbox/madduri/test2       # destination URL2


  • If you want to transfer directories recursively, you can specify that in the above-mentioned file.
  • You can transfer:
    • directory to directory
    • file to directory
    • file to file.
  • The URLs representing directories should end with a "/".

A sample directory transfer is given below ( it is also provided in etc/ of the distribution.)

true        # type of transfer true=binary false=ascii
16000       # block size in bytes
16000       # TCP buffer size in bytes
false       # Notpt
1           # Number of parallel streams
true        # DCAU
1           # Concurrency
/DC=org/DC=doegrids/OU=Services/CN=dg0n1.mcs.anl.gov  # Source Host Subject 
/DC=org/DC=doegrids/OU=Services/CN=dg0n2.mcs.anl.gov  # Destination Host Subject
gsiftp://dg0n1.mcs.anl.gov/sandbox/madduri/           # source URL1
gsiftp://dg0n2.mcs.anl.gov/sandbox/madduri/           # destination URL1

Note: In the case of directory transfer, the concurrency would always be one file.


Submit the transfer to the deployed RFT service:

$ java org.globus.ogsa.gui.RFTClient \ 
	<handle to RFT factory> \ 
	<path to transfers list>