我使用 Netbeans 生成了一个 JAX-WS Web 服务客户端,一切正常,除非我将 Axis2 库添加到项目中,UsernameToken 将从soap 标头中删除并且soap 消息看起来略有不同。我对 Java Web 服务很陌生,所以我真的很想了解发生了什么以及如何解决这个问题。我需要 Axis2 库的原因是我正在将一个客户端添加到一个具有许多 Axis2 客户端的大型项目中。
存在 Axis2 库时生成的 SOAP:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" />
</soapenv:Header>
<soapenv:Body>
<ns2:AddOrUpdate xmlns:ns2="http://tempuri.org/" xmlns="http://schemas.datacontract.org/2004/07/Service.DataTransferObjects" xmlns:ns4="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:ns3="http://schemas.datacontract.org/2004/07/Service.ServiceUtils">
<ns2:employee />
</ns2:AddOrUpdate>
</soapenv:Body>
生成的没有 Axis2 库的 SOAP:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>username</wsse:Username>
<wsse:Password>password1</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</S:Header>
<S:Body>
<AddOrUpdate xmlns="http://tempuri.org/" xmlns:ns2="http://schemas.datacontract.org/2004/07/Service.DataTransferObjects" xmlns:ns3="http://schemas.datacontract.org/2004/07/Service.ServiceUtils" xmlns:ns4="http://schemas.microsoft.com/2003/10/Serialization/">
<employee/>
</AddOrUpdate>
</S:Body>