科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道专家访谈: Birga Rick 谈 WebSphere Application Server V6.1 的 Portlet 开发及其与 WebSphere Portal 的?

专家访谈: Birga Rick 谈 WebSphere Application Server V6.1 的 Portlet 开发及其与 WebSphere Portal 的?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

WebSphere® Portal 专家 Birga Rick 将在本文中回答有关 WebSphere Application Server V6.1 中的 Portlet 开发及其与 WebSphere Portal 的关系的问题。

作者:ibm 来源:ibm 2007年10月6日

关键字: 技术 WEBSPHERE IBM 中间件

  • 评论
  • 分享微博
  • 分享邮件

引言

Portlet 环境专家 Birga Rick 将回答有关在 WebSphere Application Server v6.1 中开发和运行 Portlet 的问题。她还将回答有关 WebSphere Application Server 上的 JSR 168 Portlet 编程和 Portlet 应用程序功能、WebSphere Portal 编程模型差异、聚合概念和通用体系结构和战略的问题。IBM WebSphere Application Server 是构建于开放标准之上的 Web 应用服务器,可帮助您部署和管理 Web 应用程序(包括从简单的网站到强大的电子商务解决方案的各种应用程序)。Portlet 是基于 Java™ 的 Web 组件,能为门户和 Mashup 等 UI 组合程序生成动态内容。WebSphere Portal 提供了用于与应用程序、内容、流程和人员进行交互的单一个性化交互点。有关更多信息,请参见 developerWorks WebSphere Portal 专区

问:能不能在独立的 WebSphere Application Server v6.1 上运行 JSR 168 Portlet。如果能,应该如何操作?

答:可以,JSR 168 Portlet 运行时已集成到了 WebSphere Application Server 6.1 中,允许在独立服务器上运行 JSR 168 Portlet。包含四个部分的系列文章(其第 1 部分是 探索 WebSphere Application Server V6.1 Portlet 容器: 第 1 部分:Portlet 容器介绍)对如何使用这个 Portlet 运行时进行了介绍。

问:将 Portlet 容器集成到 WebSphere Application Server 中的战略考虑是什么?

答:JSR 168 Portlet 是针对使用 Web 应用程序用户的 IBM 建议编程模型。IBM 通过 Websphere Application Server 6.1 的 JSR 168 Portlet 容器向独立组件提供此编程模型。还可以使用这个组件编程模型在 WebSphere Portal 内定义业务 Mashup(也称为组合应用程序)。IBM 支持 Portlet 的 JSR 168 标准,而且目前在定义 Java Portlet API 的后续版本的 JSR 286 专家组中扮演着领头雁的角色。该标准在 JCP 最终定稿后,JSR 286 Portlet 编程模型将受到 WebSphere Application Server 和 WebSphere Portal Server 的支持。下面这篇文章中对存在的差异进行了很好的介绍:探索 WebSphere Application Server V6.1 Portlet 容器,第 4 部分: 在 WebSphere Application Server 和 WebSphere Portal 之间迁移 Portlet

问:是否可以在 WebSphere Application Server 上部署 Portlet,并将其通过 Web Services for Remote Portlets (WSRP) 在 WebSphere Portal 中公开?

答:目前尚不能这么做。由于 WebSphere Application Server 6.1 不支持 WSRP,因此我们计划通过 WebSphere Portal 的后续版本提供基于 WebSphere Application Server 中的 Portlet 容器的 WSRP 生成程序。通过此生成程序,WebSphere Portal 客户可以在门户的门户页中显示远程 WebSphere Application Server 上运行的 Portlet。

问:Portlet 首选项存储在 WebSphere Application Server 的 Portlet 容器的哪个位置?

答:门户通常将首选项存储在后端系统中。在 WebSphere Application Server 上,Portlet 首选项存储在客户端的 cookie 中。如果用户在其浏览器中禁止 cookie 缓存,则将不会存储用户首选项。

问:JSR 168 标准将如何处理一些要集成但有一定风险的前沿框架(如 AJAX)?

答:目前 Java Portlet 规范 JSR 168 中尚未提到 Portlet 的异步呈现。而此 Java Portlet 规范的下一版本 JSR 286 中,将处理新的 AJAX 支持挑战。目前已经制定了新 Portlet 生命周期方法,以允许门户框架利用 AJAX 技术。根据目前的建议,将使用 serveResource 方法来提供 Portlet 标记的特定部分,或者用于有选择地更改 Portlet 的状态。我建议提前了解一下 Java Portlet 规范 V2.0 (JSR 286) 及 JSR 286 的最新建议草案。

问:您建议我们如何在 WebSphere Application Server 上的 Portlet 中使用 AJAX?

答:与其他门户框架相比,WebSphere Application Server 提供了具有 URL 可寻址性的非常简单的门户。基于 Portlet URL,可以很方便地刷新单个 Portlet 片段。AJAX 请求可以调用 Portlet 操作,或包括特定的 Portlet 内容。

