我在绑定中...得到它?是的,已经四天了,所以即使我不笑。
我在xsd中使用继承,下面显示了类型的定义。
我有一个web服务,它具有类似于wsdl的类型部分中定义的复杂类型。
<xsd:import namespace="http://xmlns.mycomp.com/base" schemaLocation="base-data-types.xsd"/>
<xsd:element name="enterStateElement">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="base:BaseContextRequestType">
<xsd:sequence>
<xsd:element name="instatecode" nillable="true" type="string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
base:BaseContextRequestType在base-data-types.xsd中定义如下
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://xmlns.mycomp.com/base"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.1"
targetNamespace="http://xmlns.mycomp.com/base"
elementFormDefault="qualified">
<xsd:complexType name="BaseContextRequestType">
<xsd:annotation>
<xsd:appinfo>
<jaxb:class
implClass="com.mycomp.xmlns.BaseContextRequestType"
ref="com.mycomp.xmlns.BaseContextRequestType" >
</jaxb:class>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="processInstanceId" type="xsd:string" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
BaseContextRequestType java类看起来像
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BaseContextRequestType",
namespace="http://xmlns.mycomp.com/base",
propOrder = {
"processInstanceId"
})
public class BaseContextRequestType {
@XmlElement(required = true, nillable=true, namespace="http://xmlns.mycomp.com/base")
public String processInstanceId;
@XmlElement(required = true, nillable=true, namespace="http://xmlns.mycomp.com/base")
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String value) {
this.processInstanceId = value;
}
}
并且EnterElementState java类像这样扩展
public class EnterStateElement extends com.mycomp.xmlns.BaseContextRequestType {
以下是通过网络发送的soap消息片段。
<env:Body>
<enterStateElement xmlns:tns="http://ymqctds/" xmlns="http://ymqctds/">
<base:processInstanceId xmlns:base="http://xmlns.mycomp.com/base">iamtheprocessid</base:processInstanceId>
<tns:instatecode>R</tns:instatecode>
</enterStateElement>
不幸的是,在unmarshall中,processInstanceId字段永远不会在BaseContextRequestType基类上设置?
对于weblogic,必须有这样的例子,有没有人有任何想法?
谢谢, 标记
答案 0 :(得分:0)
我认为这个问题是因为您使用&#34; @ XmlElement&#34;对字段和属性进行了注释。自&#34; XmlAccessorType&#34;设置为&#34; FIELD&#34;,您需要删除&#34; @ XmlElement&#34;来自属性的注释(getter方法)。