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.

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;
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
idAppli=xxx
pwdAppli=xxx
titles=ligne0
datas=ligne1
datas=ligne2
datas=ligne3
En local (Tomcat), je ne rencontre pas de difficultés, l'objet "donnees" contient bien toutes les valeurs passées dans la requête.
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