Boa noite,
Eu tenho uma aplicação que lê um arquivo, envia uma String de dados para um BD e renomeia essa arquivos com RMI. Eu criei 3 projetos diferentes, um para cada funcionalidade e agora criei um que abrange todas funcionalidade.
Eu já consegui integrar a leitura do arquivo e envio para o banco, mas quando tento renomear não dá certo! Já tentei integrar tudo no mesmo método, com métodos diferente e nada!
Olha, eu já tentei de toda maneira que consegui pensar, mas não dá certo. Não sei se é porque o arquivo acabou ou ainda está sendo usado, não sei mesmo.
import java.io.File;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Munique
*/
public class ServidorCompletoRMI implements InterfaceCompleta {
public String dbUrl = "jdbc:postgresql://localhost:5432/BDEstacao";
public String dbDriver = "org.postgresql.Driver";
public String dbUser = "postgres";
public String dbSenha = "postgre";
/**
private static String dir = "C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
+ File.separator + "aleatorio" + File.separator + "teste.txt";
private static String dir2 = "C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
+ File.separator + "aleatorio" + File.separator + "testelido.txt";
File renomeado = new File(dir2);
*/
File arquivo = new File("C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
+ File.separator + "aleatorio" + File.separator + "teste.txt");
File renomeado = new File("C:" + File.separator + "Users" + File.separator + "Munique" + File.separator + "Documents"
+ File.separator + "aleatorio" + File.separator + "testelido.txt");
public void inicia() {
try {
InterfaceCompleta stub = (InterfaceCompleta) UnicastRemoteObject.exportObject(this, 0);
Registry registry = LocateRegistry.createRegistry(3637);
registry.bind("Servidor", stub);
System.out.println("Servidor iniciado...");
} catch (RemoteException ex) {
System.out.println(ex.getMessage());
} catch (AlreadyBoundException ex) {
System.out.println(ex.getMessage());
} catch (Throwable t) {
t.printStackTrace();
}
}
public String enviaDados(String mensagem) throws RemoteException{
if (arquivo.exists()) {
boolean retorno = false;
Connection con = null;
String sql;
try {
try {
Class.forName(dbDriver);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
con = DriverManager.getConnection(dbUrl, dbUser, dbSenha);
con.setAutoCommit(false);
Statement stat = con.createStatement();
sql = "INSERT INTO estacao(codigoestacao, descestacao, horario, pressao, temperatura) VALUES (NEXTVAL('seq_estacao')," + mensagem + ");";
//System.out.println(sql);
stat.executeUpdate(sql);
con.commit();
stat.close();
con.close();
retorno = true;
} catch (SQLException e) {
try {
con.rollback();
con.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
} else {
return null;
}
return null;
}
public String renomearArquivo() throws RemoteException{
if (arquivo.exists()){
arquivo.renameTo(renomeado);
}
return renomeado.getName();
}
public static void main(String[] args) throws RemoteException {
new ServidorCompletoRMI().inicia();
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Munique
*/
public class ClienteCompletoRMI {
public ClienteCompletoRMI() throws RemoteException, NotBoundException {
iniciar();
}
public void iniciar() {
String opcao;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
Registry registry = LocateRegistry.getRegistry("localhost", 3637);
InterfaceCompleta intf = (InterfaceCompleta) registry.lookup("Servidor");
opcao = br.readLine();
while (!opcao.equals("")) {
if (opcao.equalsIgnoreCase("lista")) {
lista(intf);
renomear(intf);
}
opcao = br.readLine();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void lista(InterfaceCompleta intf) throws RemoteException {
String linha = null;
File file = new File("C:\\Users\\Munique\\Documents\\aleatorio\\teste.txt");
//File renomeado = new File("C:\\Users\\Munique\\Documents\\aleatorio\\testelido.txt");
try {
FileReader reader = new FileReader(file);
BufferedReader buffer = new BufferedReader(reader);
while (buffer.ready()) {
linha = buffer.readLine();
}
} catch (IOException ex) {
ex.printStackTrace();
}
String listaArquivo = intf.enviaDados(linha);
}
private void renomear(InterfaceCompleta intf) throws RemoteException {
String nome = intf.renomearArquivo();
if (nome != null) {
System.out.println(nome);
} else {
System.out.println(nome);
}
}
public static void main(String[] args) throws RemoteException, NotBoundException {
new ClienteCompletoRMI();
}
}
public interface InterfaceCompleta extends Remote{
public String enviaDados(String mensagem) throws RemoteException;
public String renomearArquivo() throws RemoteException;
}
Opa! Bati a cabeça mais um pouco e consegui achar uma solução.