Мне не удается преобразовать xml в SOAP

У меня проблема с вызовом веб-сервиса из Mule с помощью Axis. Я создал довольно простой пример, в котором у меня есть xml в файле, который читает Mule, затем он преобразуется в документ и отправляется в веб-сервис. Соответствующий код в конфигурации мула выглядит так:

<inbound>
 <file:inbound-endpoint path="./files/initial" transformer-refs="FileToString xmlToDom" connector-ref="fileConnector" /> 
</inbound>
<outbound>
 <pass-through-router>
  <axis:outbound-endpoint address="http://localhost:8081/holidayService?method=echoXXXX" synchronous="true" style="DOCUMENT" use="LITERAL" /> 
 </pass-through-router>
</outbound>

Однако вызов веб-службы завершается ошибкой, поскольку приведенная выше конфигурация генерирует сообщение SOAP с тегом <value0> сразу после тега и закрывает его непосредственно перед тегом. Сгенерированное сообщение SOAP выглядит следующим образом:

POST /holidayService?method=echoXXXX HTTP/1.1
Content-Type: text/xml
X-MULE_ENDPOINT: http://localhost:8081/holidayService?method=echoXXXX
SOAPAction: http://localhost:8081/holidayService?method=echoXXXX
directory: D:\bea\weblogic92\samples\domains\wl_server\files\processed
filename: HolidayRequest.xml
method: echoXXXX
originalFilename: HolidayRequest.xml
style: document
use: literal
User-Agent: Jakarta Commons-HttpClient/3.1
Host: 127.0.0.1:8081
Content-Length: 1183

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<mule:header soapenv:actor="http://www.muleumo.org/providers/soap/1.0" soapenv:mustUnderstand="0" xmlns:mule="http://www.muleumo.org/providers/soap/1.0">
<mule:MULE_CORRELATION_ID>D:\bea\weblogic92\samples\domains\wl_server\files\processed\HolidayRequest.xml</mule:MULE_CORRELATION_ID>
<mule:MULE_CORRELATION_GROUP_SIZE>-1</mule:MULE_CORRELATION_GROUP_SIZE>
<mule:MULE_CORRELATION_SEQUENCE>-1</mule:MULE_CORRELATION_SEQUENCE>
</mule:header>

</soapenv:Header>
<soapenv:Body>
<value0 xsi:type="ns1:DocumentImpl" xmlns="" xmlns:ns1="http://dom.internal.xerces.apache.org.sun.com">
<sch:HolidayRequest xmlns:sch="http://mycompany.com/hr/schemas">
<sch:Holiday>
    <sch:StartDate>2009-08-13</sch:StartDate>
    <sch:EndDate>1988-12-12</sch:EndDate>
</sch:Holiday>
<sch:Employee>
    <sch:Number>3434</sch:Number>
    <sch:FirstName>John</sch:FirstName>
    <sch:LastName>Smith</sch:LastName>
</sch:Employee>
</sch:HolidayRequest>
</value0>
</soapenv:Body>
</soapenv:Envelope>

Веб-сервис отлично работает в SOAPUI без тега <value0>, и из того, что я прочитал на веб-сайте Mule, я не знаю, почему он вставляется.


person kevfuzz    schedule 06.01.2009    source источник


Ответы (1)


В чем проблема с этим мыльным сообщением, мне кажется, все в порядке. Также, если вы пытаетесь использовать мула с веб-сервисами, я бы предложил использовать cxf. Они очень хорошо работают вместе, и cxf, на мой взгляд, хорошо разработан с точки зрения расширяемости, особенно в весенней среде. И мул, и cxf имеют встроенную в сердечник пружину.

person Ashwin    schedule 31.12.2009