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

在WSO2 ESB.Hi中部署自定义中介时出现问题,wso2,esb,classnotfound,Wso2,Esb,Classnotfound,我已经创建了一个自定义中介。当我在/repository/components/lib文件夹中部署jar时,它会引发以下异常。请检查下面的代码和异常 我在component/lib/component/dropins中复制了synapse-core_2.1.2.wso2v2,但这没有帮助。我不认为我需要复制这些库,因为它们是WSO2 ESB的核心库 有人能帮助我们为什么抛出这个异常吗?我在developer studio中创建了这个中介,并创建了jar。它应该毫无问题地部署 代码: 例外情况:

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

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

有人能帮助我们为什么抛出这个异常吗?我在developer studio中创建了这个中介,并创建了jar。它应该毫无问题地部署

代码:

例外情况:

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


如果您已经开发了一个真正的中介(有一个可以在中介中使用的特定名称,它是serializer&factory,它在META-INF/services中的条目MediatorFactory&MediatorSerializer),那么您必须生成一个带有maven bundle插件的jar,该插件可以转到repository/components/dropins

我使用的是WSo2 ESB 4.9.0,而不是4.8.1。问题解决了

谢谢你的回复,米歇尔。Axis2MessageContext是synapse-core_2.1.2.wso2v4.jar库中的一个系统类。此jar已存在于修补程序文件夹中。我已经从dropins和lib文件夹中删除了这个系统jar,并重新启动了ESB,但仍然出现了这个异常。是否与jars冲突有关?如何解决这个问题?只是为了澄清一下,Axis2MessageContext在我的类中介中引用。我在ESB v4.8.1中的自定义中介(真正的中介,而不是类中介)中使用Axis2MessageContext没有问题。我可以在repository/components/plugins/synapse-core_2.1.2.wso2v4.jar中找到这个类。启动时,ESB将在“patchxxxx”目录中找到的jar复制到组件/插件中。我的自定义中介器位于maven在commande line中制作的罐子中,无法帮助您使用developer studio,抱歉。谢谢Michel。看起来,这与Jars版本冲突有关。
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