Jaxrs multipart

Estou tentando executar uma solicitação para um serviço jaxrs que tem o tipo de mídia definido comomultipart/form-data. Esta solicitação contém uma lista de entidades (xml) e uma imagem (png, binário). Eu criei o pedido conforme descrito emisto fio pela BalusC.

O pedido parece ok depois de inspecioná-lo no wireshark, com exceção do checksum ip checksum estar errado (diz algo sobre "pode ​​ser causado por offload de checksum IP").

Meu grande problema aqui é como lidar com a solicitação de multipartes no lado do serviço. Eu não quero incluir nenhuma biblioteca de apache.cxf, resteasy ou qualquer coisa do tipo. Tudo o que eu quero confiar é o jaxrs api.

As duas partes no pedido têm nomesdeliveries esignature, onde a assinatura é um arquivo de imagem png enviado como binário. A lista de entregas deve ser analisada a partir de um xml (a entidade tem oxmlrootelement anotação e tal, então esta parte funciona separadamente). Eu tentei com este modo de ler as partes diferentes, mas isto foi realmente um longo caminho;

@PUT
@Path("signOff")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void signOffDeliveries(@FormParam("deliveries") List<Delivery> deliveries, @FormParam("signature")File signature) {
    //do something with the signature(image) and the list of deliveries.
}

Isso obviamente não funciona, e me fornece um código de status HTTP 404 se eu executar a solicitação no Websphere e um 415 quando eu executar a solicitação para um openejb integrado (em nossa estrutura de teste de integração). Se eu remover oFormParam anotações a solicitação é bem-sucedida.

Como posso ler as diferentes partes da solicitação multipartes usando apenas o jaxrs api?

EDITAR Ok, então eu forcei oPUT paraPOSTe adicionou um@Encoding anotação para os params como assim:

@POST
@Path("signOff")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void signOffDeliveries(
    @Encoded @FormParam("deliveries") String deliveries,
    @Encoded @FormParam("signature") File signature) {

}

Agora eu recebo o xml como uma string de texto, mas não consigo desmembrá-lo automaticamente para uma lista de entregas, mesmoContent-Type desta parte da carga está definido paraapplication/xml. O outro problema é que o arquivo que recebo tem comprimento == 0 e não consigo ler nenhum byte dele.

Estou perdendo um ponto essencial aqui?

questionAnswers(3)

yourAnswerToTheQuestion