我有一个Java Jersey客户端,可以根据来自Jersey Web服务的传递数据对POJO进行精细的解组,但是相同的等效Groovy脚本会获得Parsing和NullPointer异常。有没有人碰到这个?为了让它与Groovy一起使用,我还需要做些什么吗?
我们使用Groovy进行Spock测试。当我使用Groovy调用POST服务时,我也遇到了编组XML数据的相同问题。
这是服务器代码:
@GET
@Produces(MediaType.APPLICATION_XML)
public JAXBElement<WidgetType> getWidget() {
return new JAXBElement<WidgetType>(new QName("widget"), WidgetType.class, widget);
}
这里的Java客户端工作正常:
// Create widget from XSD generated class "WidgetType"
WidgetType widget = new WidgetType();
// Get - Fetch data from server "query"
// Unmarshall Generic XML data to type
GenericType<JAXBElement<WidgetType>> genericXMLWidgetType = new GenericType<JAXBElement<WidgetType>>() {};
widget = (WidgetType) widgetService.request(MediaType.APPLICATION_XML_TYPE).get(genericXMLWidgetType).getValue();
这里是Groovy代码,在解组XML数据时显然会获得ProcessingException和NullPointerException:
// Create widget from XSD generated class "WidgetType"
WidgetType widget = new WidgetType()
// Get - Fetch data from server "query"
// Unmarshall Generic XML data to type
GenericType<JAXBElement<WidgetType>> genericXMLWidgetType = new GenericType<JAXBElement<WidgetType>>() {}
widget = (WidgetType) widgetService.request(MediaType.APPLICATION_XML_TYPE).get(genericXMLWidgetType).getValue()
这里发回了RAW XML数据:
<?xml version="1.0" encoding="UTF-8" standalone="true"?>
<widget>
<WidgetId>1</WidgetId>
</widget>
答案 0 :(得分:1)
我解决了。 Jersey有自己的JAXB API Jar文件。我把它从Groovy CLASSPATH中取出来,现在一切正常。关于GRAILS失败的类似帖子也出现了同样的错误:
http://grails.1312388.n4.nabble.com/Classloading-goes-bad-tp4431718p4435106.html