Страницы

Поиск по вопросам

среда, 12 февраля 2020 г.

посчитать количество вызовов клиентом сервера

#java #rest


Привет всем!

Подскажите как организовать счетчик, который бы на стороне клиента показывал сколько
раз клиент отправлял запрос( у меня клиент - просто main - выводит в консоль) Есть
совсем простое приложение, которые развернуто на glassfish локально.  

Вот касс с клиентской частью: 

package com.mkyong.client;

import com.mkyong.rest.JSONService;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;

public class JerseyClientPost {

    public static void main(String[] args) {

        try {

            Client client = Client.create();

            WebResource webResource = client
                    .resource("http://localhost:8080/RESTfulExample3/rest/json/metallica/post");

            String input = "{\"singer\":\"Metallica\",\"title\":\"Fade To Black\"}";

            ClientResponse response = webResource.type("application/json")
                    .post(ClientResponse.class, input);


            if (response.getStatus() != 201) {
                throw new RuntimeException("Failed : HTTP error code : "
                        + response.getStatus());
            }

            System.out.println("Output from Server .... \n");
            String output = response.getEntity(String.class);
            System.out.println(output);



        } catch (Exception e) {
            e.printStackTrace();

        }

    }
}


А вот с серверной: 

package com.mkyong.rest;

import com.mkyong.CounterOfCalls;
import com.mkyong.Track;
import com.sun.jersey.spi.inject.Inject;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/json/metallica")
public class JSONService {


    @GET
    @Path("/get")
    @Produces(MediaType.APPLICATION_JSON)
    public Track getTrackInJSON() {

        Track track = new Track();
        track.setTitle("Enter Sandman");
        track.setSinger("Metallica");

        return track;

    }

    @POST
    @Path("/post")
    @Consumes(MediaType.APPLICATION_JSON)
    public Response createTrackInJSON(Track track) {

        String result = "Track saved : " + track;
        return Response.status(201).entity(result).build();

    }


}


Подскажите как должен выглядеть счетчик.

Это должна быть функция вроде такой? или как вообще и как это потом вызвать из-под
клиента: 

int count = 0;
@POST
@Path("/post")
@Produces(MediaType.APPLICATION_JSON)
public Integer getCountCalls(){
    return count++;
}

    


Ответы

Ответ 1



Все оказалось просто: в классе-клиенте появилось WebResource webResource1 = client.resource("http://localhost:8080/RESTfulExample/rest/json/metallica/counter"); ClientResponse response1 = webResource1.type("application/json").post(ClientResponse.class); String output1 = response1.getEntity(String.class); System.out.println(output1); а на сервере метод static int count = 0; @POST @Path("/counter") @Consumes(MediaType.APPLICATION_JSON) public Response createTackInJSON1() { String result = "Count = " + ++count; return Response.status(201).entity(result).build(); } обязательно нужно сделать переменную count статической , иначе счетчик будет все время показывать единицу.

Комментариев нет:

Отправить комментарий