Я новичок в JAX-RS и имею ряд проблем (что странно заставляет меня пропустить SOAP). Вот фрагмент моего кода. Метод getMergedPDFReport должен взять файл и вернуть файл после некоторой обработки. После чего я бы беспокоиться о клиентеПроблемы с JAX-RS
@GET
@Produces("application/pdf")
@Path("merge-service")
public Response getMergedPDFReport(@QueryParam(ApiParameters.WORD_DOCUMENT) File wordDocument,
@QueryParam(ApiParameters.MERGE_FIELDS)Object[] fieldNames,
@QueryParam(ApiParameters.MERGE_VALUES) Object [] fieldValues) {
ResponseBuilder builder =null;
try {
File product = DocumentUtil.generatePDF(wordDocument, fieldNames, fieldValues);
builder = Response.ok(product);
builder.header("Content-Disposition", "attachment; filename=\\\"report.pdf\\\"");
} catch (Exception e) {
e.printStackTrace();
}
return builder.build();
}
я получаю предупреждение о моем журнале сервера, который не говорит: «Нет источника инъекции найдено для параметра типа общественного javax.ws.rs.core.Response». Кажется, я не знаю почему. 2. Я использую аннотацию @QueryParam? Должен ли я использовать его для типов файлов и массивов? Я видел много дебатов через @BeanParam, @MatrixParam и @QueryParam. Поскольку я не знал, что делают первые два, я решил сохранить это просто.
Любая помощь будет оценена по достоинству.
Я не уверен, если предупреждение вы получите на самом деле связано с кодом вы представили, как вы не имеют параметр типа 'Response' в этом методе. В вашем общем дизайне есть несколько недостатков. IMO: используйте HTTP POST, а не GET для загрузки файлов. GET - безопасная и идемпотентная операция и поэтому не должна изменять состояние ресурсов. Вызываемый URI часто ограничивается каркасами по длине. Если вы передаете закодированные файлы в качестве параметра запроса, длина URI может стать довольно большой и, следовательно, увеличить вероятность отклонения. –