JetS3t
======

JetS3t is a free, open-source Java toolkit and application suite for 
Amazon Simple Storage Service (Amazon S3), Amazon CloudFront content 
delivery network, and Google Storage for Developers.

For further information, documentation, and links to discussion lists and
other resources, please visit the [JetS3t web site][jets3t]. There are also 
[historic release notes][jets3t-releasenotes-hist] summarizing the changes
in past JetS3t releases, and [pending release notes][jets3t-releasenotes-pend]
that include details about the up-coming release.

[jets3t]: http://www.jets3t.org/
[jets3t-toolkit]: http://www.jets3t.org/toolkit/toolkit.html

[jets3t-releasenotes-hist]: http://www.jets3t.org/RELEASE_NOTES.txt
[jets3t-releasenotes-pend]: https://bitbucket.org/jmurty/jets3t/src/tip/RELEASE_NOTES.txt

[jets3t-cockpit]: http://www.jets3t.org/applications/cockpit.html
[jets3t-synchronize]: http://www.jets3t.org/applications/synchronize.html
[jets3t-cockpitlite]: http://www.jets3t.org/applications/cockpitlite.html
[jets3t-uploader]: http://www.jets3t.org/applications/uploader.html


Running Applications
--------------------

Each application can be run using a script in the _bin_ directory.
To run an application, such as Cockpit, run the appropriate script from
the bin directory for your JetS3t version ("x.y.z" in these examples).

Windows:

    cd jets3t-x.y.z\bin
    cockpit.bat

Unixy:

    bash jets3t-x.y.z/bin/cockpit.sh


Configuration files
-------------------

Applications or library components generally read text configuration files,
which must be available in the classpath of a running application to be useful.

Example configuration files are located in the _configs_ directory. The
run scripts in the _bin_ directory automatically include this _configs_
directory in the classpath when running JetS3t apps.

The configuration files include:

 * `jets3t.properties`  
    Low-level toolkit configuration.
 * `synchronize.properties`  
    Properties for the Synchronize application
 * `uploader.properties`  
    Properties for the Uploader application
 * `cockpitlite.properties`  
    Properties for the CockpitLite application
 * `mime.types`  
    Maps file extensions to the appropriate mime/content type.
    For example, the "txt" extension maps to "text/plain".
 * `commons-logging.properties`  
    Defines which logging implementation to use.
 * `log4j.properties`  
    When Log4J is the chosen logging implementation, 
    these settings control how much logging information is displayed, and 
    the way it is displayed.
 * `simplelog.properties`  
    When SimpleLog is the chosen logging implementation,
    these settings control the logging information that is displayed.


JAR files
---------

The compiled JetS3t code jar files are available in the _jars_ directory,
and include the following:

 * `jets3t-x.y.z.jar`  

   The [JetS3t toolkit][jets3t-toolkit], including the JetS3t service implemention
   which underlies all the other JetS3t applications.

 * `jets3t-gui-x.y.z.jar`

   Graphical user interface components used by JetS3t GUI applications such as
   Cockpit. These components are not required by the command-line Synchronize
   tool, nor by non-graphical programs you may build.

 * `cockpit-x.y.z.jar`

   [Cockpit][jets3t-cockpit], a GUI application/applet for viewing and managing
   the contents of an S3 account.

 * `synchronize-x.y.z.jar`

   [Synchronize][jets3t-synchronize], a console application for synchronizing
   directories on a computer with an Amazon S3 account.

 * `cockpitlite-x.y.z.jar`

   [CockpitLite][jets3t-cockpitlite], a GUI application/applet for viewing and
   managing the contents of an S3 account, where the S3 account is not owned by
   the application's user directly but is made available via the Gatekeeper servlet.

 * `uploader-x.y.z.jar`

   [Uploader][jets3t-uploader], a wizard-based GUI application/applet that S3 
   account holders (Service Providers) may provide to clients to allow them to 
   upload files to S3 without requiring access to the Service Provider's S3
   credentials


Compatibility and Performance of Distributed Jar files
------------------------------------------------------

The class files in these jars are compiled for compatibility with Sun's
JDK 5 and later, and have debugging turned on to provide more information
if errors occur.

To use JetS3t in high-performance scenarios, the classes should be
recompiled using the latest version of Java available to you and with
debugging turned off.


Building JetS3t from source
---------------------------

The JetS3t distribution package includes an ANT build script (`build.xml`) that
allows you to easily rebuild the project yourself, and a default set of build
properties (`build.properties`) that you may wish to modify.

The following ANT command will recompile the JetS3t library and applications:

    ant rebuild-all

To repackage JetS3t applications or applets with your modifications for
redistribution:

    ant repackage-applets


Servlets
--------

The JetS3t application suite includes a servlet implementation of a Gatekeeper
to offer mediated third-party access to your S3 resources. The deployable WAR 
file for this servlet is located in the _servlets/gatekeeper_ directory.