Я разрабатываю веб-приложение maven, в которое я включаю стандартный API Java EE 8.
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<scope>provided</scope>
</dependency>
Я развертываю JBoss EAP 7.2.9.
В моем приложении я хочу загружать файлы в конечную точку JAX-RS.
@POST
@Path("{id}/file-upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(@PathParam("id") Long id, @MultipartForm FileMetaData metaData) {}
FileMetaData
public class FileMetaData{
@FormParam("name")
private String name;
@FormParam("type")
private String type;
@FormParam("file")
@PartType("application/octet-stream")
byte[] file;
}
Проблема в том, что @MultipartForm не является частью стандартного API JavaEE 8. Чтобы использовать его, я должен включить поставщика resteasy multipart в свой pom.
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.6.1.Final</version>
<scope>provided</scope>
</dependency>
Я использовал версию, предоставленную WildFly 14.0.0, которая является аналогом JBoss EAP 7.2.9 сообщества. Однако я не уверен, что это правильная практика. JBoss EAP использует собственную реализацию модуля resteasy-multipart-provider-3.6.1.SP9-redhat-00001.jar, который находится в приватном репозитории maven.
Кроме того, я по-прежнему использую реализации по умолчанию, предоставляемые JBoss для API Java EE (включая несоставные конечные точки JAX-RS), поскольку я не включаю какие-либо другие конкретные зависимости в свой pom.
- Может ли включение приведенной выше зависимости быть источником конфликтов?
- есть ли способ зависеть от модуля, предоставляемого JBoss, без привязки к конкретной версии JBoss?