FTPClientPool does not  have dataTimeout  and controlEncoding properties.
-------------------------------------------------------------------------

                 Key: SM-921
                 URL: https://issues.apache.org/activemq/browse/SM-921
             Project: ServiceMix
          Issue Type: Bug
          Components: servicemix-components
    Affects Versions: 3.1
            Reporter: Alper Sogukpinar


FTPClientPool does not  set FtpClient __dataTimeout  property and If timeout 
value is not set, infinite timeout  will be the case.
As a result of that not only the thread which is in infinite timeout condition 
is affected and ftp connection remains open forever but also the file which is 
put into the workingSet by the thread  will not be processed by latter 
FtpPoller threads.

I tried both FtpClient.setDataTimeout and FtpClient.setSoTimeout properties in 
my tests and only FtpClient.setDataTimeout was worked.
Creating a DEFAULT_TIMEOUT property and setting dataTimeout just after opening 
the ftp connection will solve the problem.
In addition to this a bean property  which overrides DEFAULT_TIMEOUT should be 
created for user configuration.

In ddition to these, DEFAULT_CONTROL_ENCODING property should also be created 
on FTPClientPool  for setting controlEncoding property of FtpClient object. 
Otherwise, non US ASCII characters which are used in the name of a target file 
causes problems. For example Default encoding does not support  Turkish 
characters.  When non US ASCII characters like Turkish charachers (ş, 
ı, ğ....) are used in the fileName, each of them is converted to '?' 
character and '?' is not acceptable for a fileName. As a result of that an 
exception is thrown...

*******************************************

Sample Code...

public class FTPClientPool {
private static int DEFAULT_TIMEOUT = 600*1000; 
private static String DEFAULT_CONTROL_ENCODING = "Cp1254";
        
        public SocketClient borrowClient() throws Exception {
                
                FTPClient client = null;
        try {           
                client = new FTPClient();                               
                client.setControlEncoding(DEFAULT_CONTROL_ENCODING);
                        
                if (getConfig() != null) {
                        client.configure(getConfig());
            }
            super.connect(client);
            client.setDataTimeout(DEFAULT_TIMEOUT);
                              .....................




-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to