【问题标题】:Issue when deploying custom mediators in WSO2 ESB.Hi在 WSO2 ESB.Hi 中部署自定义中介时的问题
【发布时间】:2023-04-06 12:54:01
【问题描述】:

我创建了一个自定义中介。当我在 /repository/components/lib' 文件夹中部署 jar 时,它会引发以下异常。请检查下面的代码和异常。

我在 component/lib /component/dropins 中复制了 synapse-core_2.1.2.wso2v2,但这没有帮助。我认为我不需要复制这些库,因为它们是 WSO2 ESB 的核心库。

有人可以帮助我们为什么抛出这个异常吗?我在开发人员工作室中创建了这个中介并创建了 jar。它应该毫无问题地部署。

代码:

public boolean mediate(MessageContext synCtx) { 

    SynapseLog synLog = getLog(synCtx);

    if (synLog.isTraceOrDebugEnabled()) {
        synLog.traceOrDebug("Start : Cache mediator");

        if (synLog.isTraceTraceEnabled()) {
            synLog.traceTrace("Message : " + synCtx.getEnvelope());
        }
    }

    ConfigurationContext cfgCtx =
            ((Axis2MessageContext) synCtx).getAxis2MessageContext().getConfigurationContext();

例外:

java.lang.NoClassDefFoundError: org/apache/synapse/core/axis2/Axis2MessageContext
        at com.span.custom.cache.DistributedCacheMediator.mediate(DistributedCacheMediator.java:82)
        at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator.java:78)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:77)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:47)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:131)
        at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:166)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
        at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:411)
        at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183)
        at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: org.apache.synapse.core.axis2.Axis2MessageContext
        at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
        at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
        at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
        ... 13 more

【问题讨论】:

    标签: wso2 esb classnotfound


    【解决方案1】:

    仅当您开发了自定义类中介时,您的自定义 jar 才会转到 repository/components/lib

    如果您已经开发了一个真正的中介(具有可以在中介中使用的特定名称,它是序列化程序和工厂,它是 META-INF/services 中的 MediatorFactory 和 MediatorSerializer 条目),您必须生成一个带有maven-bundle-plugin 去存储库/组件/dropins

    【讨论】:

    • 感谢米歇尔的回复。赞赏。
    • Axis2MessageContext 是来自 synapse-core_2.1.2.wso2v4.jar 库的系统类。这个 jar 已经存在于补丁文件夹中。我已经从 dropins 和 lib 文件夹中删除了这个系统 jars 并重新启动了 ESB,但我仍然得到这个异常。它与罐子冲突有关吗?如何解决这个问题?
    • 澄清一下,“Axis2MessageContext”在我的 Class 调解器中被引用。
    • 我在 ESB v4.8.1 中的自定义中介(真正的中介,而不是类中介)中使用 Axis2MessageContext 没有问题我可以在 repository/components/plugins/synapse-core_2.1.2.wso2v4 中找到这个类。罐。您可以在“patchxxxx”目录中找到的 jar 在启动时由 ESB 复制到组件/插件中。我的自定义调解器位于使用 maven 命令行制作的 jar 中,无法帮助您开发开发人员工作室,抱歉。
    • 谢谢米歇尔。看起来,这与 Jars 版本冲突有关。
    【解决方案2】:

    我使用 WSo2 ESB 4.9.0 而不是 4.8.1。问题已解决。

    【讨论】:

      猜你喜欢
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      相关资源
      最近更新 更多