当前位置: 首页 > 知识库问答 >
问题:

将@sessionscoped CDI Bean注入@stateless EJB

仰雅昶
2023-03-14
@Stateless
@LocalBean
public class StatelessSessionBean {

    @Inject    
    Instance<SessionData> sessionData;    

    public String testMethod() {
        SessionData bean = sessionData.get();
        String result = "Retrieved bean " + bean + " with UUID "+ bean.uuid + ". Created on: " + new SimpleDateFormat("dd.MM.yyyy HH:mm").format(bean.creationDate);
        return result;
    }
}

CDI bean:

@SessionScoped
public class SessionData implements Serializable {      

    String uuid;
    Date creationDate;

    public SessionData() {
        uuid = UUID.randomUUID().toString();
        creationDate = new Date();
    }    
}

当我现在访问无状态EJB(例如从servlet访问)时,我希望testMethod使用与调用方的HttpSession相关联的CDI bean。因此,如果来自不同Browser/HTTP会话的两个客户机访问Servlet,它们都将得到不同的结果字符串。

我是否需要CDI提供程序而不是实例?如果需要,我如何为给定会话生成正确的bean实例?我想过也许可以使用BeanManager并搜索SessionData的实例,但我不知道如何才能得到正确的实例。

共有1个答案

韶宏邈
2023-03-14

好吧,现在我觉得有点傻:-(

我绕过了代理提供的上下文bean,不使用getter/setters进行成员访问。相反,我直接使用了package-private字段,这阻止了代理提供正确的实例。

当我切换到getters/setters时,它就像预期的那样开始工作了。

 类似资料:
  • 问题内容: 是否可以将Spring bean注入RestEasy @Path类中?我设法通过Jersey并使用@InjectParam注释完成了此操作,但是由于某些其他原因,我需要切换到RestEasy,而且我似乎找不到解决方法(尝试了javax.inject.Inject,但没有)。 编辑 此解决方案有效:http : //www.mkyong.com/webservices/jax-rs/re

  • 情况:多个相同的Kafka数据源被平面映射到元组中,以便以后进行联合、缩减、保存等等。 我需要知道每个平面映射数据包来自哪个原始数据源,以标记元组中的标签。我不希望每个数据源都有单独的FlatMapFunction,因为可能有数百个。 理想情况下,我能够将一些值传递到flatmap函数中,以添加到结果元组中。 可能的还有其他的方法来实现这一点吗?

  • 我一直在思考编译时评估注释值的Java特性,它似乎真的很难外部化注释值。 但是,我不确定这是否真的是不可能的,所以我非常感谢对此的任何建议或明确的答案。 更重要的是,我试图将控制Spring中预定方法调用之间延迟的注释值外部化,例如: 假设位于类路径上,并且包含属性键及其相应的长整型值。 现在,这段代码有明显的编译错误,因为我们试图将值赋给变量,但这是强制性的,因为我们不能将变量赋给注释值,除非它

  • 问题内容: 我试图将EJB注入到Spring(3.1.2)服务中(都在不同的 WAR中)两者都非常简单(删除了方法以简化示例): EJB: Service: 事情很简单,但我尝试过: 它没有用。然后我还尝试了: and 但都没有奏效。 我设法使用以下方法注入了EJB: 在我的spring配置和服务中: 但我真的不喜欢这种解决方案。我希望在某些注释中包含我的JNDI路径,例如: 问题答案: 我们找到

  • 问题内容: 我正在尝试将jQuery注入我的Puppeteer页面,因为这并不适合我: 结果是它大多超时。有没有人有办法解决吗? 问题答案: 我曾经注入文件。 page.addScriptTag-文档 使用示例

  • 我在用Spring 奇怪的是:

  • 有没有办法将@Named bean注入Singleton? 这是需要注入的类 bean用于视图实用程序(由Forge生成) 问题是我需要从@Startup@Singleton访问 但它总是失败,并抱怨说游戏会话不是一个实体 有没有办法将命名的有状态bean注入Singleton?如果没有,有什么解决办法吗? 谢谢