0

私はWebサービスが初めてです。以下に示すように、サンプル Web サービスを開発しました。

データに新しいフィールドを追加しようとしています。ブール値の成功と言ってください。. (下位互換性を知るためだけに)

新しいフィールドを追加すると、予想どおり、クライアント スタブからのサービス呼び出しが失敗します。

異なるバージョンのサービスを維持するにはどうすればよいですか。私が持っているすべてのオプションは何ですか?

私はネット上で多くの記事を調べてきました (残念ながら、例はありません。:(). そして、いくつかのオプションは

1) 新しい出力を使用して、クラスに異なる操作を記述します。これはわかりました。

2) サービスのバージョン管理を行います。services/ version1 /SumAndMult、services/ version2 /SumAndMultと同様

2番目のオプションを達成するにはどうすればよいですか? このオプションの背後にあるアイデアは何ですか? サービスクラスのコピーを維持するには?

サーバーにサービス クラスが 1 つしかない場合、複数の wsdl を公開するにはどうすればよいですか?

また、下位互換性を維持する最善の方法は何ですか?

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;
    }
}

として

4

1 に答える 1

1

ケース #2 は、独自の WSDL を持つ新しい Web サービスを追加することを意味します。古い W​​SDL から始めて、必要な変更を加えてから、別の URL からアクセスできるように、別のサービス名で公開することになるでしょう。

Axis2 を使用すると、複数のサービスを同じ AAR にパッケージ化できます。services.xml 内で、各サービス<servicegroup><service>セクションで を定義します。すべてのサービスが同じクラスローダを使用し、同じ静的変数セットにアクセスできます。

于 2013-03-10T17:29:41.207 に答える