在 WSO2ESB 类调解器中进行策略交集
Posted
技术标签:
【中文标题】在 WSO2ESB 类调解器中进行策略交集【英文标题】:Do Policy Intersection in WSO2ESB Class Mediator 【发布时间】:2012-08-07 11:37:58 【问题描述】:我创建了一个类调解器,我想在其中交叉两个策略。我已经使用 Carbon Studio for Eclipse 创建了 Class Mediator,它会自动将一些预定义的库添加到我的项目的构建路径中。
其中一个库是 neethi-2.0.4.wso2v1.jar。
如果我想使用 intersect-method 我得到一个异常。如果我查看源代码,我发现 intersect-method 只会抛出“UnsupportedOperationException”。
所以给定的 neethi 库对于交集没有用,因此我想在我的类调解器中使用最新的 Neethi 库(又名 neethi-3.0.2.lib)作为交集。
你能告诉我如何包含第三方库,尤其是在我的用例中,这些库应该覆盖曾经在 esb 中使用过的库(neethi-2.0.4.wso2v1.jar)。
谢谢
【问题讨论】:
【参考方案1】:Developer Studio 将这些库添加到您的项目类路径中,这样开发人员就不会在源代码中遇到构建错误。
因此,这些库仅适用于开发时间,并且仅适用于 Dev Studio。它们不是服务器运行时使用的库。
运行时库由 WSO2 Carbon Server 运行时提供。所以这个UnsupportedOperationException被服务器抛出是由于服务器中的neethi版本不支持它而发生的。所以你需要在服务器运行时升级库。
但正如您所见,WSO2 已经对 neethi 代码库进行了分叉,并在分叉的源代码上进行了一些自定义实现。因此,IMO,仅升级版本无济于事。
无论如何,您需要实际升级库,看看您是否遇到任何问题。
要升级版本,您可以为较新的 Neethi 库创建 Java 库工件并将其包含在 CAR 文件中并部署 CAR 文件,或者在服务器运行时将新的 Neethi 库复制到 <CARBON_HOME>/repository/components/lib
位置。
您可以在<CARBON_HOME>/repository/components/plugins
位置找到当前的 Neethi 库。如果您发现一些类似于“链接错误”的错误或异常,请尝试删除旧版本的库。但它会导致一些其他异常。
所以 IMO 的底线是,您将面临版本升级的一些问题。但是是的,当然你可以试一试,看看我们是否能克服它们。试一试,并在此处发布您的观察结果。我们会尽力为您提供帮助。
【讨论】:
您好,我知道 carbon studio 中的库仅在开发时添加,因此尝试将 Neethi-3.0.2 库添加到 ESB。我将更详细地解释我所做的步骤首先,Neethi-2.0.4.wso2v3 不仅支持交集,还支持策略的规范化(参见mail.wso2.org/mailarchive/carbon-dev/2011-August/066825.html)。 因此,如果尝试仅使用规范化(不是相交方法)使用原始 neethi-2.0.4.wso2v3.jar 运行我的类调解器,我会得到:NoSuchMethodError: org.apache.neethi.Policy。规范化(Z)Lorg/apache/neethi/Policy;。然后我将 Neethi-3.0.2.jar 添加到以上是关于在 WSO2ESB 类调解器中进行策略交集的主要内容,如果未能解决你的问题,请参考以下文章