在WSO2 ESB.Hi中部署自定义介体时出现问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WSO2 ESB.Hi中部署自定义介体时出现问题相关的知识,希望对你有一定的参考价值。

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

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

有人可以帮助我们为什么会抛出这个例外吗?我在developer studio中创建了这个Mediators并创建了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
答案

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

如果您已经开发了一个真正的中介(具有您可以在中介中使用的特定名称,它是序列化程序和工厂,并且它'在META-INF / services中输入MediatorFactory和MediatorSerializer),您必须生成一个带有maven-bundle的jar -plugin转到repository / components / dropins

另一答案

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

以上是关于在WSO2 ESB.Hi中部署自定义介体时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

属性文件中的WSO2属性介体值

从 Dynamics 365 运行自定义工作流时出现 2 分钟超时问题

如何自定义 wso2is PAP?

Wso2 apim 自定义指标

将 Keycloak 用作 WSO2 身份服务器的联合身份提供者时出现 SSL 错误

WSO2IS 5.10 自定义 JWT 令牌颁发者未在服务提供者配置中列出