1

wsdl と xsd から Web サービス クライアント (JAX-WS) とモデルを生成しました。石鹸本体内の名前空間に問題があります。

2 つのクラスがあるとします。

@XmlRootElement(namespace="aNamespace") class A {
   @XmlAnyElement(lax = true) Object obj;
}

@XmlRootElement(namespace="bNamespace") class B {...}

送信したいオブジェクトは「a」です。

A a = new A();
a.obj = new B();

私が呼び出しているサービスは、V1 または V3 リクエストのいずれかを想定しています。

   V1
   ...
   <soapenv:Body>
      <A xmlns="aNamespace">
         <B xmlns="bNamespace">
            <B1>...</B1>
            <B2>...</B2>
         </B>
      </A>
   </soapenv:Body>
   ...

   V3
   ...
   <soapenv:Body>
      <a:A xmlns:a="aNamespace">
         <b:B xmlns:b="bNamespace">
            <b:B1>...</b:B1>
            <b:B2>...</b:B2>
         </b:B>
      </a:A>
   </soapenv:Body>
   ...

サービスを呼び出そうとすると、次のリクエストが生成されます。

   V2
   ...
   <soapenv:Body>
      <a:A xmlns:a="aNamespace", xmlns:b="bNamespace">
         <b:B>
            <b:B1>...</b:B1>
            <b:B2>...</b:B2>
         </b:B>
      </a:A>
   </soapenv:Body>
   ...

そして、サービスはエラーを返します。

どうにかしてデフォルトの名前空間を B に設定できますか (そうすれば が表示されます<B xmlns="bNamespace">)?

4

1 に答える 1