2012-04-11 1 views
3

j'ai un service web qui fonctionne comme ceci:utilisant JAXB annotée classe pour un service de JAXWS

@WebService(serviceName = "TempService") 
public class TempService { 
    @WebMethod(operationName = "addBarkod") 
    public Boolean addBarkod(@WebParam(name = "barkod") Barkod barkod) { 
    System.out.println(barkod.getBarkodNo()); 
    } 
} 

et la classe Barkod comme:

public class Barkod { 
    private String barkodNo; 
// there are constructors and getters, setters etc. nothing fancy // 
} 

avec cette structure mon service web peut être appelé avec soapUI sans problème. le problème est quand je veux annoter ma classe de modèle avec annotations JAXB comme:

@XmlType(name="barkod") 
@XmlRootElement(name="barkod") 
@XmlAccessorType(XmlAccessType.FIELD) 

je peux déployer ce GlassFish 3.1 et soapUI génère nouvelle demande client avec la nouvelle structure, mais quand il vient de le faire « barkod.getBarkodNo () " à l'opération addBarkod, il lance une exception NullPointerException. J'ai l'impression que le XML que j'ai envoyé au service Web ne crée pas un objet Barkod approprié. Est-ce que je dois faire avec la classe de service de Web ou quelque chose?

+0

Pouvez-vous publier l'exception que vous obtenez? –

+0

Je viens de le coller: https://gist.github.com/2359811 – zekzekus

+0

Qu'est-ce que null à 'TempService.java: 54' pour provoquer le NPE? –

Répondre

0

Je pense qu'un problème est dû au fait que soapUI génère la requête automatiquement à partir de mon WSDL. Lorsque j'annote ma classe avec @XmlRootElement sans la clause namespace, elle ne mappe pas le XML donné à l'objet may. J'attribue @XmlRootElemen (namespace = "") et mon problème disparaît.

merci pour les réponses de toute façon.

Questions connexes