2015-09-17 8 views
2

Мой вебсервис определяет WS адресация политику в WSDL сКак создать правильный WS-запрос с SOAP UI

<wsp:Policy wss:Id="WSAddressing_policy" 
     xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
     xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
     xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"> 
    <wsam:Addressing> 
     <wsp:policy/> 
    </wsam:Addressing> 
</wsp:Policy> 

... и

<wsdl:binding name="OutboundBinding" type="tns:OutboundPortType"> 
     <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
     <wsp:PolicyReference URI="#WSAddressing_policy"/> 
     <!-- Verify Availability -->   
     <wsdl:operation name="VerifyAvailability"> 
      <soap:operation soapAction="" style="document"/> 
      <wsdl:input name="VerifyAvailabilityRequest"> 
       <soap:body use="literal"/> 
      </wsdl:input> 
      <wsdl:output name="VerifyAvailabilityResponse"> 
       <soap:body use="literal"/> 
      </wsdl:output> 
     </wsdl:operation> 
    </wsdl:binding> 

я использую CXFS автоматические перехватчики для политики:

<cxf:bus> 
    <cxf:features> 
     <p:policies ignoreUnknownAssertions="true"/> 
     <cxf:logging/> 
    </cxf:features> 
</cxf:bus> 

Теперь я не смог создать корректный запрос для данного веб-сервиса с SOAP UI - Я всегда получаю следующий ответ, независимо, какие параметры WS-A Стараюсь:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode xmlns:ns1="http://www.w3.org/2005/08/addressing">ns1:MessageAddressingHeaderRequired</faultcode> 
     <faultstring>A required header representing a Message Addressing Property is not present</faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

Что я делаю неправильно?

Update

Я также не смог создать корректный запрос с использованием CXF клиент сам. Мне удалось получить его работу, если изменить WSDL из

<wsp:Policy wss:Id="WSAddressing_policy"> 
    <wsam:Addressing> 
     <wsp:policy/> 
    </wsam:Addressing> 
</wsp:Policy> 

в

<wsp:Policy wss:Id="WSAddressing_policy"> 
     <wsaw:UsingAddressing xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" wsp:Optional="false" /> 
    </wsp:Policy> 

ответ

0

кажется адресации пространства имен метаданных в настоящее время является проблемой для CXF. Я подал bugreport. Использование

Xmlns: WSAM = "http://www.w3.org/2007/0 2/адресации/метаданные" вместо Xmlns: WSAM = "http://www.w3.org/2007/0/адресация/метаданные « решает проблему.