@gordolucas88 escreveu:
Olá. Bom sou novo no fórum, e também novo no desenvolvimento de java. Estou construindo uma aplicação simples, que vai pegar um arquivo de texto do ftp e depois gravar esse arquivo no banco de dados.
As credenciais para acessar o ftp, estão armazenadas também no banco de dados.
Acontece, que ao buscar esses dados no banco, o Spring me joga erro de NullPointerException. já isolei e execute o metódo direto no service dele e trás resultado normalmente, não sei porque quando chamo ele através do arquivo de ftp, ele dá esse erro. Segue abaixo o meu código, e agradeço toda ajuda possível.package br.com.symbiosyssolucoes.PharmaIntegration.services; import br.com.symbiosyssolucoes.PharmaIntegration.entity.Connections; import br.com.symbiosyssolucoes.PharmaIntegration.repository.ConnectionsRepository; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import org.springframework.stereotype.Service; import javax.transaction.Transactional; import java.io.*; import java.util.Arrays; import java.util.Collection; import java.util.Optional; import java.util.Scanner; import java.util.stream.Collectors; @Service @Data @AllArgsConstructor @NoArgsConstructor @Transactional public class FtpConnection { private ConnectionsRepository connectionsRepository; private FTPClient ftp; public void menu(Scanner scanner) throws IOException { Boolean isTrue = true; while (isTrue) { System.out.println("Qual ação você quer executar?"); System.out.println("0 - Voltar ao menu anterior"); System.out.println("1 - Abrir Conexão"); System.out.println("2 - Fechar Conexão"); System.out.println("3 - Listar Arquivos"); System.out.println("4 - Subir Arquivos"); System.out.println("5 - Baixar Arquivos"); int opcao = scanner.nextInt(); switch (opcao) { case 1: this.open(); break; case 2: this.close(); break; case 3: this.listFiles("/ret/"); break; case 4: this.putFileToPath(new File("/test.txt"),"/"); break; case 5: this.downloadFile("/test.txt","C:\\Cronos\\"); break; default: isTrue = false; break; } } System.out.println(); } private void open() throws IOException { Long id = 1L; Optional<Connections> optional = this.connectionsRepository.findById(id); if(optional.isPresent()){ Connections connections = optional.get(); System.out.println(connections.toString()); String server = "symbiosyssolucoes.com.br"; int port = 21; String user = "legrand"; String password = "@nfs32xpt#"; ftp = new FTPClient(); ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); ftp.connect(server, port); int reply = ftp.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { ftp.disconnect(); throw new IOException("Exception in connecting to FTP Server"); } ftp.login(user, password); } else { System.out.println("Id Passado é invalido"); } } private void close() throws IOException { ftp.disconnect(); } private Collection<String> listFiles(String path) throws IOException { FTPFile[] files = ftp.listFiles(path); return Arrays.stream(files) .map(FTPFile::getName) .collect(Collectors.toList()); } private void putFileToPath(File file, String path) throws IOException { ftp.storeFile(path, new FileInputStream(file)); } private void downloadFile(String source, String destination) throws IOException { FileOutputStream out = new FileOutputStream(destination); ftp.retrieveFile(source, out); out.close(); } }
Mensagens: 3
Participantes: 2