2015-09-17 40 views
2

我的web服务定义WS在其WSDL解决政策与如何建立一个有效的WS-A与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> 

现在我无法创建一个有效的请求此WebService与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> 

我在做什么错?

更新

我也无法创建使用CXF客户端本身就是一个有效的请求。我设法得到它的工作,如果我从

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

改变WSDL来

<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 /寻址/元数据” 的 代替 的xmlns:WSAM =“http://www.w3.org/2007/0 /寻址/元数据“ 解决了这个问题。