Criar cliente soap manualmente

36 views
Skip to first unread message

Denis Ricci

unread,
Jan 9, 2014, 2:06:17 PM1/9/14
to soa-ap...@googlegroups.com
Pessoal,

O livro ensina a criar Clientes para webservices soap utilizando o wsimport, porém existe uma forma manual de criar os clientes? Pois por exemplo, como eu altero a URL do wsdl? Além disso, achei que o projeto ficou bastante poluído com todas aquelas classes.

Estou iniciando um projeto grande  onde precisarei enviar informações entre dispositivos diferentes, por exemplo: desktop, servidor(web), tablet(android). Na maior parte dos casos, precisarei enviar listas de objetos para serem processadas no servidor, serão objetos de diversos tipos como por exemplo: Produtos, Cliente, Usuarios, Pedido, etc.

Imagino que utilizar webservices será a melhor solução para trafegar essas informações. Eu consegui criar os webservices e clientes exatamente como o livro demostra, entretanto acho que os clientes gerados automaticamente não serão adequados no meu projeto. Existe alguma outra forma de fazer?

Alexandre Saudate

unread,
Jan 9, 2014, 2:13:20 PM1/9/14
to soa-ap...@googlegroups.com
Oi, Denis, tudo bem?

Então, existem diversas formas de criar os clientes sim. Você pode criar um número mais limitado de classes (e realizar a adaptação delas com JAXB), ou pode enviar direto via Strings (coisa que eu não recomendo muito, mas de repente...). 

Quanto à sua pergunta, a respeito de como alterar a URL do WSDL, acredito que está explícito no próprio livro (sinceramente, não me lembro onde). Mas tem uma boa explicação de como fazer isso aqui: http://biemond.blogspot.com.br/2009/04/changing-wsdl-url-endpoint-in-jax-ws.html

Me diga exatamente o que você tem em mente, que eu te mostro o que fazer ;)

[]'s


--
Você está recebendo esta mensagem porque se inscreveu no grupo "SOA Aplicado" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para soa-aplicado...@googlegroups.com.
Para postar neste grupo, envie um e-mail para soa-ap...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/soa-aplicado.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Message has been deleted

Alexandre Saudate

unread,
Jan 9, 2014, 2:46:35 PM1/9/14
to soa-ap...@googlegroups.com
Certo, e você gostaria de re-aproveitar seus beans já existentes, é isso?


Em 9 de janeiro de 2014 17:36, Denis Ricci <denis....@gmail.com> escreveu:
Oi Alexandre, estou bem e você como vai? Obrigado pela resposta rápida.

Eu consegui alterar a url a partir do link que você enviou. Porém ainda estou com algumas dúvidas referente ao Soap. Como eu disse estou começando um projeto que pode crescer muito e eu gostaria de ter uma forma padrão para trafegar as informações entre dispositivos, eu gostaria de fazer da forma mais correta possível para não ter problemas futuramente.

Eu queria montar algo +- assim:

Eu tenho uma classe Produto, que implementa a interface produto:

public interface ProdutoBean{
        public void  abstract setId(int id);


}



public class ProdutoBeanImpl implements ProdutoBean{
       private int id;
       private String nome;
       private String descricao;
       private double valor;

      //getters and setters
}




--
Você recebeu esta mensagem porque está inscrito em um tópico do grupo "SOA Aplicado" dos Grupos do Google.
Para cancelar a inscrição neste tópico, acesse https://groups.google.com/d/topic/soa-aplicado/hfVheT0yFpc/unsubscribe.
Para cancelar a inscrição neste grupo e todos os seus tópicos, envie um e-mail para soa-aplicado...@googlegroups.com.

Para postar neste grupo, envie um e-mail para soa-ap...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/soa-aplicado.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Denis Ricci

unread,
Jan 9, 2014, 2:48:54 PM1/9/14
to soa-ap...@googlegroups.com
Ops, desculpe, eu estava escrevendo e enviei sem querer, estou completando o email e já envio.

Denis Ricci

unread,
Jan 9, 2014, 2:57:17 PM1/9/14
to soa-ap...@googlegroups.com
Eu queria algo mais ou menos assim:

Imagine que eu tenha uma classe ProdutoBeanImpl que implementa a interface ProdutoBean:


public interface ProdutoBean{
    public abstract int getId();
public abstract void setId(int id);
public abstract String getNome();
public abstract void setNome(String nome);
public abstract String getDescricao(); 
public abstract void setDescricao(String descricao);
}


public class ProdutoBeanImpl{
private int id;
private String nome;
private String descricao;
//getter e setter
}


Essa classe será empacotada em um .jar que estará presente no servidor(webservice) e um cliente(uma aplicação android ou um Java com desktop). A classe produto é a mesma em todos os dispositivos, 
caso eu use um gerador de client como o wsimport ele irá gerar as classes novamente.

Eu gostaria de criar um envelope soap utilizando a classe que eu já possuo e envia-la como parâmetro. É possível fazer algo assim?

Alexandre Saudate

unread,
Jan 9, 2014, 3:04:10 PM1/9/14
to soa-ap...@googlegroups.com
É possível sim. Basta customizar as classes que você já possui com as anotações do JAXB (esse processo é mostrado no próprio livro).

Entenda que, apesar do seu cliente ser composto por código gerado automaticamente, você é livre para alterar esse código como bem entender. Assim sendo, basta você customizar os seus beans (de maneira que o XML gerado por eles seja válido para os web services) e correr pro abraço.

No entanto, faço uma observação de que a manutenibilidade não ficará das melhores, já que, se você precisar regerar os clientes, terá que refazer também as customizações. 

[]'s

Denis Ricci

unread,
Jan 11, 2014, 4:45:44 AM1/11/14
to soa-ap...@googlegroups.com

Ola alexandre,  obrigado pela atenção,  eu consegui fazer eu queria. Entretanto,  estou com um problema pr trabalhar com interface.   Mas vou abrir um outro post sobre o assunto pr deixar organizado

Reply all
Reply to author
Forward
0 new messages