【问题标题】:Resteasy throws exception at getEntity() methodResteasy 在 getEntity() 方法处抛出异常
【发布时间】:2013-08-01 08:01:09
【问题描述】:

我的服务器代码如下(它使用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> p>

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

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

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

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

【问题讨论】:

    标签: rest resteasy restlet restlet-2.0


    【解决方案1】:

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

    1. 创建项目配置请求
    2. 创建模板请求
    3. CreateTemplatizedProjectConfigurationRequest
    4. 创建用户请求
    5. 删除项目配置请求
    6. 详细的SCMPostCommitRequest
    7. 详细的SCMPostCommitResponse
    8. 详细的 SCMPreCommitRequest
    9. 详细的 SCMPreCommitResponse
    10. EditProjectConfigurationRequest
    11. GetConfigurationParametersRequest
    12. GetConfigurationParametersResponse

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多