Weblogic 10.3 托管服务器共享内存对象
Posted
技术标签:
【中文标题】Weblogic 10.3 托管服务器共享内存对象【英文标题】:Weblogic 10.3 managed server shared memory object(s) 【发布时间】:2011-03-16 16:11:47 【问题描述】:我们使用 Oracle Weblogic 10.3 作为我们的应用服务器。我们有多个模块需要访问托管服务器常见的对象(包含一些 HashMap)。该对象将每天通过其他一些进程填充。由于大量的应用程序和有限的内存,我们不希望在每个应用程序中都有这个副本。我们不能将这些合并到一只耳朵中,因为个人(战争)需要在不同的时间表上更新。
我尝试创建一个可选包并在两个模块中引用它。正在访问的类只是包装对对象单例的调用。但是会为每个应用程序创建一个单独的单例,这违背了目的。
似乎启动类在 8.1 前后的某个时候被弃用,现在在 10.3 中消失了。
有没有办法让这个对象和其他代码“活”在应用程序/模块级别之上,每个 jvm/托管服务器只有一个副本,并且可以被部署到同一托管服务器的所有模块访问?
如果该解决方案也适用于 Tomcat,则加分。
【问题讨论】:
【参考方案1】:似乎启动类在 8.1 前后的某个时候被弃用,现在在 10.3 中消失了。
的确如此。但是它们被Application Life Cycle Events API“替换”了,所以它们还在那里。
有没有办法让这个对象和其他代码“活”在应用程序/模块级别之上,每个 jvm/托管服务器只有一个副本,并且可以被部署到同一托管服务器的所有模块访问?
不完全符合您的要求,但您可以在 EHCache 之类的缓存解决方案之上实现服务,并通过无状态会话 Bean 或 Web 服务(甚至两者)公开该服务。如果这不是一个选项,您能否说明确切的需求?
【讨论】:
我不知道 Weblogic 生命周期事件,但我尝试过 ServletContextListeners。我们正在尝试寻找替代我们目前使用 Tangosol/Coherence 执行的一些功能,这似乎类似于 EHCache。我们有一个哈希图,每天可能需要读取数百万次,且延迟要求低。我们曾希望应用程序可以访问它,而无需在其前面创建 EJB 或类似的东西。但如果这是唯一的方法,我们可能不得不这样做。我更担心性能而不是实施。 @bobtheowl2:Coherence 是一款出色的产品,如果许可成本不是问题,请坚持使用。如果是这样,围绕 EHCache 的解决方案可能是一个不错的选择。关于 SLSB,如果您使用本地接口,开销应该非常低。但是,一如既往地衡量它。以上是关于Weblogic 10.3 托管服务器共享内存对象的主要内容,如果未能解决你的问题,请参考以下文章