How to use RemoteFileTemplate<SmbFile> in Spring integration?

274 views Asked by At

I've got a Spring @Component where a SmbSessionFactory is injected to create a RemoteFileTemplate<SmbFile>. When my application runs, this piece of code is called multiple times:

public void process(Message myMessage, String filename) {
  StopWatch stopWatch = StopWatch.createStarted();
  byte[] bytes = marshallMessage(myMessage);
  String destination = smbConfig.getDir() + filename + ".xml";
  if (log.isDebugEnabled()) {
    log.debug("Result: {}", new String(bytes));
  }

  Optional<IOException> optionalEx =
      remoteFileTemplate.execute(
          session -> {
            try (InputStream inputStream = new ByteArrayInputStream(bytes)) {
              session.write(inputStream, destination);
            } catch (IOException e1) {
              return Optional.of(e1);
            }
            return Optional.empty();
          });

  log.info("processed Message in {}", stopWatch.formatTime());
  optionalEx.ifPresent(
      ioe -> {
        throw new UncheckedIOException(ioe);
      });
}

this works (i.e. the file is written) and all is fine. Except that I see warnings appearing in my log:

DEBUG    my.package.MyClass    Result: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>....
INFO    org.springframework.integration.smb.session.SmbSessionFactory   SMB share init: XXX
WARN    jcifs.smb.SmbResourceLocatorImpl    Path consumed out of range 15
WARN    jcifs.smb.SmbTreeImpl   Disconnected tree while still in use SmbTree[share=XXX,service=null,tid=1,inDfs=true,inDomainDfs=true,connectionState=3,usage=2]
INFO    org.springframework.integration.smb.session.SmbSession  Successfully wrote remote file [path\to\myfile.xml].
WARN    jcifs.smb.SmbSessionImpl    Logging off session while still in use SmbSession[credentials=XXX,targetHost=XXX,targetDomain=XXX,uid=0,connectionState=3,usage=1]:[SmbTree[share=XXX,service=null,tid=1,inDfs=false,inDomainDfs=false,connectionState=0,usage=1], SmbTree[share=XXX,service=null,tid=5,inDfs=false,inDomainDfs=false,connectionState=2,usage=0]]
jcifs.smb.SmbTransportImpl  Disconnecting transport while still in use Transport746[XXX/999.999.999.999:445,state=5,signingEnforced=false,usage=1]: [SmbSession[credentials=XXX,targetHost=XXX,targetDomain=XXX,uid=0,connectionState=2,usage=1], SmbSession[credentials=XXX,targetHost=XXX,targetDomain=null,uid=0,connectionState=2,usage=0]]
INFO     my.package.MyClass    processed Message in 00:00:00.268

The process method is called from a Rest method, which does little else.

What am I doing wrong here?

0

There are 0 answers