java - EJB3 注入(inject)在 Wicket AuthenticateWebSession 中为 Null

标签 java session ejb wicket

我在一个应用程序中使用 Wicket + EJB3,我遇到了一个问题,但我找不到任何相关的主题,所以这里是:

我正在使用 Wicket 身份验证,并且需要在覆盖方法 authenticate(...) 中使用来自 EJB 的方法。

我可以在任何 wicket 页面中使用这个 EJB,但是当涉及到 WebSession 时,它保持为 Null,注入(inject)无法正常工作。

我的 WicketSession 类看起来像这样:

public class WicketSession extends AuthenticatedWebSession {

   @EJB(name = "UserService")
   private UserService userService;

   private User user = null;

   public WicketSession(Request request) {
    super(request);
   }

   @Override
   public boolean authenticate(final String login, final String password) {

      user = userService.findByLoginPwd(login, password);

      return user != null;;
   }

   public User getUser() {
      return user;
   }

   public void setUser(User user) {
      this.user = user;
   }
}

还有我的 EJB3:

@Remote
public interface UserService {
    public User findByLoginPwd(final String login, final String pwd);
}

@Stateless
public class UserServiceImpl implements UserService {

   public User findByLoginPwd(final String login, final String pwd) {
       [...]
   }
}

Wicket 的 Web 部分打包在 war 中,EJB 的业务部分打包在 jar 中,然后我将它部署在 JOnAS 服务器上。

任何帮助将不胜感激 =)

尼古拉斯

最佳答案

我很确定注入(inject)与 IComponentInstantiationListener 一起工作(至少 Spring 版本是这样工作的)。 更新:确实如此,参见this document .

但是, session 不是组件,因此需要一种不同的机制。也许有一种方法可以在 Application.newSession() 中连接您的 Session方法?您必须查看 JavaEEComponentInjector 的实现,并在创建 session 时复制它的作用。

关于java - EJB3 注入(inject)在 Wicket AuthenticateWebSession 中为 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102807/

相关文章:

asp.net - ASP.Net 中的 Session.Abandon() 和 Session.Clear() 有什么区别?

java - 多个应用程序在 TomEE 中共享公共(public) EJB JAR

ejb - 微服务架构模式是否类似于 EJB 1.0?

java - 连接数量比它可能多

java - 如何使用 Apache Camel 正确聚合文件内容?

java - Spring Security 注销和最大 session 数

java - Axis2 session 管理

java - 检测 iOS Cordova 4.0 应用程序中的内存泄漏

java - HTTP 响应中缺少数据

java - 如何使用 twitter4j 处理速率限制?