Страницы

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

суббота, 20 апреля 2019 г.

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

Привет всем!
Подскажите как организовать счетчик, который бы на стороне клиента показывал сколько раз клиент отправлял запрос( у меня клиент - просто 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 ....
"); 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++; }


Ответ

Все оказалось просто:
в классе-клиенте появилось
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 статической , иначе счетчик будет все время показывать единицу.

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

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