*start() method in FtpServer class tries to start() all the listeners one by one and it sets started=true if all of them succeeded.
If one of the listeners throws an exception when starting but some others succeded , it will not close the open listeners. Calling stop() won't have any effect in this case as 'started' is false.
*stop() method in FtpServer class returns normally when e.g., there are open connections to the FtpServer but the server is not really stopped. Calling stop() again later won't have any effect as 'started' is false.
I'm quite concerned about the fact that calling stop() won't stop the server since this means that when I undeploy my webapplication the port is still open and I need to restart the whole application server in order to have this port available (and prevent memory leaks!, I guess).