すべてのレイヤ(つまりWebレイヤ、EJBレイヤ)に@Inject @Current User
を使用して現在のユーザを注入したいとします。これを行うために、私は次のCDIプロデューサーの方法があります。EJBステートレスセッションBeanからCDIセッションスコーププロデューサメソッドを呼び出す
@Stateless
public class SomeBackendService {
@Inject @Current
private User user;
}
私の質問を::次のように
@Named
@SessionScoped
public class UserController {
@Resource SessionContext sessionContext;
@EJB UserDao userDao;
@Produces @Current
public User getCurrentUser() {
String username = sessionContext.getCallerPrincipal().getName();
User user = userDao.findByUsername(username);
}
}
@Qualifier
@Target({TYPE, METHOD, PARAMETER, FIELD})
@Retention(RUNTIME)
public @interface Current{}
は今、私はEJBステートレスセッションBeanに現在のユーザーを注入したいですステートレスセッションBeanの依存関係は通常、作成時に一度注入され、Beanはプールされて別のセッションで使用される可能性があるため、現在のユーザーオブジェクトはセッションの変更後に常に再注入されますか?
は完全にプロキシを忘れてしまった。このような状況を説明する質問を投稿しました。私はそれを試して、期待どおりに動作します。ありがとう。 – Theo