0

使用: EJB 3.1、JBoss AS 7、RestEasy。

セッションのユーザー情報を保存するために使用したいセッションスコープのBeanがあります。

import java.io.Serializable;
import javax.enterprise.context.SessionScoped
@SessionScoped
public class LoggedInUser implements Serializable {
    private String id;
    ...
}

ユーザーが Web アプリケーションを開くと、ユーザー ID を含むヘッダー情報 (アプリケーションは Webseal の背後で実行されます) を抽出するフィルターが適用されます。ログインしたユーザー オブジェクト (上記の LoggedInUser を参照) を作成する必要があります (ldap を呼び出した後)。その後、この LoggedInUser オブジェクトを別の @Stateless Bean に注入したいのですが、LoggedInUser は常に「空」です (メンバーは null です)。

サンプルの注入:

@Path("/country")
@Stateless
public class CountryController extends AbstractController {
@Inject
private Logger LOGGER;
@Inject
private LoggedInUser loggedInUser;
//@Inject dont work too..
//private Instance<LoggedInUser> loggedInstance

私は何が間違っていますか?

4

1 に答える 1

0

コメントと質問から判断すると、EJB の概念に関するヘルプが必要です。

@SessionScoped Bean は、セッションごとに 1 つのインスタンスを持つ Bean です。1 つのセッション中にそのような Bean を持つすべての @Inject は、同じオブジェクトを参照します。ただし、これで終わりです。Bean にそのセッションに固有の情報を含めたい場合は、通常の Java クラスで行うように、setter またはその他のメソッドを使用して、自分でそれを配置する必要があります。

于 2014-09-01T09:40:02.057 に答える