Resteasy在getEntity()方法中抛出异常

时间:2013-08-01 08:01:09

标签: rest resteasy restlet restlet-2.0

我的服务器代码如下(它使用resteasy)。响应来自我使用restlet的nexus oss应用程序。此响应正由以下抛出异常的方法处理

private <T> T get(String path, Class<T> responseClass) throws IntegratedAppFault {

    ClientRequest clientRequest = new ClientRequest(this.mEndPoint + path);
    addHeaderToRequest(clientRequest);
    ClientResponse<T> response;
    try {
        response = clientRequest.get(responseClass);
        if (response.getStatus() == 200) {
            return response.getEntity(); // Line throwing exception 
        } else {
            throw getFault(response);
        }
    } catch (Exception e) {
        throw new IntegratedAppFault(e.getMessage());
    }

当服务器收到异常时,它会进入此方法并最终在response.getEntity()处抛出异常。例外情况如下

  

javax.xml.bind.UnmarshalException:意外元素(uri:“”,   本地: “com.collabnet.teamforge.ia.types.GetConfigurationParametersResponse”)。   预期的要素是   &LT; {http://www.collab.net/teamforge/integratedapp} CreateProjectConfigurationRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} CreateTemplateRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} CreateTemplatizedProjectConfigurationRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} CreateUserRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} DeleteProjectConfigurationRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} DetailedSCMPostCommitRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} DetailedSCMPreCommitRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} DetailedSCMPreCommitResponse&GT;,&LT; {{ {3}}} EditProjectConfigurationRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} GetConfigurationParametersRequest&GT;,&LT; {http://www.collab.net/teamforge/integratedapp} GetConfigurationParametersResponse&GT;

我浏览代码时发现这个方法在RESTEasy源码中的getEntity方法位于bit.ly/1ed06bS。但是没有任何线索为什么这会引发异常。

我刚刚对正确工作的场景(不会抛出异常)和错误的工作场景(上面提到的场景)的对象值进行了比较,发现对象值没有差异。

我将附加调试日志。第一列是正确工作的场景,第二列是错误的工作场景。 pdf在这里http://www.collab.net/teamforge/integratedapp

你可以帮我找出为什么这条线会抛出异常

1 个答案:

答案 0 :(得分:1)

根据您收到的异常,JAXB希望您的请求xml以下列标记之一开头,而不是。

  1. CreateProjectConfigurationRequest
  2. CreateTemplateRequest
  3. CreateTemplatizedProjectConfigurationRequest
  4. CreateUserRequest
  5. DeleteProjectConfigurationRequest
  6. DetailedSCMPostCommitRequest
  7. DetailedSCMPostCommitResponse
  8. DetailedSCMPreCommitRequest
  9. DetailedSCMPreCommitResponse
  10. EditProjectConfigurationRequest
  11. GetConfigurationParametersRequest
  12. GetConfigurationParametersResponse