WebSphere Portal 中的 URL 生成

编写基于 WebSphere® Portal 的应用程序时,正确生成门户网站 URL 是其中一项最重要的任务。提供了多个编程工具和方法, 用于在定制代码中生成 WebSphere Portal URL。以下部分介绍了可用的编程工具,并论述了何时最适合使用每款工具。

门户网站 URL 的类型

根据您尝试完成的任务不同,有多种不同类型的门户网站 URL。
呈示 URL
此类 URL 用于检索门户网站页面的一般视图。具体而言,此类 URL 不包含任何 Portlet 操作,也不会引起任何服务器端状态更改。呈示 URL 对应于 HTTP GET 操作并具有幂等性,即,它可以多次运行,而不会造成任何损害。普通 WebSphere Portal 页面导航由呈示 URL 组成。
操作 URL
操作 URL 用于 Portlet 内的活动。这些 URL 对应于 HTTP POST 或 PUT 并且通常不具有幂等性,这意味着它们最多只能运行一次。操作 URL 通常以特定 Portlet 为目标,并且可能会引起服务器端状态更改。Portlet 操作以及作为操作目标的 Portlet 以参数形式在导航状态文档内传递。
友好 URL
友好 URL 包含用于描述门户网站页面路径的人类可读字符串。 这些人类可读字符串对应于与页面或标签关联的友好 URL 名称。此外,URL 中也可能存在友好内容路径标记。友好内容路径标记是人类可读字符串,描述与页面关联的 Web 内容管理库的站点区域路径。
注: 友好 URL 还可能包含编码的导航状态文档。如果未包含,那么它为无状态友好 URL。存在专门用于处理友好 URL 的编程 API。
虚 URL
虚 URL 类似于无状态友好 URL,人类可读并且没有编码的导航状态文档。但是,虚 URL 和与门户网站页面关联的友好 URL 名称无关。而虚 URL 是简单、易记且可轻松输入(如果需要)的别名。虚 URL 与 WebSphere Portal 先前发行版中介绍的已映射的 URL 类似。它们仅用作初始入口点,在与门户网站站点开始交互后不会持久存在于浏览器地址栏中。存在一个专用于处理虚 URL 的编程 API。
部分内容 URL
部分内容 URL(即 PoC URL)是以内容而非门户网站工件(例如页面)为目标的后期绑定机制。它们使用 WeSphere Portal 的另一个 URL 入口点(通常为 mypocmycontenthandler,而非 myportal)。一个编程 API 可用于处理部分内容 URL。

生成门户网站 URL 的方法

由于 WebSphere Portal URL 极其复杂,难以进行手动编码,因此请勿尝试通过字符串并置来构建门户网站 URL。设计意图是,门户网站中的大部分自引用 URL 都在运行时生成于代码中,以避免损坏链接,以及避免手动维护基于门户网站的站点中的链接。

WebSphere Portal 为程序员提供了一些用于生成这些复杂门户网站 URL 的选项。不同的选项设计用于解决从最简单到最复杂的各种用例。
  • 门户网站 JSP 标记方法在主题和外表 JSP 中使用。
  • JSR 286 Portlet API 和相应的 JSP 标记。此 URL 生成方法可满足标准 portlet 中几乎所有的 URL 生成需求。
    • 或者,如有必要,当您修改现有 portlet 并且无法进行升级时,可使用较旧的 JSR 168 Portlet API。
    • 不再支持 IBM® Portlet API。必须将写入此 API 的较旧的 portlet 迁移到当前标准。
  • WebSphere Portal 已定义公共呈示参数。此方法可以支持许多先前需要使用导航状态 API 的用例。
  • 友好 URL API 方法专门用于涉及友好 URL 的用例,包括必须是无状态的 URL(没有已编码的导航状态文档)。
  • PoC URL API 方法专门用于创建部分内容 URL。
  • 虚 URL API 方法专门用于处理虚 URL。
  • 导航状态 API 方法是用于生成 URL 的功能最齐全且最通用的编程工具,但需要最深入的理解和编程技能。

当您创建需要 portlet 间通信的协作 portlet 时,可能在生成的 URL 中携带 portlet 间消息传递。JSR 286 支持的呈示参数是一种实现方式,但还将提供额外的编程工具。针对协作 portlet 的 JSR 286 方法及额外工具在 Portlet 通信部分中进行了更为详细的描述。此类工具的一个示例是协作 portlet API,用于 JSR 286 和 JSR 168 portlet 之间的互操作。

