Variaveis

1 resposta
C

Tenho uma aplicação que roda em um servidor e manda os resultado pra um applet cliente analisar. Essas informações são um inteiro, um vetor e um vector que são variaveis da classe InforBean. Passo esse bean para rede atraves do objeto ObjectOutputStream. Quando esse objeto chega no cliente eu leio atraves do objeto ObjectInputStream e faço a seguinte a ação:

ObjectInputStream input = new ObjectInputStream( conexao.getInputStream() );
InforBean c = ( InforBean ) input.readObject();

Quando mando escrever na tela vejo que variavel int é atualizada sempre e os valores do vector e do vetor repetem sempre a primeira amostra de dados que é enviada para o cliente durante toda analise. O que devo fazer pra receber essas novas amostras do vector e do vetor que são diferentes sempre ?

1 Resposta

T

Uma forma boba de fazer isso funcionar é usar ObjectOutputStream.reset após enviar cada objeto, para evitar alguns problemas. (Veja se isso funciona, hein?)

public void reset()
throws IOException

Reset will disregard the state of any objects already written to the stream. The state is reset to be the same as a new ObjectOutputStream. The current point in the stream is marked as reset so the corresponding ObjectInputStream will be reset at the same point. Objects previously written to the stream will not be refered to as already being in the stream. They will be written to the stream again. Digamos que o lado servidor faça algo como:
InforBean c = new InforBean();
c.inteiro = 10;
c.vetor = new int[]{10, 20, 30};
output.writeObject(c);
output.reset(); // isto limpa um "cache" de objetos nos dois lados da conexão.
c.inteiro = 20;
c.vetor = new int[]{20, 30, 50};
output.writeObject(c);
output.reset();

Teste e veja se funciona.

Criado 24 de julho de 2006
Ultima resposta 24 de jul. de 2006
Respostas 1
Participantes 2