Bonjour,

J'ai développé un petit web service JAXWS avec une méthode buildReport qui retourne un Object (ResultReport) comme résultat. Cette classe contient une string et un SOAPMessage.

Dans mon web service j'ai crée une petite classe de test pour vérifier que tout est ok.

Ma classe de tests:

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
  ...
  final String sXml = getXml();
  final ResultReport m = r.buildReport(sXml);
  final SOAPMessage msg = (SOAPMessage) m.getSoapMsg();
  msg.writeTo(System.out);

My buildReport method:
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public ResultReport buildReport(@WebParam(name = "xml") final String xml) {
  final ResultReport r = new ResultReport();
  r.setFlag("OK");
  // Checks if the received XML is not empty
  if(xml.isEmpty()) {
    r.setFlag("NOT_OK");
  }
 
  final SOAPMessage m = (SOAPMessage) TestExport.process(xml);
  r.setSoapMsg(m);
 
  return r;
}

The résultat est OK, c'est celui que j'attendais. La valeur du message SOAP est écrit sur la console et est la suivante:

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><Result>OK</Result><Message/></SOAP-ENV:Body></SOAP-ENV:Envelope>

Cependant, lorsque j'appèle la méthode du web service à partir d'une classe cliente, j'ai l'erreur suivante:

Code java : 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
 
Exception in thread "main" com.sun.xml.internal.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,95]
Message: XML document structures must start and end within the same entity.
	at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(Unknown Source)
	at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.createResponsePacket(Unknown Source)
	at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)
	at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)
	at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source)
	at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)
	at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)
	at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)
	at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)
	at com.sun.xml.internal.ws.client.Stub.process(Unknown Source)
	at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(Unknown Source)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source)
	at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source)
	at $Proxy30.buildReport(Unknown Source)
	at com.calluna.client.BuildReport.main(BuildReport.java:47)
Caused by: com.sun.xml.internal.ws.streaming.XMLStreamReaderException: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,95]
Message: XML document structures must start and end within the same entity.
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.wrapException(Unknown Source)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(Unknown Source)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextContent(Unknown Source)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextElementContent(Unknown Source)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(Unknown Source)
	... 16 more
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,95]
Message: XML document structures must start and end within the same entity.
	at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown Source)
	at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.next(Unknown Source)
	... 22 more

L'errreur se produit lorsque mon projet client appèle la méthode de mon web service, à la ligne suivante, lorsque je construit le messahe SOAP (final SOAPMessage m = (SOAPMessage) TestExport.process(xml).

Pour le moment je ne créer seulement qu'un simple SOAPMessage mais mon objectif est d'aller plus loin et d'y intégrer des pièces jointes.

Savez vous me dire pourquoi cette erreur se produit?

Merci