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>