2013-07-31 1 views
2

Je développe un plugin pour nexus oss. Mon application crée une réponse d'appel au repos (à une demande du serveur). Mais lorsque le serveur reçoit, il jette l'erreur comme suitUri vide dans la réponse de repos

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>

Je suppose que la raison derrière cette exception est que la réponse ne correspond pas à l'attendre parce que le uri (ce qui est juste ma conjecture, si elle est mal s'il vous plaît corrigez-moi), c'est l'espace de noms en réponse n'est pas défini.

snip du code dans mon plugin est comme suit


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

Pourquoi l'espace de nom ne sont pas ramassés lors de la création de réponse? Même corriger moi si la véritable raison de l'exception n'est pas l'uri vide. Si oui, quelle est la véritable raison de cette exception? S'il vous plaît aider.

Répondre

1

Selon le message d'erreur, le document XML transmis à JAXB est. Il semble que ce XML est créé par autre chose que JAXB (je suspecte XStream).

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

Vos applications de JAXB attendez un document XML comme ce qui suit:

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

Si vous avez besoin d'interagir avec le code XML suivant:

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

Ensuite, vous pouvez changer votre correspondance doit être:

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

Merci de répondre.Oui exactement. Je l'obtiens sous la forme que vous avez suggérée. Que dois-je faire pour obtenir la forme attendue. J'utilise l'application nexus oss http://www.sonatype.org/nexus/. Donc, cela doit utiliser xstream. Il n'y a donc aucun moyen de donner xml dans le formulaire attendu même si l'application utilise xstream? –

+0

Oui J'ai fait une recherche pour savoir si xstream est utilisé dans l'application nexus oss https://github.com/sonatype/nexus-oss/search?q=xstream&ref=cmdform. Oui, comme vous l'avez suggéré, ils utilisent Xstream. Que puis-je faire pour donner la forme attendue. –

+0

Le plugin nexus qui est supposé prendre en charge cette communication de repos est https://github.com/sonatype/nexus-oss/blob/5ac6c0e9b5725e9a07fff0f847efed71bd930952/plugins/restlet1x/pom.xml. Je ne sais pas comment trouver s'ils utilisent jaxb ou xstream. –

Questions connexes