2016-04-26 78 views
2

嗯,首先,對不起我的英文不好。錯誤地生成了Java WebService客戶端

我在生成web服務時遇到了問題。 我有我的lib模型,其中包含類Endereco,Cidade e Cliente和我的DAO lib,其中包含這些模型的數據庫訪問類。 在Endereco.java類中,我有一個私有屬性Cidade cidade。 我已經獲得了一個web服務來作爲前端和後端之間的控制。 問題是,當我產生這個webservice類「地址」得到int屬性城市,而不是我的基類「Cidade」的屬性。

按照類代碼:

「ENDERECO.java」:

package lib.modelo; 

public class Endereco { 

private int id; 
private Cliente cliente; 
private String endereco; 
private String numero; 
private String complemento; 
private Cidade cidade; 
private String bairro; 
private String uf; 
private String cep; 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public Cliente getCliente() { 
    return cliente; 
} 

public void setCliente(Cliente cliente) { 
    this.cliente = cliente; 
} 

public String getEndereco() { 
    return endereco; 
} 

public void setEndereco(String endereco) { 
    this.endereco = endereco; 
} 

public String getNumero() { 
    return numero; 
} 

public void setNumero(String numero) { 
    this.numero = numero; 
} 

public String getComplemento() { 
    return complemento; 
} 

public void setComplemento(String complemento) { 
    this.complemento = complemento; 
} 

public Cidade getCidade() { 
    return cidade; 
} 

public void setCidade(Cidade cidade) { 
    this.cidade = cidade; 
} 

public String getBairro() { 
    return bairro; 
} 

public void setBairro(String bairro) { 
    this.bairro = bairro; 
} 

public String getUf() { 
    return uf; 
} 

public void setUf(String uf) { 
    this.uf = uf; 
} 

public String getCep() { 
    return cep; 
} 

public void setCep(String cep) { 
    this.cep = cep; 
} 

} 

「CIDADE.java」:

package lib.modelo; 

public class Cidade { 

private int id; 
private String descricao; 
private double valor_taxa; 

public double getValor_taxa() { 
    return valor_taxa; 
} 

public void setValor_taxa(double valor_taxa) { 
    this.valor_taxa = valor_taxa; 
} 

public int getId() { 
    return id; 
} 

public void setId(int id) { 
    this.id = id; 
} 

public String getDescricao() { 
    return descricao; 
} 

public void setDescricao(String descricao) { 
    this.descricao = descricao; 
} 


} 

「ENDERECODAO.java」:

package lib.dao; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 

import lib.banco.ConexaoBanco; 
import lib.modelo.Endereco; 

