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.
[code]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();
}
}[/code]
[code]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();
}
}[/code]
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.