2013-03-08 4 views
0

Je ne connais pas encore les services Web. J'ai développé un exemple de service Web comme indiqué ci-dessous.Axis2 Web Service - Versioing

J'essaie d'ajouter un nouveau champ dans les données, disons boolean sucess;. (Juste pour apprendre la rétrocompatibilité)

Lorsque j'ajoute le nouveau champ, comme je m'attendais, l'appel de service échoue à partir du talon du client.

Comment gérer différentes versions de services. quelles sont toutes les options que j'ai?

Je suis passé par de nombreux articles sur le net (malheureusement il n'y a pas d'exemples. :(). Et peu d'options sont

1) opération d'écriture différente dans la classe avec la nouvelle sortie. C'est ce que j'ai compris.

2) Avoir un versionnement pour le service. Comme les services/version1/SumAndMult, services/version2/SumAndMult

Comment puis-je obtenir la deuxième option? Quelle est l'idée derrière cette option? Pour conserver la copie des classes de service?

Si je n'ai qu'une classe de service sur mon serveur, comment puis-je exposer plusieurs wsdls?

De même, quel est le meilleur moyen de maintenir la compatibilité ascendante?

public Data getSumAndMultData(int[] input){ 
    Data result = new Data(); 
    int sum = 0; 
    int mult = 1; 

    for(int i = 0; i < input.length; i++){ 
     sum += input[i]; 
     mult *= input[i]; 
    } 
    result.setMult(mult); 
    result.setSum(sum); 
    return result; 
} 
class Data{ 
    int sum; 
    int mult; 
    public int getSum() { 
     return sum; 
    } 
    public void setSum(int sum) { 
     this.sum = sum; 
    } 

    public int getMult() { 
     return mult; 
    } 
    public void setMult(int mult) { 
     this.mult = mult; 
    } 
} 

Comme

Répondre

1

Cas n ° 2 vraiment signifie simplement d'ajouter un nouveau service Web avec son propre WSDL. Vous commencerez probablement avec l'ancien fichier WSDL, apportez les modifications nécessaires, puis publiez-le sous un autre nom de service afin qu'il soit accessible via une URL différente. En utilisant Axis2, vous pouvez empaqueter plus d'un service dans le même AAR. Dans services.xml, vous allez définir un <servicegroup> avec des sections <service> pour chaque service. Tous les services utiliseront le même classloader et auront accès au même ensemble de variables statiques.

+0

Merci beaucoup pour votre réponse. Je suis conscient de l'ajout de plusieurs services dans le service.xml. Vous avez mentionné que "ajouter un nouveau service Web avec son propre WSDL". Dois-je créer une nouvelle classe de service côté serveur avec le nouvel objet Response? – Jack

+0

Oui, vous aurez une classe de service différente pour chaque service. – Kenster

Questions connexes