将用例映射到可用的编程工具
表 1. . 所列用于不同用例的简单到复杂的 URL 生成方法。
任务(最简单到最复杂) URL 生成方法

在主题级别上门户网站页面之间创建页面导航链接。例如,标准选项卡式页面导航。

这些 URL 通常是简单的呈示 URL。在 JSP 中,使用 <portal-navigation/> JSP 标记。有关对门户网站主题进行编程的更多信息,请参阅开发主题和外表部分。

自包含(不需要 portlet 间通信)的 JSR 286 portlet 生成指向自身的操作 URL 并设置自己的呈示参数。

  • JSR 286 定义可在 JSP 中使用的标记库。通过 V1.0/JSR168 版本对该标记库进行了极大扩展。它具有自己的名称空间,以避免与 V1.0 库产生冲突。
    <%@ taglib uri="http://java.sun.com/portlet_2_0"
    Prefix="portlet"%>
    示例:
    • 要使用呈示参数生成普通呈示 URL:
      <a href="<portlet:renderURL>
      <portlet:param name="myRenderParameter"
      value="someValue"/>
      This is the text for the link</a>
    • 要生成 portlet 操作 URL(以当前页面上的当前 portlet 为目标):
      form method="POST"
      action="<portlet:actionURL/>">
      注: 操作 URL 必须具有编码的导航状态文档。
  • 要采用 java 代码而非使用 JSP 标记来执行同等操作,请使用 JSR 286 Portlet API(位于 javax.portlet.* 包中)。有关更多信息,请参阅相关链接 javax.portlet 包。请特别参阅 RenderResponse 接口。portlet 容器会将 RenderResponse 传递到 portlet 的呈示方法。RenderPesponse 实现 MimeResponse,后者提供三种方法来创建自引用 URL:
    • createRenderURL()
    • createActionURL()
    • createResourceURL()

JSR 286 portlet,需要与另一个 JSR 286 Portlet 进行 Portlet 间通信,但没有页面导航(门户网站视图仍然保留在当前页面)。

足以使用 JSR 286 呈示参数支持。但还存在其他方法。有关更多信息,请参阅 Portlet 通信部分。

需要与 JSR 168 Portlet 进行互操作的 JSR 286 Portlet。

将编写通过 portlet 间通信与其他 portlet 合作的 JSR168 portlet,以使用协作 portlet API(也称为属性代理)。属性代理是 JSR 168 规范的 IBM 扩展。JSR286 引入了 portlet 事件模型,该模型取代了属性代理。如果满足某些条件,那么 JSR286 portlet 和 JSR 168 portlet 可以互操作。有关更多信息,请参阅 JSR 286 portlet 事件与 JSR 168 协作 portlet 之间的互操作性部分。

需要执行以下操作的 JSR 286 Portlet:
  • 生成指向另一个门户网站页面的呈示链接(产生页面导航)。
  • 有选择地控制目标 portlet 的方式或窗口状态。
  • 有选择地控制门户网站状态。
  • 有选择地控制目标 portlet 的呈示参数。
  • 有选择地控制已生成请求的语言环境。
从 Portal 8.5 CF05 开始,对所有这些用例等使用 WebSphere Portal 定义的公共呈示参数。这些呈示参数使得当前请求上下文的各个方面在 WebSphere Portal 指定的名称空间中作为普通公共呈示参数可用。
要将导航状态值读取为呈示参数:
可以通过普通 JSR286 API renderResponse.getParameter(<parameter qualified name>) 来访问这些特殊公共呈示参数。

其中,<parameter qualified name> 是 NAMESPACE_URI 和某一个呈示参数名称的并置,如以下部分中所定义。例如,http://www.ibm.com/xmlns/prod/websphere/portal/publicparams 选择。

要使用呈示参数来设置导航状态值:
可以通过普通 JSR286 portlet API baseURL.setParameter(<parameter qualified name>, <value>) 来设置

通过使用普通 JSR286 API 来设置这些特定的呈示参数,系统将正确的导航状态设置编码到新 URL 上的导航状态文档中。该设置使得新值对呈示并单击该新 URL 而产生的下一个请求可用。

注释:
  • 该支持需要使用有状态的 URL,因为仅在已编码的导航状态文档中携带呈示参数。
  • 所有这些值在 com.ibm.portal.PublicRenderParameters 类中作为公共常量可用,该类是 wp.model.api 组件中的公共 API。要获取完整详细信息,请参阅 WebSphere Portal javadoc IBM WebSphere Portal V8.5.0.0 SPI 规范
