Rmi

7 respostas
A

olá gostaria de melhorar meu codigo de RMI pois ele está fazendo várias chamadas ao servidor remoto (Ele faz N+2 chamadas) e gostaria que ficasse só 1 chamada como faço ? o código atual é o seguinte :

classe JRimp.java

/[color=red]** Executa uma consulta SQL com uma clausula WHERE */

public void performSearch(int id, String searchString) throws RemoteException, SQLException {

jrc[id].performSearch(searchString);

}
/** Percorre a proxima linha a partir do resultado da consulta */ 
public String getNextRow(int id) throws RemoteException, SQLException { 
 return jrc[id].getNextRow(); 
} [/color]

onde o metodo performsearch e getNextRow acessa essa outra classe por polimorfismo:

JRConnection.java

[color=red]

/** Faz uma consulta SQL com uma clausula WHERE */

public void performSearch(String query) throws SQLException {

// Constroi a consulta SQL

query="SELECT id_cliente, nome, sobrenome, salario FROM clientes " + query;
stmt=con.createStatement(); 
 rs=stmt.executeQuery(query); 
 } 

/** Alcanca a proxima linha no conjunto do resultado, retornando null quando pronto */ 
public String getNextRow() throws SQLException { 
 if (rs.next()) { 
 return rs.getInt("id_cliente")+", " 
   + rs.getString("nome")+", " 
   + rs.getString("sobrenome")+", "
   + rs.getString("salario");
} 
/** fim do conjunto de resultados; fechamento da pesquisa */ 
rs.close(); 
rs=null; 
stmt.close(); 
stmt=null; 
return null; 
} [/color]

entendeu ele chama o metodo getNextRow recursivamente e a cada nova chamada ele conecta o servidor remoto entao se o banco de dados tiver N registros ele vai acessar N+2 vezes o banco de dados , ou seja , eu queria reduzir só para 1 chamada ao servidor.
Resumindo a opera: como faço um unico metodo na classe JRImpl.java sem alterar a classe JRConnection.java.

7 Respostas

T

Faça um método remoto que acesse todas as linhas de uma só vez e as retorne em um array de Strings.

Aliás, esse método de retornar dados é um pouco nojento (retornar em uma String). Por que você não cria uma classezinha só para conter esses campos já separadinhos? Algo como

public class Cliente implements Serializable {
    public int id_cliente;
    public String nome;
    public String sobrenome;
    public double salario;
}
A

ok vou tentar implementar essa solucao. eu tava fazendo um loop no servidor ate ele encontrar todos os dados requeridos !! só que estava pensando em fazer com o Vector ao ser declarado um metodo do tipo vector ele armazena o tamanho dos dados numa tabela, e esta tabela pode crescer dinamicamente. obrigado pela sugestão.

A

ola pessoal agora estou com outro problema na minha classe quando eu chamo a classe JRSImpleclient(ou seja o cliente ) ocorre o seguinte erro : NUllPOinterException. a classe servidor está abaixo:

o valor de retorno e vector

Vector<Object> meuVector = new Vector<Object>(1000);
  .
  .
  .
 
  public Vector getCompleteResult(int id, String searchString) throws
     RemoteException, SQLException { 
     
    
     
         jrc[id].performSearch(searchString); 
         
         while (meuVector.toString() != " ") 
         { 
                  
           result= jrc[id].getNextRow();
             meuVector.add(result) ;
                      } 
                     
       return meuVector; 
      }

os metodos performSearch and getNextRow retornam uma consulta sobre o banco de dados chamado cliente.mdb
a classe cliente chama o metodo que escrevi acima

servlet.getCompleteResult(id,search);

se alguem puder me ajudar de novo ficarei agradecido.

U

Ei, Alexandre!!!Bora estudar, senão o Quites te reprova.
Heheheheheeh
:shock:

A

UsuarioDesconhecido:
Ei, Alexandre!!!Bora estudar, senão o Quites te reprova.
Heheheheheeh
:shock:

Já tou reprovado mesmo hehe.

T

O que isso faz?
a) Não se comparam strings com “==” e “!=”
b) O que você queria fazer? Não entendi bulhufas.

A

thingol:

while (meuVector.toString() != " ")

O que isso faz?
a) Não se comparam strings com “==” e “!=”
b) O que você queria fazer? Não entendi bulhufas.

nao dava pra entender nada mesmo thiago. é que eu queria que ele mostrasse todos os registros do banco até aparecer um null só que esse null começou a dar problemas no tempo de compilacao e mudei para converter para string até aparecer " ". so que tambem nao derá certo , depois reslvi usar um tal de elementAt(i) ai foi um mar de rosas.

Criado 7 de dezembro de 2006
Ultima resposta 19 de dez. de 2006
Respostas 7
Participantes 3