在休息反应的空uri

时间:2013-07-31 04:45:24

标签: rest jaxb restlet nexus

我正在为nexus oss开发一个插件。我的应用程序会创建一个休息调用响应(来自服务器的请求)。但是当服务器收到它时,它会抛出错误,如下所示

 javax.xml.bind.UnmarshalException:
 unexpected element (uri:"", local:"com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse"). 
Expected elements are 
\lt{http://www.collab.net/teamforge/integratedapp}CreateProjectConfigurationRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersRequest\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetConfigurationParametersResponse\gt,
\lt{http://www.collab.net/teamforge/integratedapp}GetPageComponentParametersRequest> 

我猜这个异常背后的原因是响应与预期的不匹配,因为uri(这只是我的猜测,如果它是错的请纠正我),即没有设置响应中的命名空间。 / p>

在我的插件中剪辑代码如下


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "configurationParameter"
})
@XmlRootElement(name = "GetConfigurationParametersResponse", namespace = "http://www.collab.net/teamforge/integratedapp")
public class GetConfigurationParametersResponse
    extends BaseResponse
{

创建响应时为什么没有选择名称空间?

如果异常的真正原因不是空的uri,甚至纠正我。如果是这样,这个例外背后的真正原因是什么? 请帮忙 。

1 个答案:

答案 0 :(得分:1)

根据错误消息,传递给JAXB的XML文档是。看起来好像这个XML是由JAXB以外的东西创建的(我怀疑是XStream)。

<com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
    ...
</com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>

您的JAXB映射期望XML文档如下所示:

<GetConfigurationParametersResponse xmlns="http://www.collab.net/teamforge/integratedapp">
    ...
</GetConfigurationParametersResponse>

如果您需要与以下XML进行交互:

<com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>
    ...
</com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse>

然后您可以将映射更改为:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "configurationParameter"
})
@XmlRootElement(name = "com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse")
public class GetConfigurationParametersResponse
    extends BaseResponse
{