| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 16:51:36
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Chegou a necessidade de consumir os controllers que estão como restful no vraptor, se eu acesso a uri no navegador, me aparece o documento xml correto, agora se na hora em que vou consumir esse webservice esta dando esse erro:
This message was edited 4 times. Last update was at 07/01/2010 21:23:12
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 17:09:01
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Como o cliente será uma aplicação mobile, o client restifulie foi descartado.
A minha pergunta agora seria, como já existe aplicações usando SOAP como webservice, tem como através de SOAP fazer chamadas REST?
Dessa forma eu utilizo o Restifulie no server-side.
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 17:39:54
|
Alex Basto
JavaBaby
![[Avatar]](/images/avatar/cb0e59b8f769a8698b9f7154dd8809b5.jpg)
Membro desde: 11/11/2009 09:56:06
Mensagens: 98
Offline
|
davisnog wrote:Como o cliente será uma aplicação mobile, o client restifulie foi descartado.
A minha pergunta agora seria, como já existe aplicações usando SOAP como webservice, tem como através de SOAP fazer chamadas REST?
Dessa forma eu utilizo o Restifulie no server-side.
Na sua pergunta eu não consigo entender a que conceitos você quer dizer sobre SOAP para REST, você quer empregar invocações para que especificação ? Na sua observação o Client Restifulie fora descarto "Implementação a que ?".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 17:46:08
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
Não sei como você está gerando o webservice, porém pelo erro é quando você esquece de colocar um alias para o bean. No caso o erro não parece ser no webservice, mas sim no seu cliente que consome o xml.
Quando você declara suas classes java precisa apontar quais atributos serão convertidos em qual classe. No caso o xstream usa ou o nome completo da classe ou então você precisa definir o alias manual, seja via código ou annotation.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 20:57:26
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Alex Basto seguinte, hoje eu gero os webservices com o restifulie, biblioteca disponibilizada pelo pessoal da caelum, junto com o vraptor, nesse caso os metodos de meus controllers são consumidos via webservice REST.
Mais, as aplicações mobile que temos hoje, consomem webservices no padrão SOAP, a minha pergunta era, seria possivel consumir os REST através de SOAP?
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 20:59:10
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
garcia-jj, as minhas classes model quanto a minha classe cliente, nos dois casos CategoriaVeicular, estão com alias do xstream.
Mais como eu havia dito, pra mobile ficou inviavel utilizar o restifulie como client, no caso será utilizado somente no server.
This message was edited 1 time. Last update was at 14/12/2009 21:00:17
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 21:06:17
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Aproveitando a oportunidade.
Hoje tenho minha classe model no projeto web, com as annotations do hibernate, por exemplo CategoriaVeicular.
No outro projeto mobile tem mesma classe, mais sem annotations, pois ela é utilizada para receber os dados do webservice.
Nesse caso eu tenho nos dois projetos com a mesma classe CategoriaVeicular, a diferença é que no projeto web eu tenho as dependências do hibernate e no mobile não.
Minha pergunta seria: Tem alguma sugestão para que eu possa gerar um jar das classes model e disponibilizar para as duas aplicações, nesse caso as alterações seriam todas feitas no projeto web, e dessa forma qualquer alteração necessária seria feita num unico projeto.
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/12/2009 22:58:53
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
Hmm, você pode nos mostrar como está seu cliente? Apenas a classe que consome.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 08:28:01
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Codigo no client, essa é uma aplicação console que esta consumindo o webservice.
No servidor a diferença é que tem as annotations do hibernate.
This message was edited 1 time. Last update was at 15/12/2009 08:28:40
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 09:46:37
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
davisnog wrote:Aproveitando a oportunidade.
Hoje tenho minha classe model no projeto web, com as annotations do hibernate, por exemplo CategoriaVeicular.
No outro projeto mobile tem mesma classe, mais sem annotations, pois ela é utilizada para receber os dados do webservice.
Nesse caso eu tenho nos dois projetos com a mesma classe CategoriaVeicular, a diferença é que no projeto web eu tenho as dependências do hibernate e no mobile não.
Minha pergunta seria: Tem alguma sugestão para que eu possa gerar um jar das classes model e disponibilizar para as duas aplicações, nesse caso as alterações seriam todas feitas no projeto web, e dessa forma qualquer alteração necessária seria feita num unico projeto.
Davi, você pode usar algum gerador que sempre que você altere a classe ele crie para você a classe do projeto mobile. Mas minha sugestão é fazer manual mesmo, pois essa coisa de classe persistente ser espelho de classe de transferencia de dados não me parece bom. Obvio que isso varia de projeto a projeto, mas não curto muito (minha opinião).
Penso assim porque nem sempre você tem as classes exatamente iguais. Uma coisa é a sua estrutura de tabelas e outra é o que você precisa trafegar e exibir para o cliente.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 09:47:14
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 5632
Offline
|
Então... mesmo definindo os Alias via anotações, vc precisa registrar as classes no XStream... tem algo como xstream.readAnnotations(CategoriaVeicular.class) ou coisa do tipo...
qto a pergunta se tem como consumir REST via SOAP, acho que não dá... o formato das msgs soap é bem diferente (tem cabeçalho, corpo e tal)
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 09:47:32
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
davisnog wrote:Codigo no client, essa é uma aplicação console que esta consumindo o webservice.
[...]
No servidor a diferença é que tem as annotations do hibernate.
Davi, me parece normal sua classe mesmo. Mande o envelope do XML para comparar?
Abraços
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 09:51:46
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2673
Localização: Porto Alegre
Offline
|
lucascs wrote:qto a pergunta se tem como consumir REST via SOAP, acho que não dá... o formato das msgs soap é bem diferente (tem cabeçalho, corpo e tal)
Não, não dá mesmo. Rest além de você possuir aqueles estados que o SOAP também tem, no rest você não possui um contrato formal, portanto seu XML é assim como você quiser, por exemplo:
Já no SOAP você tem contratos fortes entre o serviço e o consumidor. Todo SOAP possui um WSDL que define esse contrato e garante que todo mundo saiba como consumir esse webservice. O webservice possui um envelope com uma série de informações além do seu próprio XML de retorno.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 10:04:02
|
davisnog
JavaEvangelist
Membro desde: 21/05/2007 21:05:18
Mensagens: 437
Localização: Blumenau/SC
Offline
|
Bom a classe envelope se eu entedi é essa:
|
- DAVI NOGUEIRA -
Assim como um pai se compadece de seus filhos, assim o SENHOR se compadece daqueles que o temem. Salmos 103:13
@davisnog |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/12/2009 10:26:57
|
Guilherme Silveira
Administrador
Membro desde: 14/08/2002 10:09:26
Mensagens: 1093
Localização: Sao Paulo
Offline
|
Bom dia Davi, Garcia,
Realmente a exception parece não estar usando o XStream com a configuração que voce citou. Mas como no cliente não poderá usar o restfulie por ser celular, deixamos de lado. Se aparecer o problema novamente, poste o código do cliente por aqui?
Sobre SOAP consumir REST, como as mensagens em REST geradas pelo serializador não está envelopada em soap por padrão, não funcionará.
Mas a questão da arquitetura REST não possuir um contrato formal é um pouco diferente. Você pode - e muitos dizem que deve - criar xsd's ou utilizar o schematron para fazer a validação de sua estrutura xml e REST não te proibe de faze-lo, basta adicionar o cabeçalho com link para seu schema:
Tem um post aqui sobre o assuntO: http://guilhermesilveira.wordpress.com/2009/12/08/hypermedia-making-it-easier-to-create-dynamic-contracts/
O REST também possui as informações (metadados) que o soap define em diversos momentos, mas utiliza cabeçalhos http (o protocolo em si) para passar parte dessas informações.
Na parte de criar uma classe anotada/não anotada para ser usada nos dois lugares, algumas pessoas vão recomendar não usar a mesma classe mesmo: se você disponibiliza a mesma classe para os dois lados, você aumenta o acoplamento entre os dois lados. Permitindo cada lado ter uma representação diferente (com os campos que interessa para cada um) diminui o acoplamento, mas isso só faz sentido se você for disponibilizar para outros clientes diferentes.
Abraço
|
-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
 |
|
|
 |
|
|