Я запускаю некоторые проблемы с моим аксессуаром jersey rest и клиентом.Джерси Клиент открывает слишком много подключений
Это, как им с использованием методов на стороне сервера:
@POST
@Path("/seed")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response addSeed(Seed seed) throws InterruptedException {
if (!Validator.isValidSeed(seed)) {
return Response.status(400).entity("{\"message\":\"Please verify your JSON!\", \"stat\":\"failed\"}")
.build();
}
save(seed);
return Response.status(200).build();
}
Если я запустить клиент Джерси в то время как (истинный) цикл, есть соединения открыты и не будет рядом. Таким образом, я сталкиваюсь с проблемой. У меня много подключений, и моя сеть падает. Поэтому я больше не могу использовать свой сервер. После закрытия соединений я могу подключиться к серверу.
Это клиент:
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI()).path("api/seed");
while (true) {
ClientResponse cr = service.header("Content-Type", "application/json").post(ClientResponse.class, seed);
System.out.println(cr);
cr.close();
Мои вопросы:
Что я могу сделать на стороне сервера, чтобы предотвратить клиентов открыть новое соединение?
Как я могу указать максимальное количество соединений?
И как мне реализовать джерси-клиент для повторного использования открытого соединения?
Какой у вас сервер? – TheArchitect
Я использую tomcat 6, я могу указать в server.xml количество maxThreads. но я не хочу менять server.xml, есть ли способ сделать это в ressource или на клиенте? – user2504269