UnknownHostException: null при использовании Spring Integration SMBJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 UnknownHostException: null при использовании Spring Integration SMB

Сообщение Anonymous »

Я пытаюсь записать несколько файлов на общий ресурс SMB с помощью Spring Integration SMB. У меня следующая конфигурация:
@Configuration
public class SambaConfiguration {

@Value("${samba.host}")
private String host;

@Value("${samba.port}")
private int port;

@Value("${samba.domain}")
private String domain;

@Value("${samba.username}")
private String username;

@Value("${samba.password}")
private String password;

@Value("${samba.share}")
private String share;

@Bean
public SmbSessionFactory smbSessionFactory() {
SmbSessionFactory smbSession = new SmbSessionFactory();
smbSession.setHost(host);
smbSession.setPort(port);
smbSession.setDomain(domain);
smbSession.setUsername(username);
smbSession.setPassword(password);
smbSession.setShareAndDir(share);
smbSession.setSmbMinVersion(DialectVersion.SMB202);
smbSession.setSmbMaxVersion(DialectVersion.SMB311);
return smbSession;
}

@Bean
public MessageHandler smbMessageHandler(SmbSessionFactory smbSessionFactory) {
SmbMessageHandler handler = new SmbMessageHandler(smbSessionFactory);
handler.setRemoteDirectoryExpressionString("'/remote'");
handler.setAutoCreateDirectory(true);
return handler;
}

@Bean
public IntegrationFlow smbOutboundFlow(SmbSessionFactory smbSessionFactory) {
return IntegrationFlow.from("toSmbChannel").handle(
Smb.outboundAdapter(smbSessionFactory, FileExistsMode.REPLACE)
.useTemporaryFileName(false)
.fileNameExpression("headers['" + FileHeaders.FILENAME + "']")
.remoteDirectory("smbTarget")
).get();
}

@MessagingGateway
public interface SmbMessagingGateway {

@Gateway(requestChannel = "toSmbChannel")
void sendToSmb(File file);
}
}

основан на документации Spring: https://docs.spring.io/spring-integrati ... b-outbound.
В моем application.yml я установил ожидаемые значения следующим образом:
samba:
host: "192.168.1.45"
port: 445
domain: "WORKGROUP"
username: "username"
password: "password"
share: "downloads"

Затем я пытаюсь написать службу, которая отправляет файлы на SMB-сервер:
@Service
public class SambaServiceImpl implements SambaService {

private final SmbMessagingGateway smbMessagingGateway;

@Autowired
public SambaServiceImpl(SmbMessagingGateway smbMessagingGateway) {
this.smbMessagingGateway = smbMessagingGateway;
}

@Override
public void sendFile(String destinationFilePath, byte[] fileBytes) throws IOException {
File file = new File(destinationFilePath);
FileUtils.writeByteArrayToFile(file, fileBytes);

smbMessagingGateway.sendToSmb(file);
}
}

Однако всякий раз, когда я пытаюсь его использовать, я получаю исключение UnknownHostException: null и не могу понять, почему это происходит.
Вот стек, который я получить:
Caused by: java.io.IOException: Unable to initialize share: smb://WORKGROUP;username:******@192.168.1.45:445/downloads
at org.springframework.integration.smb.session.SmbShare.init(SmbShare.java:118)
at org.springframework.integration.smb.session.SmbSessionFactory.createSession(SmbSessionFactory.java:86)
at org.springframework.integration.smb.session.SmbSessionFactory.getSession(SmbSessionFactory.java:62)
... 79 common frames omitted
Caused by: jcifs.smb.SmbException: Failed to connect to server
at jcifs.smb.SmbTreeConnection.connectWrapException(SmbTreeConnection.java:429)
at jcifs.smb.SmbFile.ensureTreeConnected(SmbFile.java:573)
at jcifs.smb.SmbFile.getType(SmbFile.java:920)
at jcifs.smb.SmbFile.canRead(SmbFile.java:1070)
at org.springframework.integration.smb.session.SmbShare.init(SmbShare.java:107)
... 81 common frames omitted
Caused by: java.net.UnknownHostException: null
at jcifs.netbios.NameServiceClientImpl.getAllByName(NameServiceClientImpl.java:978)
at jcifs.netbios.NameServiceClientImpl.getAllByName(NameServiceClientImpl.java:55)
at jcifs.smb.SmbTransportPoolImpl.getSmbTransport(SmbTransportPoolImpl.java:173)
at jcifs.smb.SmbTransportPoolImpl.getSmbTransport(SmbTransportPoolImpl.java:48)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:565)
at jcifs.smb.SmbTreeConnection.connectHost(SmbTreeConnection.java:489)
at jcifs.smb.SmbTreeConnection.connect(SmbTreeConnection.java:465)
at jcifs.smb.SmbTreeConnection.connectWrapException(SmbTreeConnection.java:426)
... 85 common frames omitted


Подробнее здесь: https://stackoverflow.com/questions/793 ... ration-smb
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»