【问题标题】:How can I set a WebSphere classloader policy to PARENT_LAST for an app created in Eclipse?对于在 Eclipse 中创建的应用程序,如何将 WebSphere 类加载器策略设置为 PARENT_LAST?
【发布时间】:2014-05-30 21:15:42
【问题描述】:

我们公司目前正在使用 RAD 来开发我们的 Java 应用程序,但我们希望通过 WebSphere Developer Tools 迁移到 Eclipse。我们的过渡试点进展顺利,但我们遇到了针对最初在 Eclipse 而非 RAD 中创建的新应用程序的类加载器策略问题。我们最初由 RAD 创建的项目在通过 Eclipse 发布时使用正确的类加载器策略 (PARENT_LAST) 进行部署,因为我们最初在 RAD 中使用了部署描述符编辑器,它在 /src/main/application/META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/deployments/defaultApp/deployment.xml 中设置了正确的类加载器策略。但是现在有了 Eclipse 和 WebSphere 开发者工具,我们不再有很好的部署描述符编辑器 UI 来为我们创建或修改这个文件(显然是 it's not included with the WDT plugin)。

那么,我的问题是设置这个类加载器策略的最佳方法是什么?当我们将它们部署到本地服务器时,我们仍然需要一些新的应用程序来设置 PARENT_LAST 的类加载器策略。我们的团队对此有所了解,目前我们可以看到 4 个选项。

  1. 每次发布​​后打开管理控制台并进行更改。这将是一个巨大的痛苦,甚至几乎不是一个真正的选择。
  2. 更改服务器配置文件设置以对所有应用程序使用 PARENT_LAST 类加载器策略。然而,我们公司的所有应用程序都不是这种情况,也不适用于所有组。
  3. 在每次发布后运行 jython 脚本来设置类加载器策略。这比选项 1 稍好一些,但也差不了多少。
  4. 在与 RAD 创建的其他应用程序相同的位置手动创建一个 deployment.xml 文件,其结构与 RAD 创建的 deployment.xml 文件相同,并根据需要为每个应用程序修改它。

选项 4 似乎是其中最好的,但它仍然是一个手动过程,并且有点容易出错。即使我们的大多数开发人员都可以在新应用程序中使用这种方法,但如果这是一个简单的一键式单击类型的过程,那将是最理想的。

所以考虑到 IBM 已经从 WDT 插件中省略了部署描述符编辑器这一事实,似乎选项 4 是我们唯一的希望,但我会再问一次,有没有其他更好的方法来设置 WebSphere 类加载器在 Eclipse 中创建应用程序时应用程序的 PARENT_LAST 策略?任何帮助表示赞赏,谢谢。

【问题讨论】:

    标签: java eclipse websphere


    【解决方案1】:

    嗯,Eclipse 是免费的,而 Rational Application Developer 每年的费用约为 5,000 美元(每位开发人员)。不错的部署编辑器(不是那么好。它往往包含各种不需要的东西。无论如何,谁需要在那里定义的 Derby DataSource?)是您必须放弃以节省大量成本的东西之一每年的现金。

    我跑题了。

    选项 (1) 完全禁止。您不想依赖手动步骤进行部署;您应该尽可能地自动化部署。

    选项(2)可能可以。我不确定您使用的是哪种 WebSphere 风格,但如果您使用的是 Network Deployment 版本,那么您可以设计一个包含多个服务器和集群的 WebSphere 拓扑。从理论上讲,您可以提出这样的拓扑结构,即PARENT_LAST 应用程序在特定服务器(或集群)上运行,PARENT_FIRST 应用程序在另一台服务器(或集群)上运行。

    您可以将选项 (2) 与技术计划结合起来,让您的所有应用程序都与 PARENT_LAST 一起工作。如果您的应用程序使用 WebSphere 碰巧也使用的流行第三方库(出于其内部目的),这是推荐的方法。例如,如果您使用的是 Commons Lang,那么已经建议您切换到 PARENT_LAST,因为 WebSphere 使用自己的 Commons Lang 内部副本,可能与您的冲突。

    选项 (3) - 它当然比选项 (1) 更好,但不一定比选项 (2) 更差,如果您可以正确设置 WebSphere 拓扑结构。

    选项 (4) 更难实施,但我认为总体而言这是最好的方法:

    1. 这是对每个 EAR(以及 EAR 中存在的每个 WAR)的一次性设置工作。
    2. 完成后,部署可以轻松实现自动化,无需额外步骤。
    3. 如果您正在使用本地测试环境来测试您的代码,并且您正在将应用程序从您的工作区快速发布到本地测试环境中,那么这种方法是唯一的方法(除了选项 (2))无需额外的人工工作即可为您工作。

    如果没有任何效果...考虑每年支付 5,000 美元(每位用户)并获得选项 (5) - 使用 IBM 的编辑器。或者,最好……雇人设计一个 Eclipse 插件来为你做这件事。开发时间不应超过一两周。

    【讨论】:

    • 选项 4 将是我们最有可能选择的路线。感谢您的验证,也许主要是因为您也不知道任何其他解决方案。除了 5,但这就是我们要远离的 :)
    • @butallmj 两个 cmets - 1) 如果您想轻松拥有 deployment.xml 文件 - 安装您的应用程序,通过控制台更改设置,保存然后导出。在导出的耳朵中,您将已经创建了该文件,因此您可以将其放入 Eclipse 中的项目中。 2) 您可以将您的 WebSphere 许可证升级到 Tools editon 以获得 - 无限数量的 Rational Application Developer 许可证用于该运行时。
    【解决方案2】:

    这个答案很有用。

    进入 WAS 控制台并选择您的应用程序;示例:

    企业应用程序 > my_application_ear > 类加载器并更改“类加载器顺序和 WAR 类加载器策略”

    【讨论】:

    • 问题是 - 如何设置它在 Eclipse,而不是通过管理控制台,所以你的答案是不相关的。它已经在问题中作为选项 1) 进行了讨论。
    【解决方案3】:

    在eclipse中打开管理控制台点击服务器>>你的服务器>>向下滚动并在服务器基础架构下>>java进程管理选择类加载器>>选择新的你可以在这里改变它

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2018-07-17
      • 2018-04-10
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多