Bonjour,
Je suis en train de construire un service web recevant un flux de données XML et retourne un document PDF.
Pour mettre à disposition ce service web j'utilise la combinaison Eclipse --> JAX-WS --> Metro --> Glassfish.
Aujourd'hui j'arrive à retourner mon document encodé en base 64 dans une balise de ma réponse.
Je souhaiterais encapsuler ce document dans un conteneur CDATA, mais ne sais pas comment faire.
J'ai tenté d'utiliser la classe générique javax.xml.ws.Holder, mais sans succès.
Voici les sources de mes tests:
Voici le retour de ce web service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 @WebService(name = "Composition", serviceName = "CompositionService") public class Composition { /** * Default constructor. */ public Composition() { // TODO Auto-generated constructor stub } @WebMethod() public long engineVersionCount() { return 17; // FIXME utiliser le fichier de configuration } @WebMethod(operationName = "composer") @WebResult(name = "document") public Response composer( @WebParam(name = "id", header = true) String idISA, @WebParam(name = "version", header = true) int versionFlux, ..., @WebParam(name = "xml", mode = WebParam.Mode.OUT) Holder<byte[]> XML) throws IOException { File resultat = new File( "D:/compositionTP/CompositionTP/ressources/doc.pdf"); byte[] test = new byte[2]; test[0] = 1; test[1] = 0; XML = new Holder<byte[]>(test); String idComposition = idISA + "comp"; Response rep = new Response(resultat, idISA, idComposition); return rep; } } @XmlType(name = "response", propOrder = { "idDemande", "idComposition", "document" }) @XmlAccessorType(XmlAccessType.FIELD) public class Response { @XmlElement(name = "document", type = Byte.class) private byte[] document = null; private String idDemande = null; private String idComposition = null; ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:composerResponse xmlns:ns2="http://service.compositionTP.natixis.com/"> <document> <idDemande>sdfg</idDemande> <idComposition>sdfgcomp</idComposition> <document xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:base64Binary">JVBERi0 ... GDQo=</document> </document> <xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </ns2:composerResponse> </S:Body> </S:Envelope>
Partager