Мне нужно создать веб-сервис с Джерси, который загружает большой файл из другой службы и возвращается клиенту. Я хотел бы, чтобы майка прочитала несколько байтов в буфер и напишет эти байты на клиентский сокет.
Я бы хотел, чтобы он использовал неблокирующий ввод-вывод, поэтому я не занимаюсь нитью. (Этого не может быть достигнуто)
@GET
@Path("mypath")
public void getFile(final @Suspended AsyncResponse res) {
Client client = ClientBuilder.newClient();
WebTarget t = client.target("http://webserviceURL");
t.request()
.header("some header", "value for header")
.async().get(new InvocationCallback<byte[]>(){
public void completed(byte[] response) {
res.resume(response);
}
public void failed(Throwable throwable) {
res.resume(throwable.getMessage());
throwable.printStackTrace();
//reply with error
}
});
}
До сих пор у меня этот код, и я считаю, что Джерси будет загружать полный файл, а затем писать его клиенту, который я не хочу делать. любые мысли?