I'm doing a distributed system, and the client is asking for the same value multiple times.
Follow class Cliente
:
import java.awt.HeadlessException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import javax.swing.JOptionPane;
public class Cliente {
public static void main(String[] args) throws HeadlessException, NumberFormatException, RemoteException {
Interface controlador = null;
// ------------ - - - - - - - - - - - - - - - - Inicio: Escolha de Servidor ------------ - - - - - - - - - - - - - - - -
int escolha = 0;
do {
try {
escolha = Integer.parseInt(JOptionPane.showInputDialog(null, "Menu:\n\n Digite 1 para se conectar ao Servidor 1.\n\n Digite 2 para se conectar ao Servidor 2.\n\n Digite 3 para sair da aplicação.", "Escolha de Servidor", JOptionPane.PLAIN_MESSAGE));
System.out.println(escolha);
if (escolha == 1) {
controlador = (Interface)Naming.lookup("//localhost/rmi");// Rmiregistry
} else if(escolha == 2) {
controlador = (Interface)Naming.lookup("//localhost/rmi");// Rmiregistry
} else if(escolha == 3) {
JOptionPane.showMessageDialog(null, "Saindo da aplicação.", "EXIT", JOptionPane.WARNING_MESSAGE);
System.exit(2);
} else {
JOptionPane.showMessageDialog(null, "Por favor, digite apenas 1 ou 2", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Por favor, entre apenas com números (No caso: 1, 2 e 3).", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
//System.err.println("Problemas de localização! " + e);
e.printStackTrace();
//System.exit(2);
}
} while(escolha < 1 || escolha > 2);
// ------------ - - - - - - - - - - - - - - - - Fim: Escolha de Servidor ------------ - - - - - - - - - - - - - - - -
// ------------ - - - - - - - - - - - - - - - - Inicio: Cliente (1) ------------ - - - - - - - - - - - - - - - -
if(controlador.clientRole() == 0){
try {
while(true) {
controlador.incrementarCliente();
String comprimento = JOptionPane.showInputDialog(null, "Digite o valor do comprimento:", "CLIENTE (1)", JOptionPane.PLAIN_MESSAGE);
controlador.setComprimento(Float.parseFloat(comprimento));
JOptionPane.showMessageDialog(null, "Valor do Comprimento: "+controlador.getComprimento());
System.out.println("Aguardando parametros do segundo cliente.");
JOptionPane.showMessageDialog(null, "Aguardando parametros do segundo cliente.", "CLIENTE (1)", JOptionPane.INFORMATION_MESSAGE);
while(true) {
if(controlador.getLargura() == -9999) {
} else {
String Altura = JOptionPane.showInputDialog(null, "Digite o valor da Altura", "CLIENTE (1)", JOptionPane.PLAIN_MESSAGE);
controlador.setAltura(Float.parseFloat(Altura));
JOptionPane.showMessageDialog(null, "Valor do Comprimento: "+controlador.getAltura());
break;
}
}
//JOptionPane.showMessageDialog(null,"Valor da área: "+ Float.toString(controlador.getArea()));
JOptionPane.showMessageDialog(null,"Valor da área: ");//+ ((controlador.getBaseMaior() + controlador.getBaseMenor()) * controlador.getAltura()) /2);
controlador.resetar();
try {
String cont1 = JOptionPane.showInputDialog(null, "Deseja continuar? \n Digite 1 para sim \n Digite 0 para não", "CLIENTE (1)", JOptionPane.PLAIN_MESSAGE);
controlador.setContinua1(Integer.parseInt(cont1));
if (controlador.getContinua1() == 1){
}else if (controlador.getContinua1() == 0){
controlador.incrementarCliente();
break;
} else {
JOptionPane.showMessageDialog(null,"Valor invalido... saindo", "CLIENTE (2)" , JOptionPane.INFORMATION_MESSAGE);
controlador.incrementarCliente();
break;
}
} catch (Exception e){
JOptionPane.showMessageDialog(null, "Por favor, entre apenas com números (No caso: 0 ou 1).", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
}
}
} catch (RemoteException re) {
System.err.println("Problemas com a chamada remota! " + re);
re.printStackTrace();
System.exit(3);
}
// ------------ - - - - - - - - - - - - - - - - Fim: Cliente (1) ------------ - - - - - - - - - - - - - - - -
// ------------ - - - - - - - - - - - - - - - - Inicio: Cliente (2) ------------ - - - - - - - - - - - - - - - -
} else {
//Cliente 2
try {
while(true){
controlador.incrementarCliente();
if (controlador.getComprimento() == -9999){
System.out.println("Aguardando parametros do primeiro cliente.");
JOptionPane.showMessageDialog(null, "Aguardando parametros do primeiro cliente.", "CLIENTE (2)", JOptionPane.INFORMATION_MESSAGE);
}
while(true){
if (controlador.getComprimento() == -9999){
} else {
String largura= JOptionPane.showInputDialog(null, "Digite o valor da Largura:", "CLIENTE (2)", JOptionPane.PLAIN_MESSAGE);
controlador.setLargura(Float.parseFloat(largura));
JOptionPane.showMessageDialog(null, "Valor do Largura: "+controlador.getLargura());
break;
}
}
/*try {
while(true){
if (controlador.getAltura() == -9999){
} else {
JOptionPane.showMessageDialog(null,"Valor da área: " + ((controlador.getAltura() * controlador.getLargura()) * controlador.getComprimento());
break;
}
}
}catch (Exception e) {
JOptionPane.showMessageDialog(null, "Digite um valor válido! (UM NÚMERO INTEIRO)", "CLIENTE (2)", JOptionPane.ERROR_MESSAGE);
}
try{
String cont2 = JOptionPane.showInputDialog(null, "Deseja continuar? \n Digite 1 para sim \n Digite 0 para não", "CLIENTE (2)", JOptionPane.PLAIN_MESSAGE);
controlador.setContinua2(Integer.parseInt(cont2));
if (controlador.getContinua2() == 1){
}else if (controlador.getContinua2() == 0){
break;
} else {
JOptionPane.showMessageDialog(null,"Valor invalido... saindo", "CLIENTE (2)" , JOptionPane.INFORMATION_MESSAGE);
break;
}
} catch (Exception e){
JOptionPane.showMessageDialog(null, "Por favor, entre apenas com números (No caso: 0 ou 1).", "Opção Inválida", JOptionPane.ERROR_MESSAGE);
}*/
}
} catch (RemoteException re) {
System.err.println("Problemas com a chamada remota! " + re);
re.printStackTrace();
System.exit(3);
// ------------ - - - - - - - - - - - - - - - - Fim: Cliente (2) ------------ - - - - - - - - - - - - - - - -
}
}
}
}