我已经从 wsdl 和 xsd 生成了一个 Web 服务客户端 (JAX-WS) 和模型。我对肥皂体内的命名空间有疑问。
假设我们有两个类:
@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">
)吗?