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”)。预期的元素是 <{ http://www.collab.net/teamforge/integratedapp }CreateProjectConfigurationRequest>,<{ http://www.collab.net/teamforge/integratedapp }CreateTemplateRequest>,<{ http://www.collab .net/teamforge/integratedapp }CreateTemplatizedProjectConfigurationRequest>,<{ http://www.collab.net/teamforge/integratedapp }CreateUserRequest>,<{ http://www.collab.net/teamforge/integratedapp }DeleteProjectConfigurationRequest>,<{ http://www.collab.net/teamforge/integratedapp }DetailedSCMPostCommitRequest>,<{http://www.collab.net/teamforge/integratedapp }DetailedSCMPreCommitRequest>,<{ http://www.collab.net/teamforge/integratedapp }DetailedSCMPreCommitResponse>,<{ http://www.collab.net/teamforge/ Integratedapp }EditProjectConfigurationRequest>,<{ http://www.collab.net/teamforge/integratedapp }GetConfigurationParametersRequest>,<{ http://www.collab.net/teamforge/integratedapp }GetConfigurationParametersResponse>

我浏览了代码,发现这个方法 getEntity 方法在 RESTEasy 源代码中位于 bit.ly/1ed06bS。但是不知道为什么会抛出异常。

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

我将附上调试日志。第一列是正确的工作场景,第二列是错误的工作场景。pdf在这里http://www.scribd.com/doc/157390722/Debug

你能帮我找出这条线抛出异常的原因吗

4

1 回答 1

1

根据您收到的异常,JAXB 期望您的请求 xml 以以下标签之一开头,但事实并非如此。

  1. 创建项目配置请求
  2. 创建模板请求
  3. 创建模板化项目配置请求
  4. 创建用户请求
  5. 删除项目配置请求
  6. 详细的 SCMPostCommitRequest
  7. 详细的 SCMPostCommitResponse
  8. 详细的 SCMPreCommitRequest
  9. 详细的 SCMPreCommitResponse
  10. 编辑项目配置请求
  11. 获取配置参数请求
  12. 获取配置参数响应
于 2013-08-01T14:57:03.223 回答