加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring – 如何通过ServletContextListener的上下文查找来访问E

发布时间:2020-12-15 01:29:07 所属栏目:大数据 来源:网络整理
导读:需要从servlet上下文侦听器的contextInitialized()方法调用EJB服务.应用程序在JBOSS上运行,虽然上下文监听器工作正常,但我无法通过JNDI查找来访问EJB bean. 因为JBOSS中的Web部署发生在EJB bean与JNDI树绑定之前.如何克服这个?有没有办法尽早配置JNDI绑定,

需要从servlet上下文侦听器的contextInitialized()方法调用EJB服务.应用程序在JBOSS上运行,虽然上下文监听器工作正常,但我无法通过JNDI查找来访问EJB bean.

因为JBOSS中的Web部署发生在EJB bean与JNDI树绑定之前.如何克服这个?有没有办法尽早配置JNDI绑定,或者在EJB完全部署后再启动Web部署?

我在contextInitialized()方法的服务调用之前放了Thread.sleep(),它在我的JBoss5.1.0 GA中工作正常,并且在同一版本的其他机器JBoss中也不行.

应用程序需要这个,因为我们希望从数据库加载一些主数据并使其在Web层中可用(缓存类型). JBOSS startupmbean适合这个要求吗?如果是,我如何将数据提供给Web层?

如果有其他方法,请建议.

最佳答案
>在contextInitialized()中轮询EJB.因此,不要只是睡一段时间,而是尝试连接到EJB.如果失败,请睡眠并重试,直到EJB可用.在这种情况下,上下文初始化被阻止.
>将缓存实现为惰性缓存:在第一次查询期间填充缓存(并使用相同的轮询过程:连接到EJB,重试直到它变为可用).在这种情况下,缓存块.
>您可以将部署拆分为两部分:一部分用于EJB,一部分用于Web应用程序.然后部署第一个,并延迟部署Web应用程序,直到绑定EJB(通过观察日志文件或尝试从命令行应用程序绑定到EJB)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读