Servidor Web Service

Ola, precisso desenvolver um servidor web service em java (estou usando tomcat e axis) e como cliente utilizar delphi.

A minha duvida esta no servidor pois precisso retornar o resultset e ler em delphi, mas o delphi não consegue interpretar o resultset.

Alguem tem um exemplo de servidor web service que acesse banco de dados e retorne em wsdl e depois xml?

Meu metodo de retorno de retorno!!! tambem tentei retornar um array mas o delphi não consegue interpretar o xml retornado.

public ResultSet Listar(String cpf) {

    sql = "select * from VGRZ_PESSOAS_WS where NUM_CPF_CNPJ = "+cpf;
    
    try {
        con = configuracao.getInstancia().getConexao(); 
        stmt = con.createStatement();
        
                 
        rs = stmt.executeQuery(sql);
        
        return rs;
    }
    catch (SQLException e) {
      rs = null;
        acao = "erro";
        //msg_erro = funcoes.mensagem_BD(e.getErrorCode());
       
       return rs; 
    }
}

Não retorne o resultset, faça a iteração no resultset, passe os dados para dentro de uma lista e retorne essa lista ou alguma outra collection.

[]´s

Cara já tentei retornar array, objeto, collection mas não deu certo !!! ou é eu q to vacilando. Tem um exemplo??

http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/resultset.html

Faça uma busca no forum que você deve achar bastante coisa.

[]´s

AndreCorPian,

O melhor mesmo é retornar um XML, para que em qualquer linguagem, possa se fazer um script ou classe, para ler esse XML e obter os dados.

[quote=fsquadro]AndreCorPian,

O melhor mesmo é retornar um XML, para que em qualquer linguagem, possa se fazer um script ou classe, para ler esse XML e obter os dados.

[/quote]

Concordo com o fsquadro

A ideia do Web Service é retornar sempre um XML para que seja implementado em qualquer outra linguagem.

Calma.

O método dele deve retornar uma collection, ele não precisa retornar um xml, já que vai utilizar WS.

A própria implementação do WS já vai fazer isso baseado no WSDL dele.

Compementando:

Faz um porttype que chama esse DAO, e disponibiliza o método pro serviço.

[]´s

O Rafael acho que vc entendeu o que eu quero.

Desculpe a burrice mas “porttype que chama esse DAO” ??? como assim?

[quote=AndreCorPian]O Rafael acho que vc entendeu o que eu quero.

Desculpe a burrice mas “porttype que chama esse DAO” ??? como assim?[/quote]

Burrice é não perguntar :wink:

Porttype nada mais é do que a classe que contém os métodos que vão ser disponibilizados.

Ex (to fazendo sem editor, só pra ter idéia):


public class PessoasPorttype {
  
   private PessoasDAO dao;

   // Isso aqui pois aconselho a usar Dependency Injection (Ioc, enfim...)
   public PessoasPorttype(PessoasDAO pDao) {
     this.dao = pDao;
   }

   public Collection obterPessoas() {
      return this.dao.obterPessoas();   
   }

}

Não é legal disponibilizar o DAO direto.

É mais ou menos isso.

[]´s

Complementando:

Aí você disponibilizaria o método obterPessoas do porttype, pois se um dia você tiver que mudar a forma de buscar as pessoas, pros clientes do WS isso será transparente.

[]´s