Получать вложения из веб-службы JAX-WS с помощью клиента JAX-RPC

По мере перехода с JAX-RPC на JAX-WS я пытаюсь вызвать WebService, который использует JAX-W / JAXB. Сам клиент по-прежнему использует JAX-RPC. Файл WSDL остается прежним.

Это нормально работает, пока нет вложений. С вложениями не работает. Клиент говорит, что нет. Хотя их можно увидеть в SOAP-сообщении.

Насколько я понял проблему, JAX-WS действительно использует MTOM для помещения двоичных данных в сообщение, тогда как JAX-RPC использует MIME.

Можно ли каким-то образом заставить это работать?

Вот как выглядит сообщение JAX-RPC:

HTTP/1.1 200 OK
Date: Tue, 21 Dec 2010 15:24:10 GMT
Transfer-Encoding: chunked
Content-Type: multipart/related;boundary="----=_Part_6_5206227.1292945050584";type="text/xml";start="<soapPart>"
SOAPAction: "http://XXX"
X-Powered-By: Servlet/2.5 JSP/2.1

014a
------=_Part_6_5206227.1292945050584
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-ID: <soapPart>

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><operationWithAttachments href="cid:operationWithAttachments"/></env:Body></env:Envelope>
0522

------=_Part_6_5206227.1292945050584
Content-Type: multipart/mixed; 
    boundary="----=_Part_5_12763436.1292945050570"
Content-ID: <operationWithAttachments>

------=_Part_5_12763436.1292945050570
Content-Type: application/pdf; name=HelloWorld.pdf
Content-Disposition: attachment; filename=HelloWorld.pdf

%PDF-1.4
%öäüß
1 0 obj
<<
/Type /Catalog
/Version /1.4
/Pages 2 0 R
>>
endobj
2 0 obj
<<
...

И вот новое сообщение JAX-WS:

HTTP/1.1 200 OK
Date: Tue, 21 Dec 2010 15:23:02 GMT
Transfer-Encoding: chunked
Content-Type: multipart/related;start="<rootpart*07499eba-7835-4fe0-bb07-a04801504fb5@example.jaxws.sun.com>";type="application/xop+xml";boundary="uuid:07499eba-7835-4fe0-bb07-a04801504fb5";start-info="text/xml"
X-Powered-By: Servlet/2.5 JSP/2.1

02ba
--uuid:07499eba-7835-4fe0-bb07-a04801504fb5
Content-Id: <rootpart*07499eba-7835-4fe0-bb07-a04801504fb5@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns6:operationWithAttachments xmlns:ns6="XX" xmlns:ns5="XX" xmlns:ns4="XX" xmlns:ns3="XX" xmlns:ns2="XX" xmlns="XX">
00ba
<Include xmlns="http://www.w3.org/2004/08/xop/include" href="cid:9832a057-f692-4f48-ac7d-4dbd7ce76a74@example.jaxws.sun.com"/></ns6:operationWithAttachments></S:Body></S:Envelope>
0562

--uuid:07499eba-7835-4fe0-bb07-a04801504fb5
Content-Id: <9832a057-f692-4f48-ac7d-4dbd7ce76a74@example.jaxws.sun.com>
Content-Type: multipart/mixed; boundary="----=_Part_4_6279014.1292944982388"
Content-Transfer-Encoding: binary

------=_Part_4_6279014.1292944982388
Content-Type: application/pdf; name=HelloWorld.pdf
Content-Disposition: attachment; filename=HelloWorld.pdf

%PDF-1.4
%öäüß
1 0 obj
<<
/Type /Catalog
/Version /1.4
/Pages 2 0 R
>>
endobj
2 0 obj
<<
...

(я сам удалил пространства имен, так что это не проблема)

Идея состоит в том, чтобы сделать их такими же.

Кто-нибудь когда-либо делал это?

Большое спасибо за вашу помощь

7
задан Jigar Joshi 21 December 2010 в 15:40
поделиться