Pode ser uma pergunta ridícula, mas como eu sou novo em programação web tudo pra mim é novidade.
Estou prestando uma prova para entrar em uma empresa, onde essa prova foi solicitado que eu implementasse um CRUD via JAX-RS. Eu não conheço Rest, então comprei o livro da casa do código para poder aprender rapidamente os conceitos e colocá-los em prática.
A minha dúvida é que pra que realmente é usado JAX-RS? Quer dizer, as operações que eu posso fazer com o protocolo são as mesmas que eu faria usando managed beans com persistencias nos meus metodos dentro dos DAOs.
A única coisa que fiquei com pé atrás foi em relação aos formatos XML e Json que o rest utiliza para transportar dados.
Mas na real, eu ainda não vi vantagens de utilizar JAX-RS…
Antes de alguém querer atacar pedra em silêncio, eu venho de programação de baixo nível para eletrônicos, então, tudo relacionado a web e sistemas de alto nível é coisa de outro mundo pra mim.
Alguém poderia me dar uma luz?
A prova em questão pediu para fazer esse CRUD com JAX-RS, eu entendi a teoria do HTTP e REST, mas como tenho mais prática usando managed beans, caso eu faça o CRUD com managed beans a empresa consideraria errado, ou eu realmente tenho que aprender a criar o sistema usando o JAX-RS?
Eu não diria que seria considerado errado, mas se eles usam JAX-RS, faz com que qualquer coisa diferente a isso fosse remar contra a maré. aliás, também me sinto perdido em web, mas vamos ter que se adaptar pois é o mercado que mais cresce.
Fala @Daniel_Dias
Cara, dei uma estudada no seu projeto, e aproveitei para seguir algumas dicas abordadas no livro REST da casa do código.
Eu implementei o projeto como mencionei aqui antes, porém, estou recebendo código 404 quando tento obter o xml pela url.
Caso eu acesse a mesma url com o fim .xhtml a minha página carrega certinho, mas a idéia seria que eu conseguisse obter o xml dos elementos que fossem listados na minha página.
Se não for pedir muito, será que você conseguiria me ajudar?
Eu cheguei a criar um outro tópico detalhando o problema:
Para desacoplar a comunicação entre módulos ou sistemas distintos.
A arquitetura REST permite que você desacople completamente o cliente do servidor. Ambos dependem apenas de HTTP e algum protocolo de representação (como JSON ou XML). Você pode ter o cliente e o servidor implementados em linguagens completamente diferentes.
Imagine que você tem um aplicativo móvel, uma aplicação desktop ou mesmo outro sistema web que quer consumir e interagir com os dados do seu sistema. Você até consegue utilizar JSF ou JSP só para transferir os dados, mas isso vai dar muito mais trabalho e consumir mais recursos do que deveria. A especificação JAX-RS faz para você todo o trabalho de interpretar a requisição do cliente e invocar o método certo dos seus recursos, alem de facilitar a construção da resposta à requisição.
E as especificações não são mutualmente exclusivas. Você pode invocar teus EJBs de dentro dos recursos JAX-RS. Pense no JAX-RS como sendo a VIEW do seu MVC, só que ela só mostra dados num formato bem cru e recebe comandos (requisições HTTP).
Aprenda o que é REST e o que é um serviço RESTful e tente implementar isso usando os managed beans. Depois tente com JAX-RS. A diferença vai ser clara
Oi @lvbarbosa
alguns conceitos já começaram a fazer sentido depois de olhar vários exemplos.
O problema agora, é como eu citei no meu último post aqui, é não estar conseguindo implementar ou fazer funcionar.
Quer dizer. Eu consigo acessar as minhas urls sem problemas e carregar os meus xhtml pelo jsf. O problema é que quando tento obter os valores por xml através do jax-rs eu recebo 404 not found.
MessageBodyWriter é a interface que coordena o mapeamento de um tipo do Java para alguma representação. Nesse caso, você precisa de um MessageBodyWriter que converta de ArrayList para o mime type application/xml
Qual container de aplicação você está utilizando? Geralmente já vem as bibliotecas para XML e JSON.
De qualquer forma, inclua no seu WAR algum framework que faça essa conversão. Como você está usando RESTEasy, a dependência pode ser essa aqui:
Se eu não me engano, com XML, você precisa colocar anotações no objeto que está sendo retornado e que vai ser convertido para XML. Tipo @XMLRootElement. Pesquisa por JAXB no Google.
Funcionou! Finalmente! Cara, tô até chorando de alegria(por dentro), eu não sabia nada de Rest, e passei os últimos dias estudando material pra caramba para tentar implementar algo funcional. E finalmente consegui!
Valeu mesmo pelas dicas e auxílio @lvbarbosa e ao @Daniel_Dias que compartilhou os repositórios de exemplo que ele fez, e me ajudou de maneira indispensável.