RESTEasy - Impossible de trouver le lecteur de corps du message pour le type: multipart/form-data

Question

Développer une fonctionnalité de téléchargement de fichier avec RESTEasy, voir l’exemple suivant ** pour le téléchargement de fichiers en plusieurs parties RESTEasy:

public class FileUploadForm {

    private byte[]data;

    @FormParam("file")
    public void setData(byte[]data) {
        this.data = data;
    }

   //...code omitted
}
@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes("multipart/form-data")
    public Response uploadFile(@MultipartForm FileUploadForm form) {
       //...code omitted
    }

}

L’exemple de téléchargement de fichier ci-dessus est capable de compiler sans erreur. Cependant, le message d’erreur suivant s’affiche lorsque le fichier est téléchargé sur le service déployé.

message d’erreur de resteasy

HTTP Status 500 - Bad arguments passed to public javax.ws.rs.core.Response
com.mkyong.rest.UploadFileService.uploadFile(com.mkyong.rest.FileUploadForm)
( org.jboss.resteasy.spi.BadRequestException org.jboss.resteasy.spi.BadRequestException:
Could not find message body reader for type:
class com.mkyong.rest.FileUploadForm of content type: multipart/form-data;
boundary="---------------------------98942870323811" )

Solution

RESTEasy ne peut pas trouver le lecteur de corps du message pour « multipart/form-data », il devrait être inclus dans « resteasy-multipart-provider.jar ».

Pour résoudre ce problème, assurez-vous que les 2 étapes suivantes sont cochées.

1. Déclaré resteasy-multipart-provider

Assurez-vous que « resteasy-multipart-provider.jar » est déclaré. Voir l’exemple Maven:

Fichier: pom.xml

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-multipart-provider</artifactId>
        <version>2.2.0.GA</version>
    </dependency>

2. mvn eclipse: eclipse -Dwtpversion = 2.0

Pour le projet d’application Web dans Eclipse, vous devez utiliser la commande suivante pour vous assurer que toutes les dépendances sont déployées correctement.

mvn eclipse:eclipse -Dwtpversion=2.0

Après cela, vérifiez votre « Assemblée de déploiement Web » Eclipse, assurez-vous que toutes les dépendances requises sont incluses.

  • Rappelez-vous -Dwtpversion = 2.0 ** Dans Eclipse (projet Web), le classique «` mvn eclipse: eclipse` »ne peut pas obtenir toutes les dépendances déployées. Vous devez plutôt utiliser« mvn eclipse: eclipse -Dwtpversion = 2.0 ».

lien://tag/jax-rs/[jax-rs]lien://tag/resteasy/[resteasy]