2012-03-13 10 views
1

webserviceの応答から春のセッションスコープBeanを直接入力したいと思います。セッションスコープBeanを使用したSpringとJerseyクライアント

私は適切な応答を得ましたが、ジャージーはそれを認識していない "ウスアリオ"オブジェクトの独自のインスタンスを作成するようです。

これは検証クラスの一部です。それはautowired "Usuario"を持っています。セッションデータが要求からは利用できませんのでgetEntityは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 { ... } 

らしいれます。私はウェブ上でこれの例を見つけられませんでした。どんな助けもありがとう。

(*私の英語のため申し訳ありませんが)

答えて

1

はなぜ「私のクラスAの豆を与えてください」あなたはジャージー春を依頼されることと思いますか?ジャージーは春について何も知らない。 Jerseyが行うことは、応答のMIMEタイプと指定されたオブジェクトクラスに基づいて適切なコンバータを見つけようとすることです。このクラスは、このクラスの新しいインスタンスを作成し、応答からのデータを入力します。それは、XML(JAXB)またはJSON(Jackson)または何か他のもの(カスタムコンバーター)でもかまいません。

この場合、実際に必要なのはload time weavingです(第7.8章全体を読んでください)。基本的な考え方は、すべてのオブジェクトの作成と交差し、特定のアプリケーションのSpringコンテキストに基づいて配線を行う、アプリケーションサーバーの起動スクリプトで特別なエージェントを宣言する必要があるということです。

P.S. 1つは、例えば、ORM(Hibernate)によって作成されたBeanをワイヤリングしたいときに同じ問題に直面します。