Bonjour,
Je viens faire appel à vous car je reste bloqué sur un problème que je n'arrive pas à résoudre.
J'ai un ensemble de services REST développés à partir de l'API Jersey et je rencontre des difficultés pour récupérer la d'un attribut de la requête (attribut multi valué).
Un exemple ci dessous, mais globalement c'est un problème global à toutes les situations du même type.
La méthode prends ici en paramètre un attribut "donnees" qui doit-être une liste de valeurs passées dans l'entête "datas" de la requête HTTP.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @POST @Path("/alimenter/{objet}") @Produces( { "text/xml", "*/*" }) public Response addProxyObjects( @PathParam("objet") String typeObjet, @HeaderParam("idAppli") String idAppli, @HeaderParam("pwdAppli") String pwdAppli, @HeaderParam("titles") String titres, @HeaderParam("datas") List<String> donnees, @DefaultValue("1") @HeaderParam("version") String version, @Context HttpHeaders headers) throws MyException;
En local (Tomcat), je ne rencontre pas de difficultés, l'objet "donnees" contient bien toutes les valeurs passées dans la requête.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 idAppli=xxx pwdAppli=xxx titles=ligne0 datas=ligne1 datas=ligne2 datas=ligne3
Lorsque je déploie sur un serveur d'application "iso prod" (Tomcat + Apache), mon objet "donnees" ne contient plus qu'une valeur composée de toutes les valeurs de la requête séparées par une virgule.
En local, j'ai donc 3 valeurs = "ligne1", "ligne2", "ligne3"
Déployé sur mon serveur cible, 1 seule valeur = "ligne1, ligne2, ligne3"
Le problème survient lorsque je fais appel à mon service en passant par apache (port 80) et disparait lorsque je passe directement par Tomcat (port 8080)
J'utilise la version 1.19 de Jersey (Tomcat 6 + Jdk6)
Une idée , j'ai pu voir quelques sujets traitant du problème mais sans plus de détails m'aidant à le résoudre.
Merci pour votre aide car je m'arrache les cheveux
Partager