XJFTP > Frequently Asked Questions
Sections in this FAQ:
What is XJFTP? : About the project
What is XJFTP?
An FTP Server, written in the Java Programming Language. It has a modular design (using Inversion of Control/Dependency Injection) using SpringFramework to allow pluggable JavaBeans to be used for handling the commands and processing the FTP data.
Why is XJFTP? : Why it was designed etc.
What's wrong with all the other FTP Servers?
The one major downfall with a traditional FTP Server, is it's dependency on the file system. In cutting-edge Enterprise Applications, you will usually have a large-scale database, ERP system or similar, where all the data is stored. This means that if you write incoming files to a disk, you then have to have some mechanism of getting them into your main application.
What are the other problems with FTP?
XJFTP was written to solve the problem of legacy FTP-based systems needing to transfer files to and from
SOAs (Service Oriented Architectures) and Web Services solutions. It is written in such a way that there
is absolutely no dependency on either web services or HTTP, you can plugin any underlying protocol you like,
allowing FTP clients to access data in virtually any system.
The problem with using a conventional FTP server were:
How does XJFTP help?
The FTP client user installs the XJFTP application, which you provide in addition to any web service
or other protocol adaptor client you require to access your service.
The FTP-client application (e.g. a legacy system) is then configured to FTP files to and from this
"local" ftp server, rather than it's ultimate destination (the central system).
Underneath the hood, XJFTP uses the protocol adaptor you have written to perform all the actions that
your existing FTP server would have done. This includes account authentication, listing files on the
server, and sending and retrieving files.
Your server application can then provide greater tracability, as it knows exactly where each uploaded
file came from, as it has not just retrieved it from a somewhere on its local hard disk.
If HTTPS (either a web service, or proprietary application-level protocol) is used for the comms,
then no firewall configuration is required to allow FTP in any direction, all you need
is outbound HTTPS at the client's site, and inbound HTTPS at your site (which you probably already have).
What comes "in the box"?
A functional FTP server implementation, designed to run on all Java platforms with little or no configuration required.
An example "External Handler" (Emulating a Web Service), which you can turn on and off
with a single config file change. This transforms the server from working with files,
to working with Java Objects generated in memory.
Obtaining : How do I get XJFTP?
Where can I download XJFTP?
The XJFTP Release Download Page
Requirements : What do I need to run it?
What Operating System?
XJFTP is written in Java, so should run on almost any OS. It has been developed under a combination of Windows and Linux, so it should work easily on these systems.
What else is required?
You need Java, XJFTP was written under Java 1.4, but should be forwards compatible, so 1.4.2 upwards. Backwards compatiblity below Java 1.4 is not likely.
How about dependencies?
If you download the main release (xjftp-X.XX.zip / xjftp-X.XX.tar.gz), then all the required JARs are contained within that file. If you would prefer to download all the dependencies yourself, download the xjftp-X.XX-nodeps.zip file, and check the DEPENDENCIES.TXT file.
At the time of writing, XJFTP requires
The XJFTP Team will endeavour to keep up to date with the latest versions of the dependencies, each release will be certified with a particular version of each component, but you may well find it runs perfectly with earlier or later versions.
Installing : I have it, what now?
How to install XJFTP
Extract the ZIP/TAR.GZ file to directory on your computer. Run the xjftp.bat (Windows) or xjftp.sh (Unix/Linux) file to start up the server.
Running from the command line...
Run the following command java -Djava.ext.dirs=lib -jar xjftp-server.jar
Changing the configuration
There are 2 configuration files for XJFTP, one standard "properties" file, and for further customisations, the spring-config.xml file. More instructions on customising xjftp can be found in the documentation contained within the release.
Licensing : How can I legally use it?
About the License
See the Apache License v2.0 page for more information, by basically, XJFTP is Open Source, and may be re-distributed with any changes you make, without charge.
What are the licensing costs?
Because XJFTP is licensed under the Apache Software License, it is free to use and customise as you require, including using it within commercial software. The only caveat being that you must leave the copyright notices in place on the XJFTP components, and acknowledge that you are using this solution in your product and any documentation that may come with it!
Making changes
In the spirit of Open Source software, if you make customisations to XJFTP to make it more useful, please contact the project team, as the changes might be useful to everyone, and if so, we'd prefer to put them into the main distribution of the software. This will allow other XJFTP users to benefit from your improvements.
Technical : What can I actually use it for?
What else could I do with XJFTP?
Some of the things I've thought of are:
See design section for more information.
Techie FAQs : I'm a real geek and want to know the details!
What FTP features does XJFTP Support?
The following standard FTP commands are fully implemented:
LIST, CWD, CDUP, STOR, RETR, as are many others, for full details, you'd better download the code and have a look
What about fancy features?
XJFTP does not aim to provide bandwidth throttling, quotas/ratios or any other complicated and rarely used features. It was originally designed to be an extremely lightweight FTP to Soap (Web Services) adaptor, but it was decided that it would be more beneficial to the open source community to provide an FTP to "any service" adapter.
The design : About the components
How is XJFTP designed?
To follow.. for now, see FTP Process Diagrams for information about how XJFTP works in terms of end-to-end communication paths and a high-level functionality overview.
Some class and sequence diagrams showing the component's interaction and flow of control will be added soon!
Copyright © 2005 XJFTP Team. All rights reserved. Licensed under Apache License v2.0 (The Apache Software Foundation)