Unlike normal FTP transfers, FXP transfers require that the timeout value set in FTPConnection (and its subclasses) is greater than the time it takes to perform the transfer.
This is because in normal FTP, the client sends the file and then reads the server reply.
In FXP, the client sets up the transfer, but the source server sends the file. This means the client can't possibly know when the file has completed sending (only the source server knows that), so it doesn't know when to read the reply. The only option it has is to start trying to read the reply immediately. So unlike a normal FTP, the timeout has to last for the whole transfer time.