Клиент Spring and Jersey с сессионным компонентом - PullRequest
1 голос
/ 13 марта 2012

Я хотел бы заполнить бин весенней сессии в рамках сеанса непосредственно из ответа веб-службы.

Я получаю правильный ответ, но кажется, что Джерси создает собственный экземпляр объекта "Усуарио", но Spring об этом не знает.

Это часть класса проверки. У него автоматическая разводка "Usuario".

Client c = Client.create();
c.addFilter(...);

WebResource resource = c.resource(ws_url);

ClientResponse res = resource.
    type(MediaType.APPLICATION_XML_TYPE)
    .post(ClientResponse.class, req);

if (res.getStatus() == 200) {
    UsuarioAuthResponse u = res.getEntity(UsuarioAuthResponse.class);
    Usuario usuario = u.getDatos().getUsuario();
    return true;
}

"Усуарио" - это боб с весенним сеансом

@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class Usuario implements java.io.Serializable { ... }

Похоже, что getEntity создает свой собственный экземпляр Usuario, поэтому данные сеанса недоступны через запросы. Я не нашел никаких примеров этого в сети. Любая помощь будет оценена.

(* Извините за мой английский)

1 Ответ

1 голос
/ 17 марта 2012

Почему вы думаете, что Джерси спросит у Спринг "пожалуйста, дайте мне боб класса А"? Джерси ничего не знает о весне. Что Джерси сделает, это попытается найти подходящий конвертер на основе типа MIME ответа и данного класса объекта, который создаст новый экземпляр этого класса и заполнит его данными из ответа. Это может быть XML (JAXB) или JSON (Джексон) или что-то еще (пользовательский конвертер).

В данном случае вам действительно нужна способность соткать время загрузки (прочитайте всю главу 7.8). Основная идея заключается в том, что вам необходимо объявить специальный агент в скрипте запуска сервера приложений, который будет пересекать создание всех объектов и выполнять разводку на основе контекста Spring для конкретного приложения.

P.S. Один сталкивается с той же проблемой, когда он хочет, например, подключить бины, созданные ORM (Hibernate).

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