<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                I’m using JCIFS to programmatically copy batch of files from Windows to Linux using JCIFS. After upgrading from v 1.2.9 to 1.3.17, the performance turned very slow. A copy of 1.3 MB file using JCIFS v 1.2.9 takes 2.4 seconds
 but for  v 1.3.17 it takes 10.9 seconds (with the same code).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                Adding –Djcifs.util.loglevel=3 to program invocation gave me the following:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">jcifs.smb.SmbException: Failed to connect: americas/<ip><o:p></o:p></p>
<p class="MsoNormal">jcifs.util.transport.TransportException<o:p></o:p></p>
<p class="MsoNormal">java.net.NoRouteToHostException: No route to host<o:p></o:p></p>
<p class="MsoNormal">        at java.net.PlainSocketImpl.socketConnect(Native Method)<o:p></o:p></p>
<p class="MsoNormal">        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)<o:p></o:p></p>
<p class="MsoNormal">        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)<o:p></o:p></p>
<p class="MsoNormal">        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)<o:p></o:p></p>
<p class="MsoNormal">        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)<o:p></o:p></p>
<p class="MsoNormal">        at java.net.Socket.connect(Socket.java:579)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTransport.ssn139(SmbTransport.java:196)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTransport.negotiate(SmbTransport.java:249)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTransport.doConnect(SmbTransport.java:325)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.util.transport.Transport.run(Transport.java:241)<o:p></o:p></p>
<p class="MsoNormal">        at java.lang.Thread.run(Thread.java:724)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        at jcifs.util.transport.Transport.run(Transport.java:258)<o:p></o:p></p>
<p class="MsoNormal">        at java.lang.Thread.run(Thread.java:724)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTransport.connect(SmbTransport.java:309)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTree.treeConnect(SmbTree.java:156)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTree.send(SmbTree.java:74)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbTransport.getDfsReferrals(SmbTransport.java:703)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.Dfs.getTrustedDomains(Dfs.java:66)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.Dfs.resolve(Dfs.java:167)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbFile.resolveDfs(SmbFile.java:671)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbFile.send(SmbFile.java:773)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbFileInputStream.readDirect(SmbFileInputStream.java:181)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbFileInputStream.read(SmbFileInputStream.java:142)<o:p></o:p></p>
<p class="MsoNormal">        at jcifs.smb.SmbFileInputStream.read(SmbFileInputStream.java:132)<o:p></o:p></p>
<p class="MsoNormal">        at Test.main(Test.java:53)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My code is basically like this (with some parts removed):<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-family:Consolas">class Test<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">public static void main(String args[])<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:Consolas">final int BUFF_SIZE = 8 * 1024 ;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      jcifs.Config.setProperty("jcifs.resolveOrder", "DNS");<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:Consolas">jcifs.Config.setProperty ("jcifs.util.loglevel","3");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("americas", “…", "…");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      SmbFile rmifile;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      try {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            rmifile = new SmbFile("..”,auth) ;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      } catch (Exception e) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            System.out.println("Error : " + e.getMessage());<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            return;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      File localfile = null;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      InputStream bis = null;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      OutputStream bos = null;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      String localpath = "/home/accos/jcifs";<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      String filename = rmifile.getName();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      localfile = new File(localpath + File.separator + filename);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      byte[] buffer = new byte [BUFF_SIZE];<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      int bytesRead;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      try {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            bis = new SmbFileInputStream(rmifile);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            bos = new FileOutputStream(localfile);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            while ( (bytesRead = bis.read(buffer))>0 ) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">                  System.out.print("ok\n");<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">                  bos.write(buffer,0,bytesRead);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            }<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:Consolas">}  catch ( Exception e) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            System.out.println("Unable to copy file from samba to local file : " + e.getMessage());<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">      finally {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            try {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">                  bos.close();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">                  bis.close();<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            } catch (IOException e) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">            }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">     }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">The file was copied as I was able to see bunch of “OK”s<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:Consolas">Thanks in advance.<o:p></o:p></span></p>
<p class="MsoNormal">--Ludwig Lim—<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">P.S.  Seems that the code below doesn’t work<o:p></o:p></p>
<p class="MsoNormal" style="text-indent:.5in"><span style="font-family:Consolas">jcifs.Config.setProperty ("jcifs.util.loglevel","3");<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have to do something like java -D<span style="font-family:Consolas"> jcifs.util.loglevel=3 Test to display the logs</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>