WebSphere Portal 指定的公共呈示参数的名称空间为 http://www.ibm.com/xmlns/prod/websphere/portal/publicparams(作为 NAMESPACE_URI 可用)。以下项是 WebSphere Portal 支持的特殊公共呈示参数:
  • selection (NAME_SELECTION)
  • uri (NAME_URI)
  • parameters (NAME_PARAMETERS)
  • locale (NAME_LOCALE)
  • themeTemplate (NAME_THEME_TEMPLATE)
  • labelMappings (NAME_LABEL_MAPPINGS)
  • screenTemplate (NAME_SCREEN_TEMPLATE)
  • themePolicy (NAME_THEME_POLICY)
  • solo (NAME_SOLO)
  • showTools (NAME_SHOW_TOOLS)
  • hiddenContent (NAME_HIDDEN_CONTENT)
  • hiddenPages (NAME_HIDDEN_PAGES)
  • statePartition (NAME_STATE_PARTITION)
  • path-info (NAME_PATH_INFO)
  • focus (NAME_FOCUS)
  • deviceClass (NAME_DEVICE_CLASS)
  • digest (NAME_DIGEST)
  • pageMode (NAME_PAGE_MODE)
  • editMode (NAME_PAGE_EDIT_MODE)
  • infoMode (NAME_PAGE_INFO_MODE)
  • helpMode (NAME_PAGE_HELP_MODE)
还存在门户网站 URL 生成便捷 API。此便捷 API 仅支持呈示 URL。使用此 API 无法生成任何状态更改(操作 URL )。以下项是此 API 中的关键类:
  • com.ibm.portal.portlet.service.url.PortalURLGenerationService
  • com.ibm.portal.portlet.service.url.PortalURLWriter
依据 com.ibm.portal.portlet.service.url 包的 javadoc,程序员:
  1. 通过 JNDI 查找来获取 PortletServiceHome 的实例。
  2. 在该 home 接口上,调用 getPortletService(PortalURLGenerationService.class)
  3. 在该服务上,调用 getPortalURLWriter(request, response)
  4. 使用 PortalURLWriter 对象上的方法来创建和操作呈示 URL。
存在针对 URL 生成便捷 API 的同等 JSP 标记集。
<%@ taglib uri="http://www.ibm.com/xmlns/prod/websphere/portal/v8/portlet/ibm-portlet-ext" prefix="portlet-ext" %> 
有关更多信息,请参阅标准 portlet 的 JSP 标记。使用便捷 API 标记创建呈示 URL 的示例为 <portlet-ext:portalRenderURL>

友好 URL

又称为“友好 URL 名称”的“友好 URL”是门户网站页面的人类可读名称。它被设置为页面属性,每一页最多可以有一个“友好 URL”。
注释:
  • 如果页面具有正确配置的“友好 URL”,那么 WebSphere Portal 可保证呈示该页面的任何请求都具有“友好 URL”。只有使用 friendly.redirect.enabled 配置设置明确关闭“友好 URL”实施时,请求才不会具有“友好 URL”。
  • “友好 URL”不保证其脱离“导航状态”。如果需要除去“导航状态”,可使用更多的方法。您可能还希望为这些用例考察虚 URLURL 映射
要使用“友好 URL”API,需获取 FriendlyURLFactory 实例。根据您编写的代码的类型,可通过以下两种方式之一来获取 FriendlyURLFactory 实例:
如果您正在编写 portlet:
  • com.ibm.portal.resolver.friendly.service.PortletFriendlySelectionServiceHome 类开始。您需要通过两步获取此类的实例:
    1. 使用常量 PortletFriendlySelectionServiceHome.JNDI_NAME 来执行 JNDI 查找。此 JNDI 查找会返回 PortletServiceHome 的实例。
    2. PortletServiceHome 对象上,调用 getPortletService(PortletFriendlySelectionServiceHome.class)。调用会返回 PortletFriendlySelectionServiceHome 实例。
  • 为了提高效率,请在 portlet 的 init(PortletConfig) 方法中执行 JNDI 查找并调用 getPortletService,然后保存将重复使用的 PortletFriendlySelectionsServiceHome 实例。没有必要对每个请求都执行此调用。
  • 在调用每个请求(如 portlet 的 doView(RenderRequest,RenderResponse) 方法)时,请使用已保存的 PortletFriendlySelectionServiceHome 来调用 getPortletFriendlySelectionService(request,response)。调用会返回 PortletFriendlySelectionService 实例。
    注: 必须在此实例超出范围前对其调用 dispose() 来进行处理。
  • 在返回的 PortletFriendlySelectionService 实例上,调用 getURLFactory()
