我正在向webservice发送请求,并以xml格式从Web服务接收正确的响应,并在响应元素tage中填充了正确的值。现在我尝试解组,但响应对象正在填充null而不是我在XML响应中看到的值。
要检查哪些明显的事情? 这是我的代码:
InputSource outputSource = getWebServiceHelper().send(source,messageIdentifier);
JAXBElement<Envelope> responseEnv = (JAXBElement<Envelope>) getWebServiceHelper().unmarshal(new SAXSource(outputSource));
JAXBElement<ResponseObjectType> result = (JAXBElement<ResponseObjectType>)responseEnv.getValue().getBody().getAny().get(0);
第二行执行时,响应属性变为空。尽管在xml标签之间是正确的!
非常感谢。 切塔尼亚
答案 0 :(得分:1)
我通过激烈的反复试验找到了解决方案。这就是我完成它的方式。
运行xjc
创建4个类,即ObjectFactory.java
,package-info.java
,表示webservice请求的类和表示webservice响应的类。
我忽略了将package-info.java
与其他3个类一起包括在内。这就是jaxb无法解散repsone的原因。
如果我不包含ObjectFactory.java
,我在Spring上下文文件中定义的org.springframework.oxm.jaxb.Jaxb2Marshaller
bean抛出的服务器启动时会出现异常,所以我知道我必须包含它。但不包括package-info.java
无法无声地导致沮丧!
我已经在Stackoverflow和其他地方读过,unmarshal()方法只接受一个参数 - javax.xml.transform.Source
和unmarshal我需要使用@XmlRootElement
注释但这似乎不适用于我情况下。