【问题标题】:Is it valid to expect a Java Portal Server to host 'standard' Java WebApps?期望 Java Portal Server 托管“标准”Java WebApp 是否有效?
【发布时间】:2008-12-12 12:08:06
【问题描述】:

有人建议这可能是一种合理的方法,以便最大限度地减少对现有服务器配置的更改,但它实际上是否有效/受支持?无论哪种方式,我都找不到任何具体的东西。

实际上,使用 JBoss Portal V2.4.2 服务器时,似乎存在一些类加载问题,因此无法运行诸如可下载的 Stripes 示例或标准 Wicket 快速入门应用程序之类的东西,但我不确定如果问题是服务器特定的问题还是通用的问题 - 任何人?

注意:这不是关于将现有的 Web 应用程序显示/移动到门户中,只要 Portal Server 也应该是有效的 AppServer?

【问题讨论】:

    标签: java web-applications portal jboss-portal


    【解决方案1】:

    JSR 286 (Portlet 2.0) spec:

    PLT.2.7

    与 Java 2 的关系 平台、标准和企业 版本

    Portlet API v2.0 基于 Java 平台,标准版 5.0 和企业版 v1.4。小门户 容器至少应满足 要求,在 v 1.4 中描述 J2EE 规范,用于执行 在 J2EE 环境中。

    因此,期望标准的应用服务器应用程序在门户下工作并非没有道理。

    但是,根据定义,门户将在全局类空间中包含更多库。将库添加到容器总是会带来不兼容的风险,并且需要管理哪些类/资源暴露给您的应用程序以及如何(应用程序优先类加载等)。我过去曾遇到过第三方库的问题,这些库的依赖项与门户附带的版本冲突。我不希望依赖管理变得更容易。

    正如他们所说,一次编写,到处测试。

    【讨论】:

      【解决方案2】:

      根据我的经验,这是一个有效的建议。 Portlet 应用程序通常也是 Web 应用程序(例如,它们可能包含一个 servlet,以允许也通过要在其中一个 portlet 中呈现的链接访问应用程序逻辑),因此它们包含 portlet.xml 和 web.xml,并且需要 j2ee 类和 jsr168类。 WSRP 标准还包含资源链接类型,应该代表远程服务器的普通应用服务器。

      Websphere 门户服务器也是一个应用服务器。

      【讨论】:

      • Portlet 应用程序确实部署在 War 文件中,并且可以包含 servlet。我假设问题是是否可以将现有应用程序呈现为来自 Portal Server 的 portltet。这当然是不可能的。
      • 嗯...但它可以/exclusively/包含servlet,或者换句话说,一个应用程序是否需要至少有1个portlet? (我没有/想要提供 portlet,只是一个 servlet,但我只有一个 Portal Server!)
      • 致 kgiannakakis:对,您需要一个桥接 portlet 才能将正常的 servlet 内容呈现到一个 portlet 中,请参阅 portletbridge.org
      • 致 Gwyn:应用程序需要包含一个 portlet.xml,但该文件可能只包含一个空的 portlet-app 标记。但我不知道你的容器是否允许这样做。
      【解决方案3】:

      我使用 JBoss Portal、BEA WebLogic Portal 和 Apache Jetspeed 2 在单个 Web 应用程序中混合了 servlet 和 portlet。

      但是,将 servlet 转换为 portlet 可能很困难。确实存在使用诸如Portals Bridges 之类的桥接技术,但我很幸运地避免了进行此类转换,并且除了玩教程之外没有直接经验。

      【讨论】:

        【解决方案4】:

        嗯...但是它可以/排他地/包含 servlet,或者换句话说,应用程序是否需要至少有 1 个 portlet? (我没有/想要提供一个 portlet,只是一个 servlet,但我只有一个 Portal Server!)

        即使应用程序包含一个 portlet,也没有什么说您需要在某个页面上公开该 portlet。如果您编写这样的应用程序,只需编写任意数量的 servlet,直接链接到它们,不要在任何页面上放置任何虚拟/默认 portlet。

        我编写了一个符合 JSR-168 的应用程序,其中包含一个空 portlet 和一个用于检索一些 XML 股票价格数据的 servlet。几个月以来,只调用了 servlet,portlet 在站点上的任何地方都不可见。后来我添加了一个 portlet,它提供了一些来自 XML 提要的额外数据。

        【讨论】:

          【解决方案5】:

          答案是肯定的,它是有效的,但是特定的 JBoss Portal V2.4.* 版本似乎存在类加载器问题,因此只有更基本的 Web 应用程序才能正确运行.

          【讨论】:

            【解决方案6】:

            我认为问题在于是否可以将标准 Web 应用程序呈现为来自 Portlet 容器的 Portlet。这是不可能的。 Portlet 需要基于 GenericPortlet 类并具有特殊的部署描述符。有 JSR-168 标准,它指定了门户的要求。 JSR-286 规范即将出台。

            您唯一能做的就是创建一个 portlet,它将通过 iframe 为您现有的应用程序提供服务,但这当然很难看。

            有一本名为“Portlets and Apache Portals”的关于portlet 的免费书籍,它可能很有用。另请参阅规范。这个blog spot很有意思。

            【讨论】:

            • 谢谢 - 任何指向我应该在哪里找到这个定义的指针,因为我将不得不说服一些认为这是一个有效的事情的人?
            • 不,问题是门户容器是否应该能够充当标准 AppServer,只需以与(例如)Tomcat 相同的方式将“标准”网络应用程序作为网络应用程序提供服务将能够。正如我所说,我可以访问的已安装服务器失败,但似乎这是特定于它的......
            猜你喜欢
            • 2021-06-10
            • 1970-01-01
            • 1970-01-01
            • 2015-01-30
            • 1970-01-01
            • 1970-01-01
            • 2023-03-03
            • 1970-01-01
            • 2014-08-24
            相关资源
            最近更新 更多