如果您正在编写主题代码:
  • com.ibm.portal.resolver.friendly.service.PortalFriendlySelectionServiceHome 类开始。使用常量 PortalFriendlySelectionServiceHome.JNDI_NAME 来执行 JNDI 查找。 此查找会返回 PortalFriendlySelectionServiceHome 的实例。
  • 为了提高效率,请在您的类的构造方法或其他初始化方法中执行 JNDI 查找,然后保存将重复使用的 PortalFriendlySelectionServiceHome 实例。没有必要对每个请求都执行此调用。
  • 在调用每个请求时,请使用已保存的 PortalFriendlySelectionServiceHome 来调用 getPortalFriendlySelectionsService(HttpServletRequest,HttpServletResponse)。 调用会返回 PortalFriendlySelectionService 实例。
    注: 必须在此实例超出范围前对其调用 dispose() 来进行处理。
  • 在返回的 PortalFriendlySelectionService 实例上,调用 getURLFactory()

在您具有 FriendlyURLFactory 后,可调用某一项 newURL() 方法来获取 FriendlyURL 实例。可使用 set* 方法设置 FriendlyURL 实例,此方法会使用 writer(Writer) 方法写入响应。Writer 可从响应中获取,然后通过调用 dispose() 来进行处理。

虚 URL

虚 URL 是简单易记并且用户可手动输入的 URL。虚 URL 由 Web 管理员通过 WebSphere Portal 管理工具(如工具栏、管理 portlet 或 XMLAccess 脚本编制)进行管理。但是,有时当您呈示响应时,必需生成虚 URL 链接。

以下部分描述了如何使用虚 URL API 来获取可用于呈示虚 URL 链接的 VanityURLNode。根据您正在开发的代码包的类型,使用三种不同的方法之一来访问和使用虚 URL API。
注: 请谨慎为正在开发的代码选择正确的 SPI 包。
必需的接口文档位于 WebSphere Portal SPI javadoc 中。
如果您正在编写 portlet:
  • 找到 com.ibm.portal.portlet.service.model 包。
  • VanityURLModelProvider 接口开始。您需要获取类的实例,该实例通过两步实现此接口:
    1. 使用名称常量 VanityURLModelProvider.JNDI_NAME,通过 JNDI 查找来获取 PortletServiceHome 的实例。
    2. 在该 PortletServiceHome 对象上,调用 getPortletService(VanityURLModelProvider.class)
  • 在 portlet 的 getPortletService 方法中执行 JNDI 查找并调用 init()。将返回的 VanityURLModelProvider 实例保存在 portlet 类内的静态字段中。可以在各个请求中复用此提供程序实例。
  • 对于每个请求,例如,在 portlet 的 doView() 方法的调用中,通过传递当前的 portlet 请求和响应,在已保存的 VanityURLModelProvider 实例上调用 getVanityURLModel。不能在各个请求中复用模型。
  • VanityURLModel 对象上,调用 getLocator()
  • VanityURLModelLocator 上,您可以调用任何 findBy 方法,这些方法将返回单个 VanityURLNodeIterableListModel<VanityURLNode> 列表。
如果您正在编写主题代码:
  • 找到 com.ibm.portal.model 包。
    注: 此指令集中的许多类名与虚 URL API 的数据源用法的类名相同,但包名不同。
  • 获取类的实例,该实例通过两步实现 VanityURLModelProvider
    1. 使用名称常量 VanityURLModelHome.JNDI_NAME,通过 JNDI 查找来获取 VanityURLModelHome 的实例。请参阅 com.ibm.portal.model.VanityURLModelHome javadoc,以获取示例代码。
    2. 在该 VanityURLModelHome 对象上,调用 getVanityURLModelProvider()
  • 在您的类的构造方法或 init() 方法中,执行 JNDI 查找并调用 getVanityURLModelProvider()。将返回的 VanityURLModelProvider 实例保存在类内的静态字段中。 可以在各个请求中复用此提供程序实例。
  • 对于每个请求,通过传递当前的 servlet 请求和响应,在已保存的 VanityURLModelProvider 实例上调用 getVanityURLModel。不能在各个请求中复用模型。
  • VanityURLModel 对象上,调用 getLocator()
  • VanityURLModelLocator 上,您可以调用任何 findBy 方法,这些方法将返回单个 VanityURLNodeIterableListModel<VanityURLNode> 列表。