问:为什么 Portlet 和 Servlet 同名的 Portlet 应用程序无法在 WebSphere Application Server 上安装?

答:每个 Web 组件都需要在系统中唯一标识 Portlet 的 URL。具有与 Portlet 同名的 Servlet 将导致为两个组件生成相同的 URL/上下文根/名称。因此,会禁止安装此类应用程序,以确保 URL 唯一地映射到一个特定的 Web 组件。通过在 ibm-portlet-ext.xmi 中禁用该 Portlet 的 Portlet 提供功能,可以进行恰当的配置,以避免注册 Portlet URL。通过这样,就无法通过 URL 访问 Portlet,但 URL 能够唯一地标识 Servlet,从而能成功地安装应用程序。

问:对于引用 Portlet 应用程序 war 文件外的 Java 类的 Portlet,您有什么建议?

答:通过将 Java 类作为 jar 文件放入共享库中,就可以让所有的 Portlet 应用程序访问这些 Java 类。对于 WebSphere Portal,可以将其放入 WebSphere Application Server 的 <PortalServer>/shared/app 目录,以便通过管理控制台创建共享库。

问:如何查看 WebSphere Portal v6.0 配置(例如,我使用的是哪个数据库等等)?

答:由于 WebSphere Portal 是 WebSphere Application Server 之上的成熟产品,因此有些配置是 WebApplicationServer 中通过管理控制台能够找到的设置。其他部分使用特定的门户配置文件进行配置,这些内容在 WebSphere Portal 信息中心的门户配置主题中进行了更为详细的说明。

问:若要将 .NET 应用程序集成到 WebSphere Portal 中,您有什么建议?我可以使用哪些技术或工具来进行此工作?

答:可以采取多种方式将应用程序集成到 WebSphere Portal 中。根据应用程序设计和结构的不同,可能使用其他集成解决方案更好。通过对客户端集成使用 iFrames 或对服务器端集成使用 Web-Clipping,可以实现更快的集成速度。使用 WSRP 时可以实现更高的集成级别。或者,可以使用 Mainsoft 来将应用程序作为本机 JSR 168 应用程序在 WebSphere Portal 进行预编译和使用。

问:如何在尝试基于 JSR 168 规范开发 Portlet 时在 WebSphere Portal 上获取 LTPA cookie?

答:在 WebSphere Portal 上,LTPA cookie 通过凭据库服务向 Portlet 提供。可以使用对应的活动凭据来通过以下方式建立经过身份验证的 HTTP 连接:

	
  JaasSubjectCredential credential = (JaasSubjectCredential)
vaultService.getCredential(vaultService.PREDEFINED_SLOT_USER_JAAS_SUBJECT,
     CredentialTypes.LTPA_TOKEN, new HashMap(), request);
After retrieving the credential object you can use the base class JaasSubjectCredential
to set up a connection. The LTPA cookie is set automatically.
 HttpURLConnection connection = credential.getAuthenticatedConnection(<url>);

问:在具有 Web 内容管理(Web Content Management,WCM)支持的 WebSphere Portal 上支持双语内容的最好办法或通用办法是什么?

答:支持多语言内容的最佳实践是,对每个区域设置使用一个库。Best practices for using IBM Workplace Web Content Management V6 中对此进行了全面的说明。

问:我们需要在所实现的一些 Portlet 中实现动态标题。另外,我还希望使用 JSR 168 编程模型,以使程序遵循标准。目前我们使用 Tip: Changing a portlet title at run time in WebSphere Portal V6 中提供的技巧,一切工作正常。不过,在最小化页面上的 Portlet 时,发现动态属性似乎不可用。如果我们在页面上具有多个 Portlet,而最小化了其中一个 Portlet,似乎最小化的 Portlet 的标题设置为了前一个 Portlet 的值。我猜这是因为最小化 Portlet 时没有调用 setTitle(),因此未设置动态属性,不知是不是这样。是否有也支持最小化 Portlet 的动态 Portlet 标题解决方案?

答:JSR 168 Portlet 独立于其当前窗口状态进行调用。另外,GenericPortlet 也注意到了这个事实,将确保在 render 方法内调用 setTitle 方法。因此,无论何时调用 Portlet,动态标题属性都应该可用。如果在您的 WebSphere Portal 版本上不能正常工作,请查找可用的修补程序。

问:能告诉我如何将 Google Gadget 添加到门户页吗?(Google gadget 代码到 Portlet 代码)

答:最近已经在 WebSphere Portal Portlet 目录发布了 Google Gadget Portlet。只需要安装此 Portlet,将其拖放到页面上,并在 EDIT/CONFIG 模式选择 Gagdet,即可开始使用。此 Portlet 将很快在 WebSphere Application Server 上运行。另外,还可以阅读以下文章,以了解如何将 IBM Portlet for Google Gadgets 与 WebSphere Portal V6.0 一起使用,从而方便地将 Google Gadgets 集成到基于门户的业务 Mashup 中:Enhancing your portal using Google Gadgets with WebSphere Portal V6.0

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章