Ajuda - Celular conectando com WS no Apache Tomcat Axis2

Olá,

Estou tendo problemas ao consumir um Web Service.

Primeiramente eu quero dizer que tenho acesso tanto à aplicação quanto ao Web Service.

Estou utilizando o Apache Axis2 como servidor e a aplicação está sendo desenvolvida em J2ME.

Vamos ao que interessa.

Meu Web Service é composto por uma classe chamada ?DBConnect?. Dentro dela há alguns métodos, dentre eles:

Faz a conexão com o banco de dados.

public String connect(String banco, String user, String senha) { try { Class.forName("com.ibm.db2.jcc.DB2Driver"); String connecturl = "jdbc:db2://localhost:50001/"+ banco; con = DriverManager.getConnection(connecturl, user, senha); return "Sucesso"; } catch (ClassNotFoundException ex) { return "Erro, classe não encontrada" + ex.getMessage(); } catch (SQLException e) { return "SQL Exception: "+ e.toString(); } }

Efetua uma consulta.

public int[] executa(String coluna) { try { stmt = con.createStatement(); res = stmt.executeQuery("select "+coluna+" from MEDIDAS order by datahora desc fetch first 20 rows only"); int[] dados = new int[20]; int i=0; while(res.next()) { int dado = res.getInt(coluna); dados[i] = dado; i++; } return dados; } catch (SQLException ex) { return new int[] {0}; } }

E faço um outro teste.

public String nome(String nome) { return "O nome eh: " + nome; }

O código completo do WS pode ser encontrado aqui!

Após publicar o Web Service, eu consigo gerar o seguinte WSDL em http://IP_ADDRESS:8080/axis2/services/DBConnect?wsdl:

Veja AQUI (pdf).

Ao acessar o endereço http://IP_ADDRESS:8080/axis2/services/DBConnect/connect?banco=bd&user=user&senha=pass e executar um método do WS no browser, eu recebo a seguinte resposta:

<ns:connectResponse> <ns:return>Sucesso</ns:return> </ns:connectResponse>

Ao acessar o endereço http://IP_ADDRESS:8080/axis2/services/DBConnect/executa?coluna=tensaoae executar um método do WS no browser, eu recebo a seguinte resposta:

<executaResponse> <return>108</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> <return>109</return> </executaResponse>

Ao acessar o endereço http://IP_ADDRESS:8080/axis2/services/DBConnect/connect/nome?nome=Faccin e executar um método do WS no browser, eu recebo a seguinte resposta:

<ns:nomeResponse> <ns:return>O nome eh: Faccin</ns:return> </ns:nomeResponse>

Vocês podem ver que no browser eu consigo receber as respostas normalmente, porém na minha aplicação, as respostas enviadas pelo ?return? só funcionam caso esteja no seguinte formato (somente texto):

return "abcdefghijklmnopqrstuvwxyz";[/code]

caso contrário o valor retornado é nulo.


A estrutura da minha aplicação é a seguinte (Veja o código completo [url=http://www2.unijui.edu.br/~luis.faccin/J2ME/arquivos/application.pdf]AQUI[/url]!)

[code]package Monitoramento;

import??
import dbconnect.DBConnect;
import dbconnect.DBConnect_Stub;

public class GraficoTFA extends Canvas implements Runnable {

    Vars??

    /*private int[] vetorTemporario = new int[10];*/

    public GraficoTFA() {

        Criar o gráfico??


        Runnable run = new Runnable() {

            public void run() {
                
                //STUBs
                DBConnect stub = null;
                try {
                    stub = new DBConnect_Stub();
                } catch (Exception e) {
                    System.out.println("Não conseguiu criar o DBConnect_Stub()");
                }

                //Conexão com o servidor
                try {
                    String con = stub.connect("GAIC", "db2inst1", "gaic02");
                    System.out.println("Conexão stub.connect: " + con);
                } catch (Exception e) {
                    System.out.println("Erro stub.connect: " + e.getMessage());
                }


                while (parar == false) {

                    try {
                        nome = stub.nome("Faccin");
                    } catch (Exception e) {
                        System.out.println("Exception?");
                    }



                    System.out.println("Nome---: " + nome);


                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException ex) {
                        ex.printStackTrace();
                    }

                    Define os dados do gráfico.......

                    repaint();
                

                }
            }
        };
        (new Thread(run)).start();

    }

    // stop Thread
    public void parar() {
        parar = true;
    }

    public void run() {
    /*while (run){
    try {
    
    } catch (Exception e) {  //InterruptedException
    e.printStackTrace();
    }
    }*/
    }

    protected void paint(Graphics g) {
        
	Desenha o gráfico;

    }

    protected void keyPressed(int keyCode) {

	Teclas pressionadas??.        

        }
    }
}

Outro exemplo que estou utilizando:

Se eu chamar o método a seguir:

try { String con = stub.connect("bd", "user", "pass"); System.out.println("Conexão stub.connect: " + con); } catch (Exception e) { System.out.println("Erro stub.connect: " + e.getMessage()); }

Eu receberei a resposta ?Sucesso!? e no console do NetBeans será exibido:

Agora veja este outro exemplo quando eu chamo o método ?nome? e envio algum nome por parâmetro:

try { nome = stub.nome("Faccin"); } catch (Exception e) { }

E eu mandar mostrar no console através do comando

A resposta será nula, como a seguir:

Nome---: O nome eh: null Uncaught exception java/lang/NullPointerException.

Notem que o texto ?O nome eh:? faz parte da resposta do WS, portanto Strings passam e os outros valores não passam.

O que eu preciso fazer é receber os valores do método ?executa?, nem que seja um valor de cada vez, para que eu possa gerar gráficos a partir desses valores…

Muito obrigado pela atenção de todos!

abração