在Oracle WebLogic Server中定位外部服务器的常见做法是什么?

时间:2010-07-14 12:40:53

标签: java weblogic middleware

我们正在努力想出一些简单而直接的模型,用于在WebLogic中定位JMS资源(我知道这很有可能)。队列和主题可以轻松而直观地映射到在WebLogic服务器上运行的JMS服务器,但是外部服务器及其中的资源似乎有点棘手。

在WLS 10.0和10.3中,外部服务器首先未在JMS服务器旁定义,而是作为JMS模块的成员定义。其次,默认情况下,它们被定位到它们所定义的JMS模块的目标,即WLS集群或WLS服务器,而不像通过子部署针对JMS服务器的“非外部”资源。

但是,通过高级定位,还可以在JMS服务器上定位外部服务器。这导致模型相对于外来/“非外来”JMS资源更加对称。

Advanced Targeting http://dexter.xebialabs.com/Media/foreign_server_advanced_targeting.png

所以,问题是:

  1. 除了历史意外之外还有任何理由为什么外国资源和“非外国”资源定位是如此不同(默认情况下,WLS群集或WLS服务器上的外部资源与JMS服务器上的非外部资源相比)?
  2. 是否有针对外国和非外国资源的常见或最佳做法?
  3. 有没有理由不想通过子部署在JMS服务器上定位外部服务器?
  4. 提前致谢!

    Andrew Phillips

2 个答案:

答案 0 :(得分:3)

1)外部JMS服务器曾经被定义为独立组件,类似于连接器,消息传递桥等。这些组件(历史上)直接针对应用程序服务器或集群,而不是像JMS服务器那样的中间组件。 / p>

在更高版本中,Oracle尝试在通用保护伞下合并内部和外部JMS。但是,目标选项保持不同。为了提供JMS部分的灵活性,引入了子部署。为了保持一致性,Oracle似乎已将子部署扩展到外部服务器,使事情变得非常复杂/混乱。

我不会称之为事故,因为较新的版本符合此设置:)

2)对于跨群集部署的应用程序,您需要为整个群集定义一个JMS模块。连接工厂的多个定义将使JMS负载平衡发生偏差。

我们的最佳实践集中在为每个集群创建单个JMS模块的标准(如果未集群,则为app服务器),然后在同一模块中创建外部服务器和weblogic JMS队列/连接工厂。此外,为子部署和JMS模块提供良好的命名约定还有很长的路要走。

3)一旦运行> 16个并发MDB,外部服务器(尤其是IBM MQ)可能会遇到很多复杂问题。我们避开了外国服务器 - > JMS服务器 - >托管服务器减少额外的抽象/复杂层,以保持配置更简单。您还可以降低外部服务器异常被隐藏的JMS服务器异常屏蔽的风险(我没有任何证据)。

队友曾建议外国服务器 - >应用程序服务器设置更高效,但我们让甲骨文的A团队确认这只是一个逻辑/美学变化,并不应该真正重要。

希望有所帮助!

答案 1 :(得分:2)

虽然我不是这个领域的专家,但我对这个主题的理解是这样的: 基本原则是将“什么”和“如何”问题分离为jms-modules和jms-servers。 JMS模块管理消息和目的地,jms服务器管理这些消息的存储和传递方式。

说到JMS外部服务器,可能会变得模糊不清。资源只是一个目的地,理论上“如何”是外国服务器的关注点。