Проблема при развертывании пользовательских посредников в WSO2 ESB.Hi

Я создал собственный посредник. когда я развертываю банку в папке /repository/components/lib, она выдает следующее исключение. Пожалуйста, проверьте код и исключение ниже.

Я скопировал synapse-core_2.1.2.wso2v2 в component/lib/component/dropins, но это не помогло. Я не думаю, что мне нужно копировать эти библиотеки, так как они являются основными библиотеками, которые являются частью WSO2 ESB.

Может ли кто-нибудь помочь нам, почему он выдает это исключение? Я создал этих посредников в студии разработчиков и создал банку. Он должен развернуться без каких-либо проблем.

Код:

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

person Raveesh    schedule 10.03.2016    source источник


Ответы (2)


Ваш пользовательский jar-файл переходит в репозиторий/components/lib только в том случае, если вы разработали собственный посредник класса.

Если вы разработали настоящий посредник (с определенным именем, которое вы можете использовать внутри своего посредничества, и это сериализатор и фабрика, а также записи MediatorFactory и MediatorSerializer в META-INF/services), вы должны создать банку с maven-bundle -plugin, которые идут в репозиторий/components/dropins

person Jean-Michel    schedule 11.03.2016
comment
Спасибо за ответ Мишель. Ценится. - person Raveesh; 14.03.2016
comment
Axis2MessageContext — это системный класс из библиотеки synapse-core_2.1.2.wso2v4.jar. Этот jar уже присутствует в папке patches. Я удалил эти системные файлы jar из папок dropins и lib и перезапустил ESB, но все равно получаю это исключение. Это связано с конфликтом банок? Как решить эту проблему? - person Raveesh; 14.03.2016
comment
Просто чтобы уточнить, «Axis2MessageContext» упоминается в моем посреднике класса. - person Raveesh; 14.03.2016
comment
Я использую Axis2MessageContext в пользовательском посреднике (настоящем посреднике, а не посреднике класса) без проблем в ESB v4.8.1. Я могу найти этот класс в репозитории/компонентах/плагинах/synapse-core_2.1.2.wso2v4.jar. JAR-файл, который вы можете найти в каталогах patchxxxx, копируется ESB в компоненты/плагины при запуске. Мой пользовательский посредник находится в банке, созданной в командной строке с помощью maven, не может помочь вам со студией разработчика, извините. - person Jean-Michel; 14.03.2016
comment
Спасибо, Мишель. Похоже, это связано с конфликтами версий Jars. - person Raveesh; 15.03.2016
comment
Я использовал WSo2 ESB 4.9.0 вместо 4.8.1. Проблема решена. - person Raveesh; 15.03.2016

Я использовал WSo2 ESB 4.9.0 вместо 4.8.1. Проблема решена.

person Raveesh    schedule 15.03.2016