Я пытаюсь настроить составную конечную точку jax-rs на paraya (думаю, то же самое будет и со Glassfish). Я сделал простой пример с минимальным кодом java-ee8. Я знаю, что не существует стандартного способа добавления поддержки нескольких частей в jax-rs.
Я обнаружил, что для Payara / Glassfish я должен добавить класс MultiPartFeature, как это:
@ApplicationPath("/api")
public class JAXRSConfiguration extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new HashSet<>();
classes.add(MultiPartFeature.class);
return classes;
}
}
Это моя конечная точка:
@Path("")
public class ExampleResource {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String postMultipartMethod(
@FormDataParam("field") InputStream fileInputStream,
@FormDataParam("field") FormDataContentDisposition fileMetaData
) {
return "post multipart method";
}
}
.
curl -v -F field=@pom.xml http://localhost:8080/jax-rs-multipart/api
> POST /jax-rs-multipart/api HTTP/1.1
> Content-Type: multipart/form-data; boundary=------------------------d60a2c38aa57dfbe
>
< HTTP/1.1 404 Not Found
Я получаю «404 - Запрошенный ресурс недоступен». Если я закомментирую добавление полей MultiPartFeature и метода, тогда конечная точка работает, но я не могу получить опубликованные поля. Если я закомментирую MultiPartFeature и оставлю параметры метода, то получу «Источник параметра не найден для параметра типа ...»
Он развертывается нормально, не видит ничего плохого в журналах.
Я положил его в github repo , если вы хотите воспроизвести.