Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Glauciney

J2me + BD + Celular.

Recommended Posts

Bom dia, Pessoal sou novo por aqui e não sei se estou postando isso no local certo.

 

Estou com um problema em uma aplicação que estou desenv. para celular. Ela comunica com o banco de dados corretamente no caso estou usando o Postgre, ela busca os registros corretamente sendo byte a byte. Após realizar essa leitura no banco tenho que jogar esses campos lidos na tela do meu celular, já criei o banco na web, coloquei os arquivos (*.jsp).

Ao executar o projeto ele me retorna a mensagem final "Uncaught exception: java.lang.OutOfMemoryError (stack trace incomplete)". Sinceramente não sei o que pode estar acontecendo abaixo está o código que me faz possivel essa execução.

 

import java.io.*;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;

public class acessoWeb implements Runnable {
    private Vector vetor_dados;
    private HttpConnection obj_conexao_http;//possibilita buscar os dados com o vector
    private String url;
    private InputStream obj_inputstream;
    private Aquario obj_aquario;
    private Thread thread;

public acessoWeb(Aquario obj_aquario) {
   this.obj_aquario = obj_aquario;

}

    public void inicia_thread() {
        System.out.println("Iniciando thread");
        thread = new Thread(this);
        thread.start();
        System.out.println("thread iniciada");
}

    public void run()
        {
        System.out.println("Iniciando public void run");
        url = "http://localhost:8080/AquarioWeb-war/HoraAliTanque.jsp";
        try
        {
            vetor_dados = new Vector(); //ira armazenar os dados para jogar na tela do celular
            String [] dados;
            obj_conexao_http = (HttpConnection) Connector.open(url);

            if (obj_conexao_http.getResponseCode() == HttpConnection.HTTP_OK)

            {
                obj_inputstream = obj_conexao_http.openDataInputStream();
                System.out.println("Http OK!");
                int i=1, caracter_lido = obj_inputstream.read();
                StringBuffer stringbuffer = new StringBuffer();
                while (caracter_lido != '^')
                {
                    
               [b] //lendo o cod.[/b]                    
                while (caracter_lido != ','){
                stringbuffer.append((char) caracter_lido);
                caracter_lido = obj_inputstream.read();
                    }
                dados = new String[3];
                System.out.println("Código: " +stringbuffer.toString().trim());
                dados[0] = stringbuffer.toString().trim();
                stringbuffer.delete(0, stringbuffer.length());
                caracter_lido = obj_inputstream.read();


               [b] //lendo o nome do user[/b]
                while (caracter_lido != ','){
                stringbuffer.append((char) caracter_lido);
                caracter_lido = obj_inputstream.read();
                    }
                System.out.println("Nome usuario: " +stringbuffer.toString().trim());
                dados[1] = stringbuffer.toString().trim();
                stringbuffer.delete(0, stringbuffer.length());
                caracter_lido = obj_inputstream.read();
                

		[b]//lendo tanque[/b]
                while (caracter_lido != '#'){
                    stringbuffer.append((char) caracter_lido);
                    caracter_lido = obj_inputstream.read();
                    }
                System.out.println("Nome tanque: " +stringbuffer.toString().trim());
                dados[2] = stringbuffer.toString().trim();
                stringbuffer.delete(0, stringbuffer.length());
                caracter_lido = obj_inputstream.read();


                vetor_dados.addElement(dados);

            }
                obj_aquario.recebedadosTanque(vetor_dados);
                obj_inputstream.close();
              
[b]		/*obj_aquario chama o método recebedados Tanque la do .java Aquario (Classe principal) passando assim o vetor_dados como parametro
                para que eu possa ta visualizando os dados que eu quero que ele list na tela do celular*/[/b]

            }
          }

           catch(IOException io)
           {
            System.out.println("Erro de IOException= "+io);
           } 
           catch(SecurityException se)
           {
            System.out.println("Erro de SecuryteException= "+se);
           }
    }
}

 

Agradeço a atenção!

Glauciney

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a memory disponivel para o emulador, provalmente você deve estar tentando carregar dados amais do que pode suportar a vm do celular.

você precisa ter ideia da quantidade de dados suportados e da quantidade de dados que ta tentando carregar. Repare que na tua StringBuffer você simplesmente ñ define um tamamnho limite de dados.

 

Abçs ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique a memory disponivel para o emulador, provalmente você deve estar tentando carregar dados amais do que pode suportar a vm do celular.

você precisa ter ideia da quantidade de dados suportados e da quantidade de dados que ta tentando carregar. Repare que na tua StringBuffer você simplesmente ñ define um tamamnho limite de dados.

 

Abçs ;)

 

 

Cara como eu defino o tamanho limite desses dados no meu StringBuffer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

StringBuffer recebe como paramentro um inteiro q determina a quantidade de caracteres, mas existe algo a mais na lógica a se fzr..

Primeiro confirme se esse é o problema.. você pode testar fazendo um trace do espaço livre na JVM a media que vai recebendo os dados, se estiver diminuindo é pq realmente

a memoria n ta suportando a quantidade de dados...

 

Runtime rt = Runtime.getRuntime();
System.out.println(rt.freeMemory());

Abçs http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.