2012-03-13 137 views
1

我想直接從web服務的響應中填充Spring會話範圍的bean。Spring會話和Jersey客戶端會話範圍的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

爲什麼你認爲澤西會問春「請給我A類的豆」?澤西對春天一無所知。澤西會做的是嘗試根據響應MIME類型和給定的對象類來找到合適的轉換器,這將創建此類的新實例並使用來自響應的數據填充它。它可以是XML(JAXB)或JSON(Jackson)或其他(自定義轉換器)。

你在這種情況下實際需要的是load time weaving(閱讀整個第7.8章)的能力。基本思想是你需要在你的應用程序服務器啓動腳本中聲明一個特殊的代理,它將與創建所有對象相交叉,並根據特定應用程序的Spring上下文進行接線。

P.S.當他想要連線由ORM(Hibernate)創建的bean時,就會面臨同樣的問題。