如果您正在编写数据源:
  • 找到 com.ibm.portal.cor.service 包。
    注: 此指令集中的许多类名与虚 URL API 的主题代码用法的类名相同,但包名不同。
  • 获取类的实例,该实例通过两步实现 VanityURLModelProvider
    1. 使用名称常量 VanityURLModelHome.JNDI_NAME,通过 JNDI 查找来获取 VanityURLModelHome 的实例。请参阅 com.ibm.portal.cor.service.VanityURLModelHome javadoc,以获取示例代码。
    2. 在该 VanityURLModelHome 对象上,调用 getVanityURLModelProvider()
  • 在您的类的构造方法或 init 方法中,执行 JNDI 查找并调用 getVanityURLModelProvider(),然后将返回的 VanityURLModelProvider 实例保存在类内的静态字段中。 可以在各个请求中复用此提供程序实例。
  • 在“数据源”的每个请求方法中,调用 modelProvider.getVanityURLModel(com.ibm.content.operations.registry.api.Context)

    针对“数据源”的编程详细信息:在大多数情况下,由专用工厂分配“数据源”。向解析器框架注册该工厂,以处理特定 URI 的请求。收到该 URI 的请求后,解析器框架会启动该工厂,并且会向该工厂传递 com.ibm.content.operations.registry.api.Context 对象。确保了解此 COR Context 对象与 JNDI 查找所使用 javax.naming.Context 类之间的差异。该工厂将分配新的“数据源”实例(或者可能会从池中检索一个现有实例),并通过传递 COR Context 对象,在“数据源”上调用 reset()。必须将该对象以及 reset() 的其他参数保存在“数据源”内的实例字段中。可以在随后的方法调用中进行使用,直至调用 dispose() 或重新调用 reset()。调用 getVanityURLModel(com.ibm.content.operations.registry.api.Context) 时,请使用 COR Context 对象。

  • VanityURLModel 对象上,调用 getLocator()
  • VanityURLModelLocator 上,您可以调用任何 findBy 方法,这些方法将返回单个 VanityURLNodeIterableListModel<VanityURLNode> 列表。
在您通过任何适当的方式具有 VanityURLNode 实例后,可以调用该接口的各种方法来构建虚 URL 的呈示表示:
  • VanityURLnode.isSecure() 告知目标协议是 http 还是 https。
  • VanityURLnode.isProtected() 告知目标 URL 映射到 /portal 还是 /myportal
  • VanityURLnode.getHost() 将返回与此虚 URL 关联的主机名。
  • VanityURLnode.getPort() 将返回与此虚 URL 关联的端口号。
  • VanityURLnode.getVpld() 将返回针对此虚 URL 的虚拟门户网站 OID。
  • VanityURLnode.getPath() 将返回针对此虚 URL 的路径字符串。该路径字符串被认为是虚 URL 字符串。

创建、更新或删除虚 URL。

如果您正在编写代码,旨在创建、更新或删除虚 URL,而非读取和呈示虚 URL,那么请使用以下 API:
  • 找到 com.ibm.portal.model.controller 包。
  • 您需要获取类的实例,该实例使用名称常量 VanityURLModelControllerHome.JNDI_Name,通过 JNDI 查找来实现 VanityURLModelControllerHome。请参阅 com.ibm.portal.model.controller.VanityURLModelControllerHome javadoc,以获取示例代码。
  • 在该 VanityURLModelControllerHome 对象上,调用 getVanityURLModelControllerProvider()
  • 在您的类的构造方法或 init 方法中,执行 JNDI 查找并调用 getVanityURLModelControllerProvider(),然后将返回的 VanityURLModelControllerProvider 实例保存在类内的静态字段中。可以在各个请求中复用此提供程序实例。
  • 您可能还需要使用与编写主题代码中描述的相同代码来获取 VanityURLModelProvider
  • 在每个请求方法中,
    • VanityURLModelProvider 上,调用 getVanityURLModel(request,response)
    • VanityURLModelControllerProvider 对象上,通过传递从调用 getVanityURLModel 返回的模型来调用 createVanityURLModelController(model)
  • 用于创建新的虚 URL 和设置其属性的后续调用记录在 VanityURLModelControllerModifiableVanityURLNode 的 javadoc 中。

需要生成操作 URL 以指向另一个特定 Portlet 的 JSR 286 Portlet,或未在此处列出的任何其他用例。

导航状态 API

部分内容 URL

