我的服务器代码如下(它使用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
你可以帮我找出为什么这条线会抛出异常
答案 0 :(得分:1)
根据您收到的异常,JAXB希望您的请求xml以下列标记之一开头,而不是。