java - JavaでWebサービスを介して複数のセッション要求を維持する

java web-services session jax-rs

Java Webサービスを使用して次のソリューション(画像で説明)を実装したい


ユーザーがウェブサービスを使用して有効な認証情報を要求すると、セッションがサーバーを介して作成され、そのサーバー(要求を受信するサーバー)が他のサーバー、つまりMeta Traderのサーバーとの接続を作成します。

ここで、各ユーザーは、メタトレーダーサーバーとの接続と状態を維持するために異なるセッションを持っています。

注意:
現在、ユーザーがリクエストしたときにセッションを維持していません。代わりに接続オブジェクトを

  @javax.ws.rs.core.Context
  ServletContext servletContext;

  MyApplication application = new MyApplication();
  servletContext.setAttribute("application", application);


ただし、このソリューションは複数のユーザーに自然に対応するものではありません。したがって、複数のクライアントにサービスを提供するという問題を解決する方法を誰かが考えてから、返信してください。

GlassfishとJAX-RS(Jersery 1.1)、JAXBを使用しています
答え
アノテーション@ javax.ws.rs.core.Contextを使用してHttpServletRequestを取得し、Jerseyがデプロイされているコンテナ内でそのセッションを使用するだけです。

以下のコードは、セッションオブジェクトを取得してセッションに値を格納し、後続の呼び出しでそれらを取得するジャージーリソースの簡単な例です。

@Path("/helloworld")
public class HelloWorld {

    @GET
    @Produces("text/plain")
    public String hello(@Context HttpServletRequest req) {

        HttpSession session= req.getSession(true);
        Object foo = session.getAttribute("foo");
        if (foo!=null) {
            System.out.println(foo.toString());
        } else {
            foo = "bar";
            session.setAttribute("foo", "bar");
        }
        return foo.toString();


    }
}


ただし、このようなRESTful APIは使用しないでください。これは、Webアプリケーションではなく、ステートレスなWebサービスとして使用するためのものです。私が例とアドバイスを得た以下の答えをチェックしてください

(ジャージーセキュリティとセッション管理)
https://stackoverflow.com/a/922058
https://stackoverflow.com/a/7752250

(JAX-RSで状態を管理する方法は?)
https://stackoverflow.com/a/36713305

(JAX-RSリソースでServletContextを取得します)
https://stackoverflow.com/a/1814788
関連記事

java - リソースをSDカードにコピーすると、Androidで破損したファイルが表示されます

java - JavaScriptのような構文を自分のJavaメソッドに解析する

java - IllegalArgumentException:オブジェクトの配列をSCHEMA_SOURCEプロパティの値として使用する場合、2つのスキーマが同じtargetNamespaceを共有することはできません

java - Notnoop / java-apnsプッシュ

java - iTextを使用してJSPでPDFファイルの限られた数のページを表示する方法は?

java - サーバー側のJax-rs呼び出しをプレフィックスのないネイティブファイルと混在させる方法は?

java - プリミティブのJavaジェネリックメソッド

java - Stripes Frameworkの会話スコープ

java - AspectJでメソッドを注釈付き引数と一致させる方法

java - 金額をDoubleとして格納しますが、BigDecimalを使用して値を計算します