VRaptor WebService

Olá.

Estou estudando na prática a apostila fj28 da caleum sobre o vraptor.
Minha dúvida é o seguinte: cheguei até o capítulo de Rest, mas como posso expor os métodos do controller para ser utilizado por outra aplicação?

Quero que, por exemplo, uma aplicação PHP tenha acesso ao método listar que foi feito na apostila. Como posso expor este método? Como posso enviar o xml ou json? Alguem tem algum exemplo?

Olá djavali,

Para expor o método basta colocar uma das anotações @POST, @GET, @UPDATE, @DELETE (de acordo com a sua necessidade)
Com isso o metodo já podera ser acessado pelo PHP, sobre o retorno do seu metodo, o Vraptor tem um objeto Result onde você consegue facilmente transaformar sua resposta em xml ou json;

Segue 2 links que podem te ajudar;

Para expor seus metodos:
http://vraptor.caelum.com.br/pt/docs/resources-rest-pt/

Para retornar xml
http://vraptor.caelum.com.br/pt/docs/view-e-ajax/

Att,

magno, mais onde estaria a integração com o webservice? como que o webservice vai acessar esse restful?

Seguinte,

Você tem uma pagina em PHP que precisar utilizar esse serviços REST provido pelo Vraptor, certo ?

na verdade não, se você perceber não criei o topico kkk, mais estou buscando sobre webservice antes de criar o topico, minha duvida é que preciso integrar um webservice na minha aplicação vraptor e o vraptor é quem cuida da Session, queria saber se caso meu webservice precisar efetuar um Session.save? quem vai passar essa session pra ele, sendo que nao é o vraptor que cria esse webservice? e outra se eu conseguir passar a session, vai ser garantido o rollback do webservice?

AAAAAAAHHHHHHHHHHH foi mal não vi que eram pessoas diferentes

Mas vamos lá, seguinte você precisa realmente trabalhar com o WebServices?
Pois com o Vraptor você consegue fazer uma integração baseada no Rest evitando ter que trabalhar com os tradicionais WebServices, tem suas vantagens e desvantagens, para um melhor entendimento procura no google sobre o assunto.

Agora caso você realmente precisa ter os tradicionais webServices na sua fronteira uma alternativa é receber os dados no seu webService e transformar essa requisição em uma chamada Rest, segue abaixo um exemplo:


public class MainSendRequest {

    static String url = "http://localhost:8080/seuServico";

    public static void main(String[] args) {

        //Instantiate an HttpClient
        HttpClient client = new HttpClient();

        //Instantiate a GET HTTP method
        PostMethod method = new PostMethod(url);
        method.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");

        //Define name-value pairs to set into the QueryString
        NameValuePair nvp1= new NameValuePair("firstName","fname");
        NameValuePair nvp2= new NameValuePair("lastName","lname");
        NameValuePair nvp3= new NameValuePair("email","email@email.com");

        method.setQueryString(new NameValuePair[]{nvp1,nvp2,nvp3});

        try{
            int statusCode = client.executeMethod(method);

            System.out.println("Status Code = "+statusCode);
            System.out.println("QueryString>>> "+method.getQueryString());
            System.out.println("Status Text>>>"
                  +HttpStatus.getStatusText(statusCode));

            //Get data as a String
            System.out.println(method.getResponseBodyAsString());

            //OR as a byte array
            byte [] res  = method.getResponseBody();

            //write to file
            FileOutputStream fos= new FileOutputStream("donepage.html");
            fos.write(res);

            //release connection
            method.releaseConnection();
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
}

[quote=magnocosta]Seguinte,

Você tem uma pagina em PHP que precisar utilizar esse serviços REST provido pelo Vraptor, certo ?[/quote]

Bom, não foi eu que fiz a 2º pergunta, mas sim.
Irei tentar o que vc me passou. Adicionar a notação @GET e tentar acessar no php.

Muito obrigado, magnocosta!