Groovy Jersey客户端无法解析XML

Groovy Jersey客户端无法解析XML

问题描述:

我有一个Java Jersey客户端,它可以很好地将XML从Jersey Web服务传递到POJO,但是相同的等效Groovy脚本获取Parsing和NullPointer异常。有没有人遇到过这个?我需要做些额外的事情才能使它适用于Groovy?Groovy Jersey客户端无法解析XML

我们使用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的代码,得到一个ProcessingException和NullPointerException异常明显,而解组XML数据:

// 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> 
+1

有关异常的任何更多的细节?消息? – toniedzwiedz 2014-11-14 16:27:47

+0

第一个异常:已捕获: javax.ws.rs.ProcessingException:响应处理期间出现意外错误。 ... 引起:java.lang.NullPointerException – 2014-11-14 21:20:48

+0

我确定如果Groovy脚本调用Java方法来执行此Jersey调用,它仍会失败!是否有某些事情正在发生上下文,线程等导致这个Groovy-> Java失败?以下是我的版本:Groovy版本:2.2.0 JVM:1.7.0_17供应商:Oracle Corporation操作系统:Windows 7 – 2014-11-15 02:03:19

我解决了它。 Jersey有它自己的JAXB API Jar文件。我将它从Groovy CLASSPATH中解放出来,现在一切正常。有关于GRAILS用相同的错误而失败了类似的帖子:

http://grails.1312388.n4.nabble.com/Classloading-goes-bad-tp4431718p4435106.html