具有会话范围bean的Spring和Jersey客户端

时间:2012-03-13 13:53:57

标签: spring jaxb jersey autowired

我想直接从webservice的响应中填充一个spring session-scoped bean。

我获得了正确的反应,但似乎球衣在没有Spring知道的情况下制作了自己的“Usuario”对象实例。

这是验证类的一部分。它有“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;
}

“Usuario”是一个春季会话范围的bean

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

似乎getEntity创建了自己的Usuario实例,因此会话数据无法通过请求获得。我没有在网上找到任何这方面的例子。任何帮助,将不胜感激。

(*抱歉我的英文)

1 个答案:

答案 0 :(得分:1)

为什么你认为泽西岛会问春天“请给我A级的豆子”?泽西岛对春天一无所知。 Jersey将做的是尝试根据响应MIME类型和给定的对象类找到适当的转换器,这将创建此类的新实例并使用响应中的数据填充它。它可以是XML(JAXB)或JSON(杰克逊)或其他东西(自定义转换器)。

在这种情况下你真正需要的是load time weaving的能力(阅读整章7.8)。基本思想是您需要在应用程序服务器启动脚本中声明一个特殊代理程序,它将与所有对象的创建相交,并根据特定应用程序的Spring上下文进行连接。

P.S。当他想要例如连接由ORM(Hibernate)创建的bean时,面临同样的问题。