在 webservicetemplate.convertandsend(...) 期间编组时缺少 ID 属性
ID Attribute missing while marshaling during webservicetemplate.convertandsend(...)
我正在使用 jaxb2Marshaller 来使用 SOAP 服务。我在 Spring webServiceTemplate 中使用它。编组在 windows 上运行良好,但在 linux.
上运行良好
该问题仅出现在名为 "ID" 的属性中。将属性名称更改为 "id" 或其他名称可以正常工作。
在 windows 和 linux 上完成的编组之间有什么区别吗?
Spring WebserviceTemplate 配置:
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="jaxb2Marshaller"></property>
<property name="unmarshaller" ref="jaxb2Marshaller"></property>
<property name="defaultUri"><value>${ws.url}</value></property>
...
</bean>
现在,当我调用方法 webServiceTemplate.marshalSendAndReceive(createRequest);
时,"CreateRequest" 对象被编组为 XML。除名为 "ID" 的属性外,所有属性均已填充。
SubscriberList.java extends Parent {
protected String abc;
protected String def;
...
}
Parent.java {
protected int ID;
public getID(){return this.id}
public setID(int value){this.id=value}
}
我正在使用此网络服务,因此不允许更改 WSDL。
有人可以帮我解决这个问题吗?
这个问题有点奇怪。
在 XML 中,属性名称是 "ID",而在绑定 class 中,生成的变量声明如下:
<element name="ID" minOccurs="0" maxOccurs="1" type="xsd:int" />
@XmlElement(name = "ID")
protected Integer id;
public Integer getID() {
return id;
}
public void setID(Integer value) {
this.id = value;
}
插件生成的 getxxx() 和 setxxx() 方法是属性 "id" 的 getID() 和 setID()。
解决方案:
1. 我在生成的绑定中手动将 getID() 更新为 getId() 并将 setID() 更新为 setId() classes.
2. 停止重新生成绑定 classes,因为 WSDL 是固定合同。
我正在使用 jaxb2Marshaller 来使用 SOAP 服务。我在 Spring webServiceTemplate 中使用它。编组在 windows 上运行良好,但在 linux.
上运行良好该问题仅出现在名为 "ID" 的属性中。将属性名称更改为 "id" 或其他名称可以正常工作。
在 windows 和 linux 上完成的编组之间有什么区别吗?
Spring WebserviceTemplate 配置:
<bean id="webServiceTemplate" class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="jaxb2Marshaller"></property>
<property name="unmarshaller" ref="jaxb2Marshaller"></property>
<property name="defaultUri"><value>${ws.url}</value></property>
...
</bean>
现在,当我调用方法 webServiceTemplate.marshalSendAndReceive(createRequest);
时,"CreateRequest" 对象被编组为 XML。除名为 "ID" 的属性外,所有属性均已填充。
SubscriberList.java extends Parent {
protected String abc;
protected String def;
...
}
Parent.java {
protected int ID;
public getID(){return this.id}
public setID(int value){this.id=value}
}
我正在使用此网络服务,因此不允许更改 WSDL。
有人可以帮我解决这个问题吗?
这个问题有点奇怪。 在 XML 中,属性名称是 "ID",而在绑定 class 中,生成的变量声明如下:
<element name="ID" minOccurs="0" maxOccurs="1" type="xsd:int" />
@XmlElement(name = "ID")
protected Integer id;
public Integer getID() {
return id;
}
public void setID(Integer value) {
this.id = value;
}
插件生成的 getxxx() 和 setxxx() 方法是属性 "id" 的 getID() 和 setID()。
解决方案:
1. 我在生成的绑定中手动将 getID() 更新为 getId() 并将 setID() 更新为 setId() classes.
2. 停止重新生成绑定 classes,因为 WSDL 是固定合同。