2012-04-11 40 views
5

JBoss SeamからCDI(JEE6)にアプリケーションを移行しているので、@Inや@Outのようなアノテーションを変更しています。 @Inの注釈アノテーションをJBoss SeamからCDI(JEE6)に変更する

@Name("comprobantes")//context name 
... 
@In(create=false,value="autenticadoPOJO",required=false) 
    private UsuarioPOJO autenticadoPOJO; 

私たちは、CDIから@Injectを使用することができますが、コンテキストの名前を設定する方法について

:が、我々は特定のパターンでanotationsを交換する方法を見つけるためにしようといくつかのトラブルを持っていますこの場合の変数? @Outの注釈

@Out(scope = ScopeType.SESSION, value = "autenticadoPOJO", required = false) 

については

我々は前またはこの注釈を追加した後、範囲を設定することができますどのように、私はいくつかのブログを読んでいると、彼らは私がCDIに@Producesを使用することができると言いますか?

ご迷惑をおかけして申し訳ありません。

答えて

2

http://docs.jboss.org/weld/reference/1.0.0/en-US/html/producermethods.html

8.1。プロデューサメソッドのスコープ

プロデューサメソッドのスコープはデフォルトで@Dependentであるため、コンテナがこのフィールドまたは同じプロデューサメソッドに解決する他のフィールドを注入するたびに呼び出されます。したがって、各ユーザーセッションごとにPaymentStrategyオブジェクトのインスタンスが複数存在する可能性があります。

この動作を変更するには、メソッドに@SessionScopedアノテーションを追加します。 @Outのための1互換性:私は怖い

@Produces @Preferred @SessionScoped 
public PaymentStrategy getPaymentStrategy() { 
    ... 
} 
+0

役に立った – LightGuard

3

は、1のようなものはありません。

技術的には、Seam 2の@Outは、すべてのメソッド呼び出しに対してインターセプタによって実現されました。これはかなりのパフォーマンスボトルネックとなりました。

CDIではほとんどのマネージドBeanがプロキシされているため、Seam 2の方法でアウトアウトを実装することは技術的に不可能です。

あなたは何ができるか(まあ、あなたが実際にが行うに持っているもの)@Outのすべての使用を通過していると、いくつかの@Producerロジックで個別に交換してください。ここでthis official exampleを見てください。 Seam 2では、認証されたユーザーをセッションスコープに流出させてしまいます.CDIでは、ほとんどプロデューサメソッドが(ほとんど)同じことをします。あなたがあることをそこhttps://github.com/seam/migration、そのレポのためのwikiやその他のファイルを見つけることができれば、さらに質問をすること自由に感じ、あなたに良いスタートを与える必要があります:)

関連する問題