1

Java EE と SOAP は初めてです。簡単な Web サービス アプリケーションとそのクライアントを作成しようとしました (環境: NetBeans 7.2.1 IDE、GlassFish Server 3.1、Java 1.6)。

Web サービス コード:

package simplews;

import javax.jws.*;

@WebService(serviceName = "SimpleWebService")
public class SimpleWebService {

    String something = null;

    @WebMethod(operationName = "setSomething")
    @Oneway
    public void setSomething(@WebParam(name = "smth") String smth) {
        something = smth;
    }

    @WebMethod(operationName = "getSomething")
    public String getSomething() {
        return something;
    }

}

クライアント アプリケーション コード:

package simpleclientapp;

import simplews.*;

public class SimpleClientApp {

    public static void main(String[] args) {

        SimpleWebService_Service service = new SimpleWebService_Service();
        SimpleWebService port = service.getSimpleWebServicePort();

        port.setSomething("trololo");
        String smth = port.getSomething();

        System.out.println(smth);
    }
}

残念ながら、クライアント アプリケーションは を出力しましたnull。簡単な調査の結果、サーバー側では、SimpleWebServiceクライアント呼び出しごとに新しいオブジェクトが作成されることに気付きました (ステートレス アプローチのように聞こえます)。

ここで何が問題なのですか?クライアント ポートが呼び出しごとに同じ WS オブジェクトを参照しないのはなぜですか?

4

2 に答える 2

1

Web サービスは本質的にステートレスです。リクエスト間で状態を維持するには、データを永続化する必要があります (ファイル、データベースなど)。

于 2012-12-03T14:06:51.893 に答える
1

そうです、JAX-WS Web サービスはデフォルトでステートレスであり、この前提に違反するものに依存することはできません。このような値を格納するには、別のアプローチに従います。投稿の指示に本当に従いたい場合は、このドキュメントJava TM API for XML Web Services (JAX-WS) Stateful Web Service with JAX-WS RIを読むことができます。

于 2012-12-03T14:08:31.723 に答える