/ Spring-WSとJaxbを使用してWebサービス応答の名前空間タグを削除/削除 - java、web-services、soap、jaxb、spring-ws

Spring-WSとJaxb - java、web-services、soap、jaxb、spring-wsを使用してWebサービス応答のネームスペースタグを削除します。

私はSpringで作成されたエンドポイントSOAPを使用していますフレームワークはJAXBを使用していますが、Request Oneを送信したときにanwers(Expected Response)がプレフィックスなしで返されるようにしたいのですが、Current Response:で示されているように返されます。

名前空間なしでメッセージSOAPを返すにはどうすればよいですか?

リクエスト1

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"     xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:ZProveerDatosPagoProveed2>
<Bukrs>RG10</Bukrs>
<Langu>S</Langu>
<Lifnr>00000000</Lifnr>
</urn:ZProveerDatosPagoProveed2>
</soapenv:Body>
</soapenv:Envelope>

現在の回答

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<n0:ZProveerDatosPagoProveed2Response xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
<Adrnr>0000</Adrnr>
<Bankk>0000</Bankk>
<Bankn>0000</Bankn>
<Bkont>0000</Bkont>
<Iban>ES0000</Iban>
<KoinhFi>ROBLES AVN</KoinhFi>
<Land1>TH</Land1>
<Landx>XXXXX</Landx>
<Name1>ROBLES AVN</Name1>
<Pstlz>0000</Pstlz>
<Stcd1>A0000</Stcd1>
<Stras>ROBLES AVN</Stras>
<Swift>XXXXX</Swift>
<Text1_052>ROBLES AVN</Text1_052>
<Zterm>Z000</Zterm>
</n0:ZProveerDatosPagoProveed2Response>
</soap-env:Body>
</soap-env:Envelope>

リクエスト1と現在のレスポンスは別のWebサービス(私が実装したもの)に埋め込まれたWebサービスの要求/応答。この実装の理由は、最終的な答えがこれであることを要求したためです(ネームスペースタグなし)

期待される反応

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<ZProveerDatosPagoProveed2Response xmlns="urn:sap-com:document:sap:soap:functions:mc-style">
<Adrnr>0000</Adrnr>
<Bankk>0000</Bankk>
<Bankn>0000</Bankn>
<Bkont>0000</Bkont>
<Iban>ES0000</Iban>
<KoinhFi>ROBLES AVN</KoinhFi>
<Land1>TH</Land1>
<Landx>XXXXX</Landx>
<Name1>ROBLES AVN</Name1>
<Pstlz>0000</Pstlz>
<Stcd1>A0000</Stcd1>
<Stras>ROBLES AVN</Stras>
<Swift>XXXXX</Swift>
<Text1_052>ROBLES AVN</Text1_052>
<Zterm>Z000</Zterm>
</ZProveerDatosPagoProveed2Response>
</soap-env:Body>
</soap-env:Envelope>

回答:

回答№1は0

それができた方法は次のとおりです。

  1. 次の2つのjarを含める JAXB :jaxb-core.jarおよびjaxb-impl.jar
  2. package-info.javaファイルで、以下の設定を設定します。

あなたの名前空間をあなたの名前空間"

@javax.xml.bind.annotation.XmlSchema(namespace = yournamespace,
xmlns = {@javax.xml.bind.annotation.XmlNs(prefix = "",
namespaceURI = yournamespace)},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNSET)
package com.ctpayment.admin;

現在のjavaの実装は以前の設定を無視しますが、jaxb jarはしません。私はそれ以上調査を進めなかった。大事なことを言い忘れましたが、コンパイルには2つのjarファイルが必要です。