The first time runs fine, other than taking large amounts of my heap (issue
for another thread).

Then on after the sleep time (15 mins) i recieve the error below. The odd
thing is, this works fine on another computer with the exact same libraries
and JRE (1.5.0_04). However when i turn the sleep time on the problem system
to 10 seconds, I do not recieve an error. 

Shouldn't VFS be making a new connection every time the thread runs? It
seems that it is trying to use a cached connection even though i've made
every effort to call fsm.getFilesCache().close() to clear the file cache.

Any help is appreciated.

Exception:
org.apache.commons.vfs.FileSystemException: Could not determine the type of
file "<ftp path omitted for security reasons>".
        at
org.apache.commons.vfs.provider.AbstractFileObject.attach(AbstractFileObject
.java:1229)
        at
org.apache.commons.vfs.provider.AbstractFileObject.getChildren(AbstractFileO
bject.java:515)
        at
com.familydollar.edi.index.EDIIndexer$IndexThread.processChildren(EDIIndexer
.java:290)
        at
com.familydollar.edi.index.EDIIndexer$IndexThread.run(EDIIndexer.java:266)
Caused by: java.net.SocketException: Connection reset by peer: socket write
error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(Unknown Source)
        at java.net.SocketOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
        at java.io.BufferedOutputStream.flush(Unknown Source)
        at
org.apache.commons.net.telnet.TelnetClient._flushOutputStream(TelnetClient.j
ava:77)
        at
org.apache.commons.net.telnet.TelnetOutputStream.flush(TelnetOutputStream.ja
va:137)
        at java.io.FilterOutputStream.flush(Unknown Source)
        at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(Unknown Source)
        at sun.nio.cs.StreamEncoder.flush(Unknown Source)
        at java.io.OutputStreamWriter.flush(Unknown Source)
        at java.io.BufferedWriter.flush(Unknown Source)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:442)
        at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:520)
        at org.apache.commons.net.ftp.FTP.port(FTP.java:849)
        at
org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:477
)
        at
org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2390
)
        at
org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2364
)
        at
org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2090)
        at
org.apache.commons.vfs.provider.ftp.FTPClientWrapper.listFiles(FTPClientWrap
per.java:100)
        at
org.apache.commons.vfs.provider.ftp.FtpFileObject.doGetChildren(FtpFileObjec
t.java:122)
        at
org.apache.commons.vfs.provider.ftp.FtpFileObject.getChildFile(FtpFileObject
.java:91)
        at
org.apache.commons.vfs.provider.ftp.FtpFileObject.getInfo(FtpFileObject.java
:167)
        at
org.apache.commons.vfs.provider.ftp.FtpFileObject.doAttach(FtpFileObject.jav
a:156)
        at
org.apache.commons.vfs.provider.AbstractFileObject.attach(AbstractFileObject
.java:1215)
        ... 3 more

CODE:

        class IndexThread extends Thread {
                private ArrayList<String> fileNames;
                public IndexThread(){fileNames = new ArrayList<String>();}
                public void run(){
                        while(go){
                                Calendar c = Calendar.getInstance();
                                System.out.println("Indexing Service
Started: " + c.get(Calendar.DAY_OF_MONTH)+ "/"+ c.get(Calendar.MONTH) + "/"
+ c.get(Calendar.YEAR) +" "+c.get(Calendar.HOUR_OF_DAY)+
":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.MILLISECOND));
                                FileSystemManager fsm = null;
                                try {
                                        //get a FileSystemManager from the
static class VFS (part of API)
                                        fsm = VFS.getManager();
                                        Iterator it =
fileMountPoints.iterator();             
                                        while(it.hasNext()){
                                                //get the next file mount
point
                                                // ex data is
"ftp://[EMAIL PROTECTED]/server/path/to/files"
                                                String loc =
(String)it.next();
                                                
                                                //resolve the URL into a
FileObject...
                                                remoteFO =
fsm.resolveFile(loc);
                                                
                                                //process the files and
folders in this directory
                                                processChildren(remoteFO,
fsm);
                                        }
                                        //close the File Object ( attempt to
clear the cache and free memory )
                                        remoteFO.close();
                                } catch (FileSystemException e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                                }finally{
                                        if(fsm!= null)
                                                //an attempt to clear the
cache.. 
                                                fsm.getFilesCache().close();
                                }
                                c = Calendar.getInstance();
                                System.out.println("Indexing Service Ended:
" + c.get(Calendar.DAY_OF_MONTH)+ "/"+ c.get(Calendar.MONTH) + "/" +
c.get(Calendar.YEAR) +" "+c.get(Calendar.HOUR_OF_DAY)+
":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.MILLISECOND));
                                try {
                                        //sleeping thread... 
        
Thread.sleep(Long.parseLong(props.getProperty("index.sleep")));
                                } catch (NumberFormatException e) {

                                        System.out.println("index.sleep is
missing in index.config");
                                } catch (InterruptedException e) {
                                        //stop the thread upon interruption
                                        go = false;
                                }
                        }
                }

Joe Williams
E-Commerce Analyst
Family Dollar

o:(704)849-7512


-----------------------------------------
************************************************************
NOTE:
This e-mail message contains PRIVILEGED and CONFIDENTIAL information
and is intended only for the use of the specific individual or
individuals to which it is addressed. If you are not an intended
recipient of this e-mail, you are hereby notified that any unauthorized
use, dissemination or copying of this e-mail or the information
contained herein or attached hereto is strictly prohibited. If you
receive this e-mail in error, notify the person named above by reply
e-mail and please delete it. Thank you.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to