问. 什么是 Java API for XML Registries (JAXR)?
答. Java API for XML Registries(JAXR)提供一个统一的、标准的 Java API,用于访问不同类型的 XML Registries。XML 注册项是构建、部署和发现 Web 服务的基础设施。
问. JAXR API 与其他 XML API 之间有何关系?
答. JAXR 提供者的实现可以使用 Jav API for XML-Based RPC (JAX-RPC) 在 JAXR 提供者与注册项提供者之间的通信,此注册项提供者输出类似 RPC 的基于 SOAP 的接口(例如, UDDI )。
JAXR 提供者的实现可能会使用 Java API for XML Messaging(JAXM)在 JAXR 提供者与注册项提供者之间进行通信,该注册项提供者输出基于 XML Messaging 的接口(如 ebXML TRP )。
Java API for XML Processing (JAXP) 与 Java Architecture for XML Binding (JAXB)会被 JAXR 提供者和 JAXR 客户端使用,用于处理向 Registry 提交或从 Registry 中获取的 XML 内容。
问. 为什么对 Java Naming and Directory Interface(JNDI)需要有一个新的 JAXR API ?
答. JNDI API 采用与 JAXR API 完全不同的需求集合进行设计。这两种抽象的 API 都遵循现有的规范。然而,抽象目录服务与用于发布和发现 Web 服务的 XML Registries 有很大的不同。JAXR API 需要更丰富的元数据能力以及查询能力来进行分类和关联。
问. 通过对 JAXR API 增加功能来增强 JNDI API 会不会更好?
答. 这个选择被考虑过。要满足 XML Registries 的额外需求,需要细化信息模型。为了解决目录服务的需求,在 JNDI API 设计中强制使用了一个现有的信息模型。扩展 JNDI API 将限制 JAXR API ,并需要考虑实现 JNDI API的后向兼容性。
问. JAXR 信息模型中的 Association 的作用是什么?在所有 API 中都没有用到过它。
答. Association 用于彼此关联两个 RegistryObjects 。在注册项中的两个对象之间可以定义一个 Association,并使用 GenericLifeCycleManager 的 saveObjects 方法进行提交。
问. JAXR 信息模型中的 Classification 的作用是什么?在所有 API 中都没有用到过它。
答. Classification 用于对 RegistryObject 进行分类。可根据 RegistryObject 定义一个 Classification,并使用 GenericLifeCycleManager 的 saveObjects 方法提交该分类。
问. 为何 JAXR 是一个抽象 API,并且没有像 UDDI 或 ebXML 那样针对特定的注册项。
答. 抽象 JAXR API 可以让开发人员编写注册项客户端程序,这些程序是跨越多个目标注册项可移植的。这与 Java 的“一次编写,到处运行”(Write Once, Run Anywhere)的理念是一致的。它还提供了超越注册项本身功能的增值能力。例如,一个非 JAXR 的 UDDI 用户不具备分类浏览和分类智能查询的能力,而 JAXR
UDDI 用户具备这些能力。
问. 为什么 JAXP API 不使用 UDDI 的术语和概念?
答. JAXR API 不针对 UDDI 或其他任何一种注册规范。它是一种涵盖多种规范的抽象 API。它可让开发人员在使用 Web 服务注册项和/或知识库之间做出选择。当 UDDI 适用于 JAXR 信息模型时(例如,Service、ServiceBinding 以及 BusinessQueryManager 和 BusinessLifeCycleManager 中的方法名),JAXR API 使用 UDDI 术语和概念。
问. 为什么 JAXR 信息模型使用 ebXML Registry Information Model 作为基础,而不采用 UDDI 数据结构?
答. JAXR API 用于支持多注册项。 ebXML Registry Information Model 比 UDDI 数据结构更通用且更易于扩展。出于这种特点,可以将 ebXML Registry Information Model 进行扩展,来满足 UDDI 和其他注册项的需要。
问. 为什么没有完整地开发 JAXR 信息模型?
答. 信息模型的开发需要很长时间。从现有信息模型出发对其进行改进是很容易的。