部分内容或 POC URL 是解析器框架内以数据源或解析服务为目标的 URL。鉴于此数据源或解析服务,PoC URL API 可帮助编程人员创建 URL,使解析器框架能够启动正确的数据源或解析服务。

要使用部分内容 URL,请获取 com.ibm.portal.resolver.acessors.url.PocURLFactory 的实例。与其他 URL API 极为类似,获取 URLFactory 的实例的代码取决于您是否正在编写 portlet 或主题代码,或者是否已在解析器框架内运行代码。
如果您正在编写 portlet:
  • 在 Portal javadoc 中,找到 com.ibm.portal.resolver.servicer.service 包。
  • 通过两步获取 PortletPocServiceHome 实例:
    1. 使用名称常量 PortletPocServiceHome.JNDI_NAME,为 PorletServiceHome 实例执行 JNDI 查找。请参阅 PortletPocServiceHome 的 javadoc,以获取样本代码。
    2. 在返回的 PortletServiceHome 对象上,调用 getPortletService(PortletPocServiceHome.class)
  • 在 portlet 的 init(PortletContig) 方法中,执行 JNDI 查找并调用 getPortletService,然后将生成的 PortletPocServiceHome 实例保存在类实例变量中。没有必要对 portlet 服务的每个请求都重新执行此调用。
  • 在每个请求方法(如 render(RenderRequest,RenderResponse))中,根据所实施的特定方法以及所传递的请求和响应的类型来调用适当的 PortletPocServiceHome.getPortletPocService() 方法。针对“操作”、“事件”、“呈示”、“资源”以及普通的 PortletRequest 和 PortletResponse,此方法有多个版本。
    注: 必须在返回的服务实例超出范围前对其调用 dispose()
  • PortletPocService 或适当的子类上,调用 getURLFactory()
如果您正在编写主题代码:
  • 在 Portal javadoc 中,找到 com.ibm.portal.resolver.service 包。
  • 使用名称常量 PortalPocServiceHome.JNDI_NAME,为 PortalPocServiceHome 执行 JNDI 查找。
  • 将生成的 PortalPocServiceHome 实例保存在类实例字段中。没有必要对每个请求都执行 JNDI 查找。
  • 在您的类的每个请求方法中,在已保存的 PortalPocServiceHome 实例上,通过传递 HttpServletRequestHttpServletResponse 来调用 getPortalPocService
    注: 必须在返回的服务实例超出范围前对其调用 dispose()
  • 在生成的 PortalPocService 实例上,调用 getURLFactory()
如果您正在编写作为数据源或解析服务运行的代码:
  • 在 Portal javadoc 中,找到 com.ibm.portal.resolver.service 包。
  • 使用名称常量 CorPocServiceHome.JNDI_NAME,为 CorPocServiceHome 执行 JNDI 查找。
  • 将生成的 CorPocServiceHome 实例保存在类实例字段中。没有必要对每个请求都执行 JNDI 查找。
  • 在您的类的每个请求方法中,在已保存的 CorPocServiceHome 实例上,调用 getCorPocService(com.ibm.content.operations. registry.api.Context)
    注: 必须在返回的服务实例超出范围前对其调用 dispose()

    针对“数据源”的编程详细信息:在大多数情况下,由专用工厂分配“数据源”。向解析器框架注册该工厂,以处理特定 URI 的请求。收到该 URI 的请求后,解析器框架会启动该工厂,并且会向该工厂传递 com.ibm.content.operations.registry.api.Context 对象。确保了解此 COR Context 对象与 JNDI 查找所使用 javax.naming.Context 类之间的差异。该工厂将分配新的“数据源”实例(或者可能会从池中检索一个现有实例),并通过传递 COR Context 对象,在“数据源”上调用 reset()。必须将该对象以及 reset() 的其他参数保存在“数据源”内的实例字段中。可以在随后的方法调用中进行使用,直至调用 dispose() 或重新调用 reset()。调用 getCorPocService (com.ibm.content.operations.registry.api.Context) 时,请使用 COR Context 对象。

  • 在生成的 CorPocService 实例上,调用 getURLFactory()
在获取 PocURLFactory 后:
  • 调用某一项 newURL 方法,将期望类型的 PocURL 实例化。
  • 在生成的 PocURL 实例上,调用 setXXX 方法来定义 URL 属性。
  • 调用 writeDispose() 来让 URL 指向响应并处理 PocURL 实例。必须从 writeDispose 方法的响应参数获取供其使用的“写程序”实例。