[jboss-svn-commits] JBL Code SVN: r33380 - in labs/jbossesb/trunk/product: install/tomcat and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 7 14:45:05 EDT 2010


Author: dward
Date: 2010-06-07 14:45:03 -0400 (Mon, 07 Jun 2010)
New Revision: 33380

Modified:
   labs/jbossesb/trunk/product/install/conf/jbossesb-properties.xml
   labs/jbossesb/trunk/product/install/tomcat/jbossesb-properties.xml
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/FtpFileHandler.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/filter/MetaDataFilter.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpUtils.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpsImpl.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/SecureFtpImpl.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/util/FtpImplUnitTest.java
Log:
Fix for JBESB-2905 and JBESB-3177.


Modified: labs/jbossesb/trunk/product/install/conf/jbossesb-properties.xml
===================================================================
--- labs/jbossesb/trunk/product/install/conf/jbossesb-properties.xml	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/install/conf/jbossesb-properties.xml	2010-06-07 18:45:03 UTC (rev 33380)
@@ -93,6 +93,14 @@
     	<property name="org.jboss.soa.esb.mail.smtp.auth" value="true"/>
     	<property name="org.jboss.soa.esb.ftp.localdir" value="/tmp"/>
     	<property name="org.jboss.soa.esb.ftp.remotedir" value="/tmp"/>
+		<!-- Coarse-grained ftp timeout property in milliseconds (0 = infinite). The fine-grained properties below will default to this value if not set. See FtpUtils javadoc for more info. -->
+    	<property name="org.jboss.soa.esb.ftp.timeout" value="0"/>
+		<!-- Fine-grained ftp timeout property which sets the default timeout to use when opening a socket. Not to be confused with timeout.so which operates on the currently opened socket. -->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.default" value="0"/ -->
+		<!-- Fine-grained ftp timeout property which sets the timeout to use when reading from the data connection. -->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.data" value="0"/ -->
+		<!-- Fine-grained ftp timeout property which sets the timeout of a currently open connection.-->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.so" value="0"/ -->
     	<property name="org.jboss.soa.esb.jms.connectionPool" value="20"/>
     	<property name="org.jboss.soa.esb.jms.sessionSleep" value="30"/>
     	<!-- expiry of messages to temporary invm destinations (default replies)

Modified: labs/jbossesb/trunk/product/install/tomcat/jbossesb-properties.xml
===================================================================
--- labs/jbossesb/trunk/product/install/tomcat/jbossesb-properties.xml	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/install/tomcat/jbossesb-properties.xml	2010-06-07 18:45:03 UTC (rev 33380)
@@ -58,6 +58,14 @@
     	<property name="org.jboss.soa.esb.mail.smtp.auth" value="true"/>
     	<property name="org.jboss.soa.esb.ftp.localdir" value="/tmp"/>
     	<property name="org.jboss.soa.esb.ftp.remotedir" value="/tmp"/>
+		<!-- Coarse-grained ftp timeout property in milliseconds (0 = infinite). The fine-grained properties below will default to this value if not set. See FtpUtils javadoc for more info. -->
+    	<property name="org.jboss.soa.esb.ftp.timeout" value="0"/>
+		<!-- Fine-grained ftp timeout property which sets the default timeout to use when opening a socket. Not to be confused with timeout.so which operates on the currently opened socket. -->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.default" value="0"/ -->
+		<!-- Fine-grained ftp timeout property which sets the timeout to use when reading from the data connection. -->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.data" value="0"/ -->
+		<!-- Fine-grained ftp timeout property which sets the timeout of a currently open connection.-->
+    	<!-- property name="org.jboss.soa.esb.ftp.timeout.so" value="0"/ -->
     </properties>
     <properties name="connection">
     	<property name="min-pool-size" value="5"/>

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -36,20 +36,17 @@
 import org.jboss.internal.soa.esb.couriers.helpers.FileHandler;
 import org.jboss.internal.soa.esb.couriers.helpers.FileHandlerFactory;
 import org.jboss.internal.soa.esb.couriers.helpers.LocalFileHandler;
+import org.jboss.internal.soa.esb.util.FtpUtils;
 import org.jboss.soa.esb.addressing.Call;
 import org.jboss.soa.esb.addressing.MalformedEPRException;
 import org.jboss.soa.esb.addressing.eprs.FileEpr;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.couriers.CourierException;
-import org.jboss.soa.esb.couriers.CourierTransportException;
-import org.jboss.soa.esb.couriers.CourierServiceBindException;
 import org.jboss.soa.esb.couriers.CourierMarshalUnmarshalException;
+import org.jboss.soa.esb.couriers.CourierServiceBindException;
 import org.jboss.soa.esb.couriers.CourierTimeoutException;
+import org.jboss.soa.esb.couriers.CourierTransportException;
 import org.jboss.soa.esb.couriers.CourierUtil;
-import org.jboss.soa.esb.listeners.message.errors.Factory;
 import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.message.util.Type;
 import org.jboss.soa.esb.util.FileUtil;
 import org.jboss.soa.esb.util.Util;
 
@@ -221,9 +218,7 @@
                                         new Class[]
                                         { File.class });
 
-                        String sDir = ModulePropertyManager.getPropertyManager(
-                                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                                        Environment.FTP_LOCALDIR, DEFAULT_TMP);
+                        String sDir = FtpUtils.getLocalDir();
                         File dir = new File(sDir);
                         String name = message.getHeader().getCall().getMessageID().toString();
                         
@@ -487,9 +482,6 @@
         
         protected long _pollLatency = 900;
 
-        protected static final String DEFAULT_TMP = System
-                        .getProperty("java.io.tmpdir");
-
         protected String _inputSuffix;
 
         protected URI _uri;

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/FtpFileHandler.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/FtpFileHandler.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/FtpFileHandler.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -28,9 +28,8 @@
 import java.net.URISyntaxException;
 
 import org.apache.log4j.Logger;
+import org.jboss.internal.soa.esb.util.FtpUtils;
 import org.jboss.soa.esb.addressing.eprs.FTPEpr;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.couriers.CourierUtil;
 import org.jboss.soa.esb.helpers.ConfigTree;
@@ -69,13 +68,12 @@
 
                 _remoteDir = uri.getPath();
                 
-                final String tmpdir = System.getProperty("java.io.tmpdir") ;
                 if ((_remoteDir == null) || (_remoteDir.equals("")))
-                        _remoteDir = ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_REMOTEDIR, tmpdir);
+                        _remoteDir = FtpUtils.getRemoteDir();
 
                 _port = uri.getPort();
 
-                _localDir = ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_LOCALDIR, tmpdir);
+                _localDir = FtpUtils.getLocalDir();
 
                 _isAscii = false;
                 _isPassive = _epr.getPassive();

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/filter/MetaDataFilter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/filter/MetaDataFilter.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/filter/MetaDataFilter.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -25,6 +25,7 @@
 import java.io.File;
 import java.util.Map;
 
+import org.jboss.internal.soa.esb.util.FtpUtils;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.eprs.FTPEpr;
 import org.jboss.soa.esb.addressing.eprs.FileEpr;
@@ -32,7 +33,6 @@
 import org.jboss.soa.esb.addressing.eprs.JDBCEpr;
 import org.jboss.soa.esb.addressing.eprs.JMSEpr;
 import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.filter.InputOutputFilter;
 import org.jboss.soa.esb.message.Message;
@@ -65,10 +65,7 @@
                 {
                     type = Environment.Transports.FTP;
 
-                    String dir = ModulePropertyManager.getPropertyManager(
-                            ModulePropertyManager.TRANSPORTS_MODULE)
-                            .getProperty(Environment.FTP_LOCALDIR,
-                                    System.getProperty("java.io.tmpdir"));
+                    String dir = FtpUtils.getLocalDir();
 
                     name = dir
                             + File.separator

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpImpl.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -31,24 +31,20 @@
 import java.io.OutputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.List;
 
 import org.apache.commons.net.ftp.FTP;
 import org.apache.commons.net.ftp.FTPClient;
-import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.addressing.eprs.FTPEpr;
 import org.jboss.soa.esb.addressing.eprs.FileEpr;
 import org.jboss.soa.esb.common.Environment;
 import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.util.FileUtil;
 import org.jboss.soa.esb.util.FtpClientUtil;
 import org.jboss.soa.esb.util.RemoteFileSystem;
 import org.jboss.soa.esb.util.RemoteFileSystemException;
 
-
 /**
  * Simplified FTP transfers
  * <p>
@@ -57,17 +53,16 @@
  * change during the lifetime of the object <br/>Hides low level details.
  * </p>
  */
-
 public class FtpImpl implements RemoteFileSystem
 {
-        private static final Logger _logger = Logger.getLogger(FtpImpl.class);
 
         private static final String TMP_SUFFIX = ".rosettaPart";
 
         private boolean m_bPassive;
 
         private int m_iPort;
-        private int _timeout = 0;
+        
+        private int m_iTimeoutDefault, m_iTimeoutData, m_iTimeoutSo;
 
         protected FTPClient m_oConn ;
 
@@ -79,27 +74,10 @@
 
         private String m_sRemoteDir, m_sLocalDir;
         
-        private int renameRetry;
+        private int m_iRenameRetry;
 
-        /**
-         * Checks validity and completeness of parameters, and keeps the info
-         * internally for subsequent FTP requests
-         * 
-         * @param p_oP
-         *            ConfigTree
-         * @throws ConfigurationException :
-         *             if parameters are invalid or incomplete
-         *             <li>Parameters: (XML attributes at the root level) </li>
-         *             <li> ftpServer = name or IP of FTP server </li>
-         *             <li> ftpUser = login ID for server </li>
-         *             <li> ftpPassword </li>
-         *             <li> localDirURI = absolute path in the local filesystem
-         *             </li>
-         *             <li> remoteDirURI = remote path is relative to ftp user home
-         *             in remote computer </li>
-         */
-
-        public FtpImpl (ConfigTree p_oP, boolean p_bConnect)
+        // package-protected since the only use is from FtpImplUnitTest
+        FtpImpl (ConfigTree p_oP, boolean p_bConnect)
                         throws ConfigurationException, RemoteFileSystemException
         {
                 m_oParms = p_oP;
@@ -110,13 +88,14 @@
                         throws ConfigurationException, RemoteFileSystemException
         {
                 this(p_oP) ;
-                // TODO there is still a bit of space for improvements here.
+                
                 configTreeFromEpr() ;
                 
                 initialize(p_bConnect) ;
         }
 
-        public FtpImpl (FTPEpr p_oP)
+        // protected since the only use is from "this" and FtpsImpl
+        protected FtpImpl (FTPEpr p_oP)
                         throws ConfigurationException
         {
                 m_oEpr = p_oP;
@@ -149,53 +128,44 @@
 
                 m_sRemoteDir = uri.getPath();
 
-                final String tmpdir = System.getProperty("java.io.tmpdir");
                 if ((m_sRemoteDir == null) || (m_sRemoteDir.equals("")))
-                        m_sRemoteDir = ModulePropertyManager.getPropertyManager(
-                                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                                        Environment.FTP_REMOTEDIR, tmpdir);
+                        m_sRemoteDir = FtpUtils.getRemoteDir();
 
                 m_iPort = uri.getPort();
 
-                m_sLocalDir = ModulePropertyManager.getPropertyManager(
-                                ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                                Environment.FTP_LOCALDIR, tmpdir);
+                m_sLocalDir = FtpUtils.getLocalDir();
 
-        File oLocalDir = new File(m_sLocalDir);
-        if(!oLocalDir.exists()) {
-            throw new ConfigurationException("Local FTP directory '" + oLocalDir.getAbsolutePath()
-                    + "' doesn't exist.  Check your JBossESB config '"
-                    + ModulePropertyManager.TRANSPORTS_MODULE + ":" + Environment.FTP_LOCALDIR + "'");
-        }
+		        File oLocalDir = new File(m_sLocalDir);
+		        if(!oLocalDir.exists()) {
+		            throw new ConfigurationException("Local FTP directory '" + oLocalDir.getAbsolutePath()
+		                    + "' doesn't exist.  Check your JBossESB config '"
+		                    + ModulePropertyManager.TRANSPORTS_MODULE + ":" + Environment.FTP_LOCALDIR + "'");
+		        }
+		
+		        m_bPassive = m_oEpr.getPassive();
+		        
+                m_iRenameRetry = FtpUtils.getRenameRetry();
 
-        m_bPassive = m_oEpr.getPassive();
-
-                String timeout = ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_SOCKET_TIMEOUT, null);
-                
-                if (timeout != null)
-                {
-                        try
-                        {
-                                _timeout = Integer.parseInt(timeout);
-                        }
-                        catch (NumberFormatException ex)
-                        {
-                                throw new ConfigurationException("Invalid timeout specified.", ex);
-                        }
-                }
-                else
-                        _timeout = 0;
+                m_iTimeoutDefault = FtpUtils.getTimeoutDefault();
+                m_iTimeoutData = FtpUtils.getTimeoutData();
+                m_iTimeoutSo = FtpUtils.getTimeoutSo();    
         }
 
-        public FtpImpl (List<KeyValuePair> p_oAttribs, boolean p_bConnect)
-                        throws ConfigurationException, RemoteFileSystemException
-        {
-                m_oParms = new ConfigTree("fromProps");
-                for (KeyValuePair oCurr : p_oAttribs)
-                        m_oParms.setAttribute(oCurr.getKey(), oCurr.getValue());
-                initialize(p_bConnect);
-        }
-
+        /**
+         * Checks validity and completeness of parameters, and keeps the info
+         * internally for subsequent FTP requests
+         * 
+         * @throws ConfigurationException :
+         *             if parameters are invalid or incomplete
+         *             <li>Parameters: (XML attributes at the root level) </li>
+         *             <li> ftpServer = name or IP of FTP server </li>
+         *             <li> ftpUser = login ID for server </li>
+         *             <li> ftpPassword </li>
+         *             <li> localDirURI = absolute path in the local filesystem
+         *             </li>
+         *             <li> remoteDirURI = remote path is relative to ftp user home
+         *             in remote computer </li>
+         */
         protected void checkParms () throws ConfigurationException
         {
                 String att = m_oParms.getAttribute(FileEpr.URL_TAG);
@@ -211,53 +181,41 @@
                         throw new ConfigurationException(ex);
                 }
                 
-                m_sFtpServer = (null != uri) ? uri.getHost() : m_oParms
-                                .getAttribute(PARMS_FTP_SERVER);
-                if (null == m_sFtpServer)
-                        throw new ConfigurationException("No FTP server specified");
+                m_sFtpServer = (null != uri) ? uri.getHost() : m_oParms.getAttribute(PARMS_FTP_SERVER);
+                if (null == m_sFtpServer) {
+                	throw new ConfigurationException("No FTP server specified");
+                }
 
                 String[] sa = (null == uri) ? null : uri.getUserInfo().split(":");
                 m_sUser = (null != sa) ? sa[0] : m_oParms.getAttribute(PARMS_USER);
-                if (null == m_sUser)
-                        throw new ConfigurationException("No username specified for FTP");
+                if (null == m_sUser) {
+                	throw new ConfigurationException("No username specified for FTP");
+                }
 
                 m_sPasswd = ((null != sa) && (sa.length > 1)) ? sa[1] : m_oParms.getAttribute(PARMS_PASSWD);
 
-                m_sRemoteDir = (null != uri) ? uri.getPath() : m_oParms
-                                .getAttribute(PARMS_REMOTE_DIR);
+                m_sRemoteDir = (null != uri) ? uri.getPath() : m_oParms.getAttribute(PARMS_REMOTE_DIR);
                 if (null == m_sRemoteDir) m_sRemoteDir = "";
 
                 m_sLocalDir = m_oParms.getAttribute(PARMS_LOCAL_DIR);
                 if (null == m_sLocalDir) m_sLocalDir = ".";
 
                 String sAux = m_oParms.getAttribute(PARMS_PORT);
-                m_iPort = (null != uri) ? uri.getPort() : (null == sAux) ? 21 : Integer
-                                .parseInt(sAux);
+                m_iPort = (null != uri) ? uri.getPort() : (null == sAux) ? 21 : Integer.parseInt(sAux);
                 
                 m_bPassive = false;
                 sAux = m_oParms.getAttribute(PARMS_PASSIVE);
                 m_bPassive = (null != sAux) && Boolean.parseBoolean(sAux);
                 
-                String renameRetryString = ModulePropertyManager.getPropertyManager(
-                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                        Environment.FTP_RENAME_RETRY, null);
-
-                if (renameRetryString != null)
-                {
-                    try
-                    {
-                        renameRetry = Integer.parseInt(renameRetryString);
-                    }
-                    catch (Exception ex)
-                    {
-                        throw new ConfigurationException("Invalid rename retry limit: "+renameRetryString);
-                    }
-                }
-                else
-                    renameRetry = DEFAULT_RENAME_RETRY_NUMBER;
+                String sRenameRetry = m_oParms.getAttribute(PARMS_RENAME_RETRY);
+                m_iRenameRetry = (null != sRenameRetry) ? Integer.parseInt(sRenameRetry) : FtpUtils.getRenameRetry();
                 
-                if (renameRetry < 1)
-                    renameRetry = 1;
+                String sTimeoutDefault = m_oParms.getAttribute(PARMS_TIMEOUT_DEFAULT);
+                m_iTimeoutDefault = (null != sTimeoutDefault) ? Integer.parseInt(sTimeoutDefault) : FtpUtils.getTimeoutDefault();
+                String sTimeoutData = m_oParms.getAttribute(PARMS_TIMEOUT_DATA);
+                m_iTimeoutData = (null != sTimeoutData) ? Integer.parseInt(sTimeoutData) : FtpUtils.getTimeoutData();
+                String sTimeoutSo = m_oParms.getAttribute(PARMS_TIMEOUT_SO);
+                m_iTimeoutSo = (null != sTimeoutSo) ? Integer.parseInt(sTimeoutSo) : FtpUtils.getTimeoutSo();
         }
 
         protected void configTreeFromEpr () throws RemoteFileSystemException
@@ -265,24 +223,24 @@
                 m_oParms = new ConfigTree("fromEpr");
                 try
                 {
-                        m_oParms.setAttribute(RemoteFileSystem.PARMS_FTP_SERVER,
-                                        m_sFtpServer);
-                        m_oParms.setAttribute(RemoteFileSystem.PARMS_USER, m_sUser);
+                        m_oParms.setAttribute(PARMS_FTP_SERVER, m_sFtpServer);
+                        m_oParms.setAttribute(PARMS_USER, m_sUser);
                         if (m_sPasswd != null)
-                            m_oParms.setAttribute(RemoteFileSystem.PARMS_PASSWD, m_sPasswd);
-                        m_oParms.setAttribute(RemoteFileSystem.PARMS_REMOTE_DIR,
-                                        m_sRemoteDir);
+                        {
+                            m_oParms.setAttribute(PARMS_PASSWD, m_sPasswd);
+                        }
+                        m_oParms.setAttribute(PARMS_REMOTE_DIR, m_sRemoteDir);
                         if (m_iPort > 0)
                         {
-                            m_oParms.setAttribute(RemoteFileSystem.PARMS_PORT, Integer
-                                        .toString(m_iPort));
+                            m_oParms.setAttribute(PARMS_PORT, Integer.toString(m_iPort));
                         }
-                        m_oParms
-                                        .setAttribute(RemoteFileSystem.PARMS_LOCAL_DIR, m_sLocalDir);
-                        m_oParms.setAttribute(RemoteFileSystem.PARMS_ASCII, Boolean
-                                        .toString(false));
-                        m_oParms.setAttribute(RemoteFileSystem.PARMS_PASSIVE, Boolean
-                                        .toString(m_bPassive));
+                        m_oParms.setAttribute(PARMS_LOCAL_DIR, m_sLocalDir);
+                        m_oParms.setAttribute(PARMS_ASCII, Boolean.toString(false));
+                        m_oParms.setAttribute(PARMS_PASSIVE, Boolean.toString(m_bPassive));
+                        m_oParms.setAttribute(PARMS_RENAME_RETRY, Integer.toString(m_iRenameRetry));
+                        m_oParms.setAttribute(PARMS_TIMEOUT_DEFAULT, Integer.toString(m_iTimeoutDefault));
+                        m_oParms.setAttribute(PARMS_TIMEOUT_DATA, Integer.toString(m_iTimeoutData));
+                        m_oParms.setAttribute(PARMS_TIMEOUT_SO, Integer.toString(m_iTimeoutSo));
                 }
                 catch (Exception e)
                 {
@@ -410,6 +368,11 @@
             {
                 try
                 {
+                    if (m_iTimeoutDefault > 0)
+                    {
+                        m_oConn.setDefaultTimeout(m_iTimeoutDefault);
+                    }
+                    
                     connect() ;
                     
                     if (!m_oConn.isConnected())
@@ -426,10 +389,14 @@
                     {
                         m_oConn.enterLocalPassiveMode() ;
                     }
-                    if (_timeout > 0)
+                    if (m_iTimeoutData > 0)
                     {
-                        m_oConn.setDataTimeout(_timeout);
+                        m_oConn.setDataTimeout(m_iTimeoutData);
                     }
+                    if (m_iTimeoutSo > 0)
+                    {
+                        m_oConn.setSoTimeout(m_iTimeoutSo);
+                    }
                 }
                 catch (final IOException ioe)
                 {
@@ -610,7 +577,7 @@
                 
                 boolean retryProblem = true;  // https://jira.jboss.org/jira/browse/JBESB-1995
 
-                for (int i = 0; i < renameRetry; i++)
+                for (int i = 0; i < m_iRenameRetry; i++)
                 {
                     if (m_oConn.rename(sRemoteTmp, p_sRemoteName))
                     {
@@ -620,11 +587,11 @@
                     }
                     else
                     {
-                        if (i+1 < renameRetry)
+                        if (i+1 < m_iRenameRetry)
                         {
                             try
                             {
-                                Thread.sleep(DEFAULT_RENAME_RETRY_TIMEOUT);
+                                Thread.sleep(1000L); // 1 second
                             }
                             catch (final Exception ex)
                             {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpUtils.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpUtils.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpUtils.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -23,20 +23,165 @@
 
 import java.io.File;
 
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.common.Configuration;
+import org.jboss.soa.esb.common.Environment;
+
 /**
  * Ftp handling utilities.
  * @author b_georges
  */
 public class FtpUtils {
+	
+	private static final Logger logger = Logger.getLogger(FtpUtils.class);
 
 	/**
 	 * Transforms File path to FTP path
 	 * @param p_oF The file to transform
 	 * @return The modified path
 	 */
-	public static String fileToFtpString(File p_oF)
-	{
+	public static String fileToFtpString(File p_oF) {
 		return (null == p_oF) ? null : p_oF.toString().replace("\\", "/");
 	}
 	
+	public static String getLocalDir() {
+		String s = trimToNull(Configuration.getFtpLocalDir());
+		if (s == null) {
+			s = trimToNull(System.getProperty("java.io.tmpdir"));
+			if (s == null) {
+				s = "/tmp";
+				if (logger.isEnabledFor(Level.WARN)) { 
+					logger.warn("property [" + Environment.FTP_LOCALDIR + "] and ${java.io.tmpdir} undefined; defaulting to [" + s + "].");
+				}
+			}
+		}
+		if (logger.isEnabledFor(Level.WARN)) {
+			File f = new File(s);
+			if (!f.exists() || !f.isDirectory() || !f.canRead() || !f.canWrite()) {
+				StringBuilder sb = new StringBuilder();
+				sb.append("getLocalDir() returning [");
+				sb.append(s);
+				sb.append("] however [");
+				sb.append(f.getAbsolutePath());
+				sb.append("]");
+				if (!f.exists()) {
+					sb.append(" does not exist");
+				} else if (!f.isDirectory()) {
+					sb.append(" is not a directory");
+				} else {
+					boolean and = false;
+					if (!f.canRead()) {
+						sb.append(" cannot be read from");
+						and = true;
+					}
+					if (!f.canWrite()) {
+						if (and) {
+							sb.append(" and");
+						}
+						sb.append(" cannot be written to");
+					}
+				}
+				sb.append(".");
+				logger.warn(sb.toString());
+			}
+		}
+		return s;
+	}
+	
+	public static String getRemoteDir() {
+		String s = trimToNull(Configuration.getFtpRemoteDir());
+		if (s == null) {
+			s = trimToNull(System.getProperty("java.io.tmpdir"));
+			if (s == null) {
+				s = "/tmp";
+				if (logger.isEnabledFor(Level.WARN)) {
+					logger.warn("property [" + Environment.FTP_REMOTEDIR + "] and ${java.io.tmpdir} undefined; defaulting to [" + s + "].");
+				}
+			}
+		}
+		return s;
+	}
+	
+	public static int getRenameRetry() throws ConfigurationException {
+		return getIntProperty(Environment.FTP_RENAME_RETRY, Configuration.getFtpRenameRetry(), 1, 10);
+	}
+	
+	/**
+	 * Coarse-grained ftp timeout property in milliseconds (0 = infinite).
+	 * The getTimeout...() properties below will default to this value if they are not set.
+	 * 
+	 * @return timeout
+	 * @throws ConfigurationException if a NumberFormatException is encountered
+	 */
+	public static int getTimeout() throws ConfigurationException {
+		return getIntProperty(Environment.FTP_TIMEOUT, Configuration.getFtpTimeout(), 0, 0);
+	}
+	
+	/**
+	 * Fine-grained ftp timeout property in milliseconds (0 = infinite) used for org.apache.commons.net.SocketClient.setDefaultTimeout(int):void,
+	 * which <i>sets the default timeout to use when opening a socket.  It is used only previous to a
+	 * call to connect() and should not be confused with setSoTimeout() which operates on the currently opened socket.</i>
+	 * 
+	 * @return timeoutDefault, or getTimeout() if not set
+	 * @throws ConfigurationException if a NumberFormatException is encountered
+	 */
+	public static int getTimeoutDefault() throws ConfigurationException {
+		return getIntProperty(Environment.FTP_TIMEOUT_DEFAULT, Configuration.getFtpTimeoutDefault(), 0, getTimeout());
+	}
+	
+	/**
+	 * Fine-grained ftp timeout property in milliseconds (0 = infinite) used for org.apache.commons.net.ftp.FTPClient.setDataTimeout(int):void,
+	 * which <i>sets the timeout to use when reading from the data connection</i>.
+	 * 
+	 * @return timeoutData, or getTimeout() if not set
+	 * @throws ConfigurationException if a NumberFormatException is encountered
+	 */
+	public static int getTimeoutData() throws ConfigurationException {
+		return getIntProperty(Environment.FTP_TIMEOUT_DATA, Configuration.getFtpTimeoutData(), 0, getTimeout());
+	}
+	
+	/**
+	 * Fine-grained ftp timeout property in milliseconds (0 = infinite) used for java.net.Socket.setSoTimeout(int):void,
+	 * which <i>sets the timeout of a currently open connection</i>.
+	 * 
+	 * @return timeoutSo, or getTimeout() if not set
+	 * @throws ConfigurationException if a NumberFormatException is encountered
+	 */
+	public static int getTimeoutSo() throws ConfigurationException {
+		return getIntProperty(Environment.FTP_TIMEOUT_SO, Configuration.getFtpTimeoutSo(), 0, getTimeout());
+	}
+	
+	private static int getIntProperty(String configName, String configValue, int minValue, int defValue) throws ConfigurationException {
+		int retValue;
+		String s = trimToNull(configValue);
+		if (s != null) {
+			try {
+				retValue = Integer.parseInt(s);
+			} catch (NumberFormatException e) {
+				throw new ConfigurationException("could not parse property [" + configName + "] value [" + s + "] to an int.", e);
+			}
+		} else {
+			retValue = defValue;
+		}
+		if (retValue < minValue) {
+			if (logger.isEnabledFor(Level.WARN)) {
+				logger.warn("property [" + configName + "] value [" + retValue + "] illegal; defaulting to [" + defValue + "].");
+			}
+			retValue = defValue;
+		}
+		return retValue;
+	}
+	
+	private static String trimToNull(String s) {
+		if (s != null) {
+			s = s.trim();
+			if (s.length() == 0) {
+				s = null;
+			}
+		}
+		return s;
+	}
+	
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpsImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpsImpl.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/FtpsImpl.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -34,7 +34,6 @@
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
-import java.util.List;
 
 import javax.net.ssl.X509TrustManager;
 
@@ -43,8 +42,6 @@
 import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.addressing.eprs.FTPSEpr;
-import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.util.RemoteFileSystemException;
 
 /**
@@ -63,29 +60,6 @@
 	private URI m_oCertificate ;
 	private String m_oCertificateName ;
 
-	/**
-	 * Checks validity and completeness of parameters, and keeps the info
-	 * internally for subsequent FTP requests
-	 * 
-	 * @param p_oP
-	 *            ConfigTree
-	 * @throws ConfigurationException :
-	 *             if parameters are invalid or incomplete
-	 *             <li>Parameters: (XML attributes at the root level) </li>
-	 *             <li> ftpServer = name or IP of FTP server </li>
-	 *             <li> ftpUser = login ID for server </li>
-	 *             <li> ftpPassword </li>
-	 *             <li> localDirURI = absolute path in the local filesystem
-	 *             </li>
-	 *             <li> remoteDirURI = remote path is relative to ftp user home
-	 *             in remote computer </li>
-	 */
-	public FtpsImpl (ConfigTree p_oP, boolean p_bConnect)
-			throws ConfigurationException, RemoteFileSystemException
-	{
-		super(p_oP, p_bConnect) ;
-	}
-
 	public FtpsImpl (FTPSEpr p_oP, boolean p_bConnect)
 			throws ConfigurationException, RemoteFileSystemException
 	{
@@ -101,18 +75,11 @@
 		}
 		m_oCertificateName = p_oP.getCertificateName() ;
 		
-		// TODO there is still a bit of space for improvements here.
 		configTreeFromEpr();
 
 		initialize(p_bConnect);
 	}
 
-	public FtpsImpl (List<KeyValuePair> p_oAttribs, boolean p_bConnect)
-			throws ConfigurationException, RemoteFileSystemException
-	{
-		super(p_oAttribs, p_bConnect) ;
-	}
-
 	protected void configTreeFromEpr () throws RemoteFileSystemException
 	{
 		super.configTreeFromEpr() ;
@@ -133,6 +100,21 @@
 		}
 	}
 	
+	/**
+	 * Checks validity and completeness of parameters, and keeps the info
+	 * internally for subsequent FTP requests
+	 * 
+	 * @throws ConfigurationException :
+	 *             if parameters are invalid or incomplete
+	 *             <li>Parameters: (XML attributes at the root level) </li>
+	 *             <li> ftpServer = name or IP of FTP server </li>
+	 *             <li> ftpUser = login ID for server </li>
+	 *             <li> ftpPassword </li>
+	 *             <li> localDirURI = absolute path in the local filesystem
+	 *             </li>
+	 *             <li> remoteDirURI = remote path is relative to ftp user home
+	 *             in remote computer </li>
+	 */
 	protected void checkParms() throws ConfigurationException
 	{
 		super.checkParms();

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/SecureFtpImpl.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/SecureFtpImpl.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/util/SecureFtpImpl.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -43,10 +43,7 @@
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.addressing.eprs.FileEpr;
 import org.jboss.soa.esb.addressing.eprs.SFTPEpr;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.helpers.ConfigTree;
-import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.util.ClassUtil;
 import org.jboss.soa.esb.util.FileUtil;
 import org.jboss.soa.esb.util.RemoteFileSystem;
@@ -98,20 +95,6 @@
 
         private URI m_oCertificate;
         private String m_sPassphrase;
-        
-        /*
-         * Constructor
-         * 
-         * @param p_oP Is a config treeThe used to initialize the object
-         * 
-         * @param connect If true create a new sftp session
-         * 
-         */
-        public SecureFtpImpl(ConfigTree p_oP, boolean p_bConnect) throws ConfigurationException, RemoteFileSystemException
-        {
-                m_oParms = p_oP;
-                initialize(p_bConnect);
-        }
 
         /*
          * Constructor
@@ -150,17 +133,12 @@
 
                 m_sRemoteDir = uri.getPath();
 
-                final String tmpdir = System.getProperty("java.io.tmpdir");
                 if ((m_sRemoteDir == null) || (m_sRemoteDir.equals("")))
-                        m_sRemoteDir = ModulePropertyManager.getPropertyManager(
-                                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                                                        Environment.FTP_REMOTEDIR, tmpdir);
+                        m_sRemoteDir = FtpUtils.getRemoteDir();
 
                 m_iPort = uri.getPort();
 
-                m_sLocalDir = ModulePropertyManager.getPropertyManager(
-                                ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                                                Environment.FTP_LOCALDIR, tmpdir);
+                m_sLocalDir = FtpUtils.getLocalDir();
 
                 try
                 {
@@ -177,23 +155,6 @@
                 initialize(p_bConnect);
         }
 
-        /*
-         * Constructor
-         * 
-         * @param attribs The key/value pairs used to initialize the object
-         * 
-         * @param connect If true create a new sftp session using attribs
-         * 
-         */
-        public SecureFtpImpl(List<KeyValuePair> attribs, boolean connect)
-        throws ConfigurationException, RemoteFileSystemException 
-        {
-                m_oParms = new ConfigTree("fromProps");
-                for (KeyValuePair oCurr : attribs)
-                        m_oParms.setAttribute(oCurr.getKey(), oCurr.getValue());
-                initialize(connect);
-        }
-
         private void initialize(boolean bConnect) throws ConfigurationException, RemoteFileSystemException
         {
                 checkParms();

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Configuration.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -31,7 +31,6 @@
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
-import org.apache.log4j.Logger;
 import org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.KeyValuePair;
@@ -40,7 +39,6 @@
 
 public class Configuration
 {
-    private static Logger _logger = Logger.getLogger(Configuration.class);
 
 	private static KeyValuePair[] s_oaKV = new KeyValuePair[]
 	{
@@ -54,6 +52,13 @@
 			new KeyValuePair(Environment.HTTP_PORT, 					getHttpPort()),
 			new KeyValuePair(Environment.HTTP_SECURE_PORT, 				getHttpSecurePort()),
 			new KeyValuePair(Environment.HTTP_RESPONSE_STATUS_ENABLED, 	getHttpResponseStatusEnabled()),
+			new KeyValuePair(Environment.FTP_LOCALDIR, 	                getFtpLocalDir()),
+			new KeyValuePair(Environment.FTP_REMOTEDIR, 	            getFtpRemoteDir()),
+			new KeyValuePair(Environment.FTP_RENAME_RETRY, 	            getFtpRenameRetry()),
+			new KeyValuePair(Environment.FTP_TIMEOUT, 	                getFtpTimeout()),
+			new KeyValuePair(Environment.FTP_TIMEOUT_DEFAULT, 	        getFtpTimeoutDefault()),
+			new KeyValuePair(Environment.FTP_TIMEOUT_DATA, 	            getFtpTimeoutData()),
+			new KeyValuePair(Environment.FTP_TIMEOUT_SO, 	            getFtpTimeoutSo()),
 			new KeyValuePair(Environment.JNDI_SERVER_URL, 				getJndiServerURL()),
 			new KeyValuePair(Environment.JNDI_SERVER_CONTEXT_FACTORY,   getJndiServerContextFactory()),
 			new KeyValuePair(Environment.JNDI_SERVER_PKG_PREFIX, 	    getJndiServerPkgPrefix()),
@@ -152,6 +157,41 @@
 	{
 		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.HTTP_RESPONSE_STATUS_ENABLED);
 	}
+	
+	public static String getFtpLocalDir()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_LOCALDIR);
+	}
+	
+	public static String getFtpRemoteDir()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_REMOTEDIR);
+	}
+	
+	public static String getFtpRenameRetry()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_RENAME_RETRY);
+	}
+	
+	public static String getFtpTimeout()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_TIMEOUT);
+	}
+	
+	public static String getFtpTimeoutDefault()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_TIMEOUT_DEFAULT);
+	}
+	
+	public static String getFtpTimeoutData()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_TIMEOUT_DATA);
+	}
+	
+	public static String getFtpTimeoutSo()
+	{
+		return ModulePropertyManager.getPropertyManager(ModulePropertyManager.TRANSPORTS_MODULE).getProperty(Environment.FTP_TIMEOUT_SO);
+	}
 
 	public static String getJndiServerURL()
 	{

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -58,8 +58,11 @@
 
         public static final String FTP_LOCALDIR  = "org.jboss.soa.esb.ftp.localdir";
         public static final String FTP_REMOTEDIR = "org.jboss.soa.esb.ftp.remotedir";
-        public static final String FTP_SOCKET_TIMEOUT = "org.jboss.soa.esb.ftp.timeout";
         public static final String FTP_RENAME_RETRY = "org.jboss.soa.esb.ftp.renameretry";
+        public static final String FTP_TIMEOUT = "org.jboss.soa.esb.ftp.timeout";
+        public static final String FTP_TIMEOUT_DEFAULT = "org.jboss.soa.esb.ftp.timeout.default";
+        public static final String FTP_TIMEOUT_DATA = "org.jboss.soa.esb.ftp.timeout.data";  
+        public static final String FTP_TIMEOUT_SO = "org.jboss.soa.esb.ftp.timeout.so";;
 
         public static final String JMS_CONNECTION_POOL_SIZE = "org.jboss.soa.esb.jms.connectionPool";
         public static final String JMS_SESSION_SLEEP        = "org.jboss.soa.esb.jms.sessionSleep";

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/FtpClientUtil.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -35,12 +35,8 @@
 import org.apache.commons.net.ftp.FTPClient;
 import org.jboss.internal.soa.esb.util.FtpUtils;
 import org.jboss.soa.esb.ConfigurationException;
-import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
-import org.jboss.soa.esb.util.RemoteFileSystem;
-import org.jboss.soa.esb.util.RemoteFileSystemException;
 
 /**
  * Simplified FTP transfers
@@ -52,7 +48,6 @@
  * 
  * TODO why duplicate so much of FtpImpl.java?
  */
-
 public class FtpClientUtil
 {
         private static final String TMP_SUFFIX = ".rosettaPart";
@@ -69,6 +64,8 @@
         private String m_sRemoteDir, m_sLocalDir;
 
         private int m_iPort;
+        
+        private int m_iTimeoutDefault, m_iTimeoutData, m_iTimeoutSo;
 
         private boolean m_bPassive;
 
@@ -76,7 +73,7 @@
 
         private boolean m_bAsciiTransferType ; 
         
-        private int renameRetry;
+        private int m_iRenameRetry;
 
         public String getRemoteDir ()
         {
@@ -125,6 +122,11 @@
                 {
                         if (bConnect)
                         {
+	                            if (m_iTimeoutDefault > 0)
+	                            {
+	                                m_oConn.setDefaultTimeout(m_iTimeoutDefault);
+	                            }
+                            
                                 if (m_iPort > 0)
                                 {
                                     m_oConn.connect(m_sFtpServer, m_iPort) ;
@@ -147,6 +149,14 @@
                                 {
                                         m_oConn.enterLocalPassiveMode() ;
                                 }
+                                if (m_iTimeoutData > 0)
+                                {
+                                    m_oConn.setDataTimeout(m_iTimeoutData);
+                                }
+                                if (m_iTimeoutSo > 0)
+                                {
+                                    m_oConn.setSoTimeout(m_iTimeoutSo);
+                                }
                         }
                 }
                 catch (IOException ioe)
@@ -356,7 +366,7 @@
                         
                         boolean retryProblem = true;  // https://jira.jboss.org/jira/browse/JBESB-1995
 
-                        for (int i = 0; i < renameRetry; i++)
+                        for (int i = 0; i < m_iRenameRetry; i++)
                         {
                             if (m_oConn.rename(sRemoteTmp, p_sRemoteName))
                             {
@@ -366,11 +376,11 @@
                             }
                             else
                             {
-                                if (i+1 < renameRetry)
+                                if (i+1 < m_iRenameRetry)
                                 {
                                     try
                                     {
-                                        Thread.sleep(RemoteFileSystem.DEFAULT_RENAME_RETRY_TIMEOUT);
+                                        Thread.sleep(1000L); // 1 second
                                     }
                                     catch (final Exception ex)
                                     {
@@ -493,26 +503,11 @@
                 sAux = m_oParms.getAttribute(RemoteFileSystem.PARMS_PASSIVE);
                 m_bPassive = (null != sAux) && Boolean.parseBoolean(sAux);
                 
-                String renameRetryString = ModulePropertyManager.getPropertyManager(
-                        ModulePropertyManager.TRANSPORTS_MODULE).getProperty(
-                        Environment.FTP_RENAME_RETRY, null);
-
-                if (renameRetryString != null)
-                {
-                    try
-                    {
-                        renameRetry = Integer.parseInt(renameRetryString);
-                    }
-                    catch (Exception ex)
-                    {
-                        throw new ConfigurationException("Invalid rename retry limit: "+renameRetryString);
-                    }
-                }
-                else
-                    renameRetry = RemoteFileSystem.DEFAULT_RENAME_RETRY_NUMBER;
+                m_iRenameRetry = FtpUtils.getRenameRetry();
                 
-                if (renameRetry < 1)
-                    renameRetry = 1;
+                m_iTimeoutDefault = FtpUtils.getTimeoutDefault();
+                m_iTimeoutData = FtpUtils.getTimeoutData();
+                m_iTimeoutSo = FtpUtils.getTimeoutSo();     
         } // __________________________________
 
         public static String fileToFtpString (File p_oF)

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/util/RemoteFileSystem.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -58,10 +58,15 @@
 
         public static final String PARMS_PASSPHRASE = "passphrase";
         
-        public static final int DEFAULT_RENAME_RETRY_NUMBER = 10; // default retries
+        public static final String PARMS_RENAME_RETRY = "ftpRenameRetry";
         
-        public static final int DEFAULT_RENAME_RETRY_TIMEOUT = 1000;  // 1 second
+        public static final String PARMS_TIMEOUT_DEFAULT = "ftpTimeoutDefault";
         
+        public static final String PARMS_TIMEOUT_DATA = "ftpTimeoutData";
+        
+        public static final String PARMS_TIMEOUT_SO = "ftpTimeoutSo";
+        
+        
         public String getRemoteDir ();
 
         /**

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/util/FtpImplUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/util/FtpImplUnitTest.java	2010-06-07 17:07:54 UTC (rev 33379)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/internal/soa/esb/util/FtpImplUnitTest.java	2010-06-07 18:45:03 UTC (rev 33380)
@@ -297,6 +297,10 @@
 		configTree.setAttribute( RemoteFileSystem.PARMS_LOCAL_DIR, ftpServer .getRootDir() );
 		configTree.setAttribute( RemoteFileSystem.PARMS_ASCII, Boolean .toString( false ) );
 		configTree.setAttribute( RemoteFileSystem.PARMS_PASSIVE, Boolean .toString( false ) );
+		configTree.setAttribute( RemoteFileSystem.PARMS_RENAME_RETRY, Integer .toString(10) );
+		configTree.setAttribute( RemoteFileSystem.PARMS_TIMEOUT_DEFAULT, Integer .toString(0) );
+		configTree.setAttribute( RemoteFileSystem.PARMS_TIMEOUT_DATA, Integer .toString(0) );
+		configTree.setAttribute( RemoteFileSystem.PARMS_TIMEOUT_SO, Integer .toString(0) );
 		return configTree;
 	}
 	



More information about the jboss-svn-commits mailing list