<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>