public class EnderecoDAO { 


private static final String CONSULTA_POR_ID = "SELECT * FROM cadastros.cliente_endereco WHERE id = ?;"; 
private static final String CONSULTA_POR_CLIENTE = "SELECT * FROM cadastros.cliente_endereco WHERE fK_cliente = ?;"; 
private static final String INSERE = "INSERT INTO cadastros.cliente_endereco (fk_cliente , endereco , numero , complemento , fk_cidade , bairro , uf , cep) VALUES (?, ?, ?, ?, ?, ?, ?, ?);"; 
private static final String ALTERA = "UPDATE cadastros.cliente_endereco SET endereco = ?, numero = ?, complemento = ?, fk_cidade = ?, bairro = ?, uf = ?, cep = ? WHERE fk_cliente = ? AND id = ?;"; 

public List<Endereco> ConsultarEnderecoPorCliente (int codCliente) throws SQLException{ 

    Connection conexaoSQL = null; 
    ResultSet rsEndereco = null; 
    List<Endereco> listaEndereco = new ArrayList<Endereco>(); 
    ClienteDAO clienteDAO = new ClienteDAO(); 
    CidadeDAO cidadeDAO = new CidadeDAO(); 

    try{ 

     conexaoSQL = ConexaoBanco.getConexao("selecao"); 
     PreparedStatement pstmt = conexaoSQL.prepareStatement(CONSULTA_POR_CLIENTE); 

     pstmt.setInt(1, codCliente); 

     rsEndereco = pstmt.executeQuery(); 

     while (rsEndereco.next()){ 

      Endereco endereco = new Endereco(); 

      endereco.setId(rsEndereco.getInt("id")); 
      endereco.setCliente(clienteDAO.CousultaPorId(rsEndereco.getInt("fk_cliente"))); 
      endereco.setEndereco(rsEndereco.getString("endereco")); 
      endereco.setNumero(rsEndereco.getString("numero")); 
      endereco.setComplemento(rsEndereco.getString("complemento")); 
      endereco.setCidade(cidadeDAO.consultaPorId(rsEndereco.getInt("fk_cidade"))); 
      endereco.setBairro(rsEndereco.getString("bairro")); 
      endereco.setUf(rsEndereco.getString("uf")); 
      endereco.setCep(rsEndereco.getString("cep")); 

      listaEndereco.add(endereco); 

     } 

     rsEndereco.close(); 
     conexaoSQL.close(); 

    }catch(Exception e){ 
     conexaoSQL.close(); 
     throw new RuntimeException(e); 
    } 

    return listaEndereco; 

} 

public boolean CadastrarEndereco (Endereco endereco) throws SQLException{ 

    boolean status = false; 
    Connection conexaoSQL = null; 

    try { 

     conexaoSQL = ConexaoBanco.getConexao("insercao"); 

     PreparedStatement pstmt = conexaoSQL.prepareStatement(INSERE); 
     pstmt.setInt(1, endereco.getCliente().getId()); 
     pstmt.setString(2, endereco.getEndereco()); 
     pstmt.setString(3, endereco.getNumero()); 
     pstmt.setString(4, endereco.getComplemento()); 
     pstmt.setInt(5, endereco.getCidade().getId()); 
     pstmt.setString(6, endereco.getBairro()); 
     pstmt.setString(7, endereco.getUf()); 
     pstmt.setString(8, endereco.getCep()); 

     pstmt.execute(); 
     conexaoSQL.close(); 
     status = true; 

    } catch (Exception e) { 

     conexaoSQL.close(); 
     throw new RuntimeException(e); 

    } 

    return status; 
} 

public boolean AlterarEndereco (Endereco endereco) throws SQLException{ 

    boolean status = false; 
    Connection conexaoSQL = null; 

    try { 

     conexaoSQL = ConexaoBanco.getConexao("alteracao"); 

     PreparedStatement pstmt = conexaoSQL.prepareStatement(ALTERA); 
     pstmt.setString(1, endereco.getEndereco()); 
     pstmt.setString(2, endereco.getNumero()); 
     pstmt.setString(3, endereco.getComplemento()); 
     pstmt.setInt(4, endereco.getCidade().getId()); 
     pstmt.setString(5, endereco.getBairro()); 
     pstmt.setString(6, endereco.getUf()); 
     pstmt.setString(7, endereco.getCep()); 
     pstmt.setInt(8, endereco.getCliente().getId()); 
     pstmt.setInt(9, endereco.getId()); 

     pstmt.execute(); 
     conexaoSQL.close(); 
     pstmt.close(); 
     status = true; 

    } catch (Exception e) { 
     conexaoSQL.close(); 
     throw new RuntimeException(e); 
    } 

    return status; 
} 

public Endereco ConsultarEnderecoPorId (int codEndereco) throws SQLException{ 

    Connection conexaoSQL = null; 
    ResultSet rsEndereco = null; 
    Endereco endereco = new Endereco(); 
    CidadeDAO cidadeDAO = new CidadeDAO(); 
    ClienteDAO clienteDAO = new ClienteDAO(); 

    try { 

     conexaoSQL = ConexaoBanco.getConexao("selecao"); 
     PreparedStatement pstmt = conexaoSQL.prepareStatement(CONSULTA_POR_ID); 

     pstmt.setInt(1, codEndereco); 

     rsEndereco = pstmt.executeQuery(); 

     if(rsEndereco.next()){ 

      endereco.setBairro(rsEndereco.getString("bairro")); 
      endereco.setCep(rsEndereco.getString("cep")); 
      endereco.setCidade(cidadeDAO.consultaPorId(rsEndereco.getInt("fk_cidade"))); 
      endereco.setCliente(clienteDAO.CousultaPorId(rsEndereco.getInt("fk_cliente"))); 
      endereco.setComplemento(rsEndereco.getString("complemento")); 
      endereco.setEndereco(rsEndereco.getString("endereco")); 
      endereco.setId(rsEndereco.getInt("id")); 
      endereco.setNumero(rsEndereco.getString("numero")); 
      endereco.setUf(rsEndereco.getString("uf")); 

     } 

    } catch (Exception e) { 

     throw new RuntimeException(e); 

    } 

    conexaoSQL.close(); 
    rsEndereco.close(); 
    return endereco; 

} 
} 

而網絡服務ENDERECO「SERVICOENDERECO.java」:

package lib.webservice.endereco; 

import java.util.ArrayList; 
import java.util.List; 

import lib.dao.EnderecoDAO; 
import lib.modelo.Cidade; 
import lib.modelo.Cliente; 
import lib.modelo.Endereco; 

public class ServicoEndereco { 

public Endereco[] consultaPorCliente(int id){ 

    EnderecoDAO eDAO = new EnderecoDAO(); 
    List<Endereco> listaEndereco = new ArrayList<Endereco>(); 

    try{ 

     listaEndereco = eDAO.ConsultarEnderecoPorCliente(id); 

    }catch(Exception e){ 

     throw new RuntimeException(e); 

    } 

    return listaEndereco.toArray(new Endereco[0]); 
} 

public boolean cadastra(Cliente cliente , String logradouro , String numero , 
         String complemento , Cidade cidade , String bairro , 
         String uf , String cep){ 

    boolean status = false; 

    try{ 

     Endereco endereco = new Endereco(); 
     EnderecoDAO eDAO = new EnderecoDAO(); 

     endereco.setCliente(cliente); 
     endereco.setEndereco(logradouro); 
     endereco.setNumero(numero); 
     endereco.setComplemento(complemento); 
     endereco.setCidade(cidade); 
     endereco.setBairro(bairro); 
     endereco.setUf(uf); 
     endereco.setCep(cep); 

     status = eDAO.CadastrarEndereco(endereco); 

    }catch(Exception e){ 

     throw new RuntimeException(e); 

    } 

    return status; 
} 

public boolean altera(Cliente cliente , String logradouro , String numero , 
         String complemento , Cidade cidade , String bairro , 
         String uf , String cep , int id){ 

    boolean status = false; 

    try{ 

     Endereco endereco = new Endereco(); 
     EnderecoDAO eDAO = new EnderecoDAO(); 

     endereco.setCliente(cliente); 
     endereco.setEndereco(logradouro); 
     endereco.setNumero(numero); 
     endereco.setComplemento(complemento); 
     endereco.setCidade(cidade); 
     endereco.setBairro(bairro); 
     endereco.setUf(uf); 
     endereco.setCep(cep); 
     endereco.setId(id); 

     status = eDAO.AlterarEndereco(endereco); 

    }catch(Exception e){ 

     throw new RuntimeException(e); 

    } 

    return status; 
} 

public Endereco consultaPorId (int id){ 

    EnderecoDAO eDAO = new EnderecoDAO(); 
    Endereco endereco = new Endereco(); 

    try { 

     endereco = eDAO.ConsultarEnderecoPorId(id); 

    } catch (Exception e) { 

     throw new RuntimeException(e); 

    } 

    return endereco; 

} 
} 
+0

問題出在哪裏? –

+0

@DeendayalGarg問題出在Web服務中Endereco類的生成代碼上。在模型類Endereco.java中有兩個屬性: 私有Cidade cidade;和私人客戶端客戶; 當我生成web服務時,Endereco類將具有以下屬性: private int cidade和private lib.Modelo.Cliente cliente。 屬性cidade應該像客戶屬性 private lib.Modelo.Cidade cidade –

回答

0

問題解決!

由於我的服務器配置,類之間的差異正在發生。當我從apache服務器類路徑更新.jar文件時,代碼已正確生成。