2013-07-31 3 views
2

나는 넥서스 OSS에 대한 플러그인을 개발하고 있습니다. 내 애플 리케이션은 (서버에서 요청에 대한) 나머지 호출 응답을 만듭니다. 서버가 그것을받을 때휴식 응답에 빈 uri

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 (잘못의 경우이, 그냥 내 생각이다 제발 저를 수정하십시오), 즉 응답의 네임 스페이스가 설정되어 있지 않습니다.


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

왜 이름 공간이 응답을 만드는 동안 포착되지 않고 다음과 같이 내 플러그인의 코드의

싹둑는?

심지어 예외의 실제 이유가 빈 URI가 아니라면 올바르게 수정하십시오. 그렇다면이 예외의 진정한 이유는 무엇입니까? 도와주세요.

답변

1

오류 메시지에 따라 JAXB에 전달되는 XML 문서는 다음과 같습니다. 이 XML은 JAXB가 아닌 다른 XML에 의해 생성되는 것처럼 보입니다 (저는 XStream이 의심 스럽습니다).

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

다음과 같은 XML과 상호 작용해야하는 경우 :

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

그럼 당신은 변경할 수 있습니다

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

귀하의 JAXB 매핑

는 다음과 같은 XML 문서를 기대하고있다 귀하의 매핑 :

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

응답 해 주셔서 감사합니다. 예. 나는 당신이 제안한 형태로 그것을 얻고 있습니다. 예상되는 양식을 얻으려면 어떻게해야합니까? 나는 넥서스의 oss 응용 프로그램 http://www.sonatype.org/nexus/를 사용하고 있습니다. 그래서 그것은 xstream을 사용해야합니다. 그래서 응용 프로그램이 xstream을 사용한다고해도 xml을 예상 된 형식으로 제공 할 수있는 방법이 없습니까? –

+0

예 xstream이 nexus oss 앱 https://github.com/sonatype/nexus-oss/search?q=xstream&ref=cmdform에 사용되었는지 알기위한 검색을 수행했습니다. 네, 그들이 xstream을 사용하고 있다고 제안했습니다. 예상되는 양식을 제공하기 위해 무엇을 할 수 있습니까? –

+0

이 휴식 의사 소통을 담당하고있는 넥서스 플러그인은 https://github.com/sonatype/nexus-oss/blob/5ac6c0e9b5725e9a07fff0f847efed71bd930952/plugins/restlet1x/pom.xml입니다. 그들이 jaxb 또는 xstream을 사용하는지 확인하는 방법을 모르겠습니다. –