поддерживать несколько запросов сеанса через веб-сервисы в Java - PullRequest
1 голос
/ 27 августа 2011

Я хочу реализовать следующее решение (описанное на рисунке) с использованием веб-служб Java

enter image description here Когда пользователь запрашивает действительные учетные данные, используя веб-службы, сеанс создается на сервере, и этот сервер (который получает запрос) создает соединение с другим сервером, т.е. сервером Meta Trader.

Здесь у каждого пользователя свой сеанс для поддержания соединения и состояние с сервером метадрейдера.

Примечание: В настоящее время я не поддерживаю никакой сеанс, когда пользовательский запрос вместо этого я сохраняю объект подключения в

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

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

Но это решение, естественно, не обслуживает нескольких пользователей. поэтому, пожалуйста, у любого есть идея, как решить проблему обслуживания нескольких клиентов, тогда, пожалуйста, ответьте.

Я использую Glassfish и JAX-RS (Jersery 1.1), JAXB

1 Ответ

1 голос
/ 09 января 2018

Просто используйте аннотацию @ javax.ws.rs.core.Context, чтобы получить HttpServletRequest и использовать его сеанс в контейнере, в котором развернут Джерси.

Приведенный ниже код является простым примером ресурса джерси, который получает объект сеанса, сохраняет значения в сеансе и извлекает их при последующих вызовах.

@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, как это. Он предназначен для использования в качестве веб-службы без сохранения состояния, а не веб-приложения. Проверьте следующие ответы, которые я получил пример и совет от

(безопасность джерси и управление сеансами)
https://stackoverflow.com/a/922058
https://stackoverflow.com/a/7752250

(Как управлять состоянием в JAX-RS?)
https://stackoverflow.com/a/36713305

(Получить ServletContext в ресурсе JAX-RS)
https://stackoverflow.com/a/1814788

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...