JMS受管理的对象是那些包含JMS配置信息的对象,这些配置信息由JMS管理员创建然后由客户端使用。它们实际管理企业中的JMS应用。

尽管受管理对象的接口不显式的依赖JNDI,但JMS为了JMS客户端通过JNDI查找的方便而设置了这个方便性。

管理员可以将受管理对象放到命名空间的任何位置。JMS没有定义命名策略。

区分JMS和管理提供了几个好处:

• 它对客户端隐藏了提供商特有的配置信息。

• 他将JMS可管理的信息抽象成容易被通用管理控制台组织和管理的java对象。

• 由于有JNDI提供商提供所有流行的命名服务,那么这意味着JMS提供商可以转发一个受管理对象的实现,这些对象可以运行在任何地方。

受管理对象不能持有任何远程资源。它的lookup不应当使用远程资源,除了有JNDI自己使用的资源以外。

客户端应当把受管理的对象看作是本地java对象。查找它们不应有任何隐藏边际影响或使用大量的本地资源。

JMS定义了两个手管理对象,Destination和ConnectionFactory。

期望JMS提供商为管理员提供创建和在JNDI命名空间中配置受管理对象的工具。JMS提供商提供的手管理对象的实现应当是既javax.naming.Referencealbe又java.io.Serializable的,以便它们能够被存储在所有的JNDI命名上下文中。另外,建议这些实现遵循JavaBean的设计模式。

4.2.1 Destination

JMS没有定义标准的地址语法。尽管考虑到了,但在现存的地址语义有很大差别的企业消息产品间寻求一个单一的语法是不可能的。因此,JMS定义了Destination对象来封装提供商特有的地址作为替代方案。

由于Destination是一个受管理对象,因此它可以包含除了地址外的提供商特有的配置信息。

JMS也支持客户端使用提供商特有的地址名称。参加节4.4.4"创建Destination对象"了解更详细的信息。

Destination支持并发使用。

4.2.2 ConnectionFactory

ConnectionFactory封装了一系列连接配置参数,这些参数由管理员定义。客户端使用它来创建和JMS提供商的连接。

ConnectionFactory对象支持并发使用。