2015-11-09 4 views
0

Я написал пользовательский посредник класса, но у меня возникли проблемы с его развертыванием в моем esb, когда я скомпилирую свой код с помощью плагина maven shade. Мне нужно скомпилировать мой класс посредника в банке, содержащей все ее зависимости. Вот трассировки стека для ошибки:wso2esb пользовательский класс посредника исключение литья

[2015-11-09 10:01:28,088] ERROR - ClassMediatorFactory Error : com.solers.espds.util.messaging.mediators.FastTrackMediator 
java.lang.ClassCastException: com.test.FastTrackMediator cannot be cast to org.apache.synapse.Mediator 
    at org.apache.synapse.config.xml.ClassMediatorFactory.createSpecificMediator(ClassMediatorFactory.java:71) 
    at org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:91) 
    at org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:223) 
    at org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:41) 
    at org.apache.synapse.config.xml.SequenceMediatorFactory.createAnonymousSequence(SequenceMediatorFactory.java:70) 
    at org.apache.synapse.config.xml.ProxyServiceFactory.createProxy(ProxyServiceFactory.java:178) 
    at org.apache.synapse.config.xml.SynapseXMLConfigurationFactory.defineProxy(SynapseXMLConfigurationFactory.java:142) 
    at org.apache.synapse.config.xml.MultiXMLConfigurationBuilder.createProxyServices(MultiXMLConfigurationBuilder.java:239) 
    at org.apache.synapse.config.xml.MultiXMLConfigurationBuilder.getConfiguration(MultiXMLConfigurationBuilder.java:132) 
    at org.apache.synapse.config.SynapseConfigurationBuilder.getConfiguration(SynapseConfigurationBuilder.java:100) 
    at org.apache.synapse.Axis2SynapseController.createSynapseConfiguration(Axis2SynapseController.java:479) 
    at org.wso2.carbon.mediation.initializer.CarbonSynapseController.createSynapseConfiguration(CarbonSynapseController.java:169) 
    at org.apache.synapse.ServerManager.start(ServerManager.java:177) 
    at org.wso2.carbon.mediation.initializer.ServiceBusInitializer.initESB(ServiceBusInitializer.java:424) 
    at org.wso2.carbon.mediation.initializer.ServiceBusInitializer.activate(ServiceBusInitializer.java:182) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
    at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
    at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
    at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451) 
    at org.wso2.carbon.event.core.internal.builder.EventBrokerHandler.startEventBroker(EventBrokerHandler.java:58) 
    at org.wso2.carbon.event.core.internal.builder.EventBrokerBuilderDS.activate(EventBrokerBuilderDS.java:72) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
    at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
    at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
    at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:451) 
    at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:517) 
    at org.wso2.carbon.core.init.CarbonServerManager.start(CarbonServerManager.java:219) 
    at org.wso2.carbon.core.internal.CarbonCoreServiceComponent.activate(CarbonCoreServiceComponent.java:77) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponent.activate(ServiceComponent.java:260) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.activate(ServiceComponentProp.java:146) 
    at org.eclipse.equinox.internal.ds.model.ServiceComponentProp.build(ServiceComponentProp.java:347) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponent(InstanceProcess.java:620) 
    at org.eclipse.equinox.internal.ds.InstanceProcess.buildComponents(InstanceProcess.java:197) 
    at org.eclipse.equinox.internal.ds.Resolver.getEligible(Resolver.java:343) 
    at org.eclipse.equinox.internal.ds.SCRManager.serviceChanged(SCRManager.java:222) 
    at org.eclipse.osgi.internal.serviceregistry.FilteredServiceListener.serviceChanged(FilteredServiceListener.java:107) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:861) 
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230) 
    at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEventPrivileged(ServiceRegistry.java:819) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.publishServiceEvent(ServiceRegistry.java:771) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.register(ServiceRegistrationImpl.java:130) 
    at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.registerService(ServiceRegistry.java:214) 
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.registerService(BundleContextImpl.java:433) 
    at org.eclipse.equinox.http.servlet.internal.Activator.registerHttpService(Activator.java:81) 
    at org.eclipse.equinox.http.servlet.internal.Activator.addProxyServlet(Activator.java:60) 
    at org.eclipse.equinox.http.servlet.internal.ProxyServlet.init(ProxyServlet.java:40) 
    at org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.init(DelegationServlet.java:38) 
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1267) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1186) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1081) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    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:745) 

Вот мой класс:

import org.apache.synapse.ManagedLifecycle; 
import org.apache.synapse.MessageContext; 
import org.apache.synapse.core.SynapseEnvironment; 
import org.apache.synapse.mediators.AbstractMediator; 

public class FastTrackMediator extends AbstractMediator implements ManagedLifecycle { 
    public boolean mediate(MessageContext messageContext) { 
     log.info("Hello, world!"); 

     return true; 
    } 

    public void init(SynapseEnvironment synapseEnvironment) { 

    } 

    public void destroy() { 

    } 
} 

Вот мой ПОМ:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.test</groupId> 
    <artifactId>fast-track-mediator</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <name>Fast Track Mediator</name> 

    <repositories> 
     <repository> 
      <releases> 
       <updatePolicy>daily</updatePolicy> 
      </releases> 
      <id>wso2-nexus</id> 
      <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.synapse</groupId> 
      <artifactId>synapse-core</artifactId> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <relocations> 
           <relocation> 
           <pattern>org.apache.synapse</pattern> 
           <shadedPattern>org.apache.synapse.shaded</shadedPattern> 
           </relocation> 
          </relocations> 
          <artifactSet> 
           <excludes> 

           <exclude>net.sf.saxon:*</exclude> 
           </excludes> 

          </artifactSet> 
          </configuration> 

        </execution> 
       </executions> 
       <configuration> 
        <finalName>uber-${artifactId}-${version}</finalName> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.apache.synapse</groupId> 
       <artifactId>synapse-core</artifactId> 
       <version>2.1.2-wso2v4</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
</project> 

Я представляю себе эту ошибку результат OSGI загрузки некоторые классы дважды, но я не могу понять, как исправить эту проблему. Спасибо

+0

Попробуйте исключить зависимости синапсов от затененной банки. Вероятно, это причина, по которой вы получаете исключение класса. –

ответ

0

Попытался воспроизвести вашу проблему. но не мог. он правильно построен для меня и генерирует файл jar. я подозреваю, что проблема связана с вашей средой. выполните следующие шаги и посмотрите.

Использование WSO2 Developer студия 3,8 (лучше попробовать это на новом рабочем пространстве)

  1. Создание нового проекта модуля Maven Multi.
  2. Создать новое ESB конфигурации проект внутри несколько модулей проекта
  3. создать пустую последовательность в стороне проект (только для обнаружения для развертывания)
  4. Создать новый посредник проект внутри несколько модулей проекта
  5. создать свой класс и реализовать, как вы сделал.
  6. создать новый композиционный проект приложения на одной рабочей области и выберите оба проект в этом составного проект

Теперь вы сделали.

теперь переходит к тому же месту, где Maven несколько П файла модуль проекта существует из вашей команды оперативного

mvn clean install 

вы можете увидеть его сборку без ошибок.

Maven многомодульный П (автогенерируемый)

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.krishantha.sample</groupId> 
    <artifactId>MavenParentProject</artifactId> 
    <version>1.0.0</version> 
    <packaging>pom</packaging> 
    <name>MavenParentProject</name> 
    <description>MavenParentProject</description> 
    <modules> 
    <module>MediatorSampleProject</module> 
    <module>SampleMediator</module> 
    </modules> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-eclipse-plugin</artifactId> 
     <version>2.9</version> 
     <configuration> 
      <buildcommands /> 
      <projectnatures> 
      <projectnature>org.wso2.developerstudio.eclipse.mavenmultimodule.project.nature</projectnature> 
      </projectnatures> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

код класс Посредник:

package com.wso2; 

import org.apache.synapse.ManagedLifecycle; 
import org.apache.synapse.MessageContext; 
import org.apache.synapse.core.SynapseEnvironment; 
import org.apache.synapse.mediators.AbstractMediator; 

public class FastTrackMediator extends AbstractMediator implements ManagedLifecycle { 

    public boolean mediate(MessageContext messageContext) { 
     log.info("Hello, world!"); 

     return true; 
    } 

    public void init(SynapseEnvironment synapseEnvironment) { 

    } 

    public void destroy() { 

    } 
} 

банка файл, созданного

Krishanthas-MacBook-Pro:MavenParentProject krishantha$ find . -iname *.jar 
./SampleMediator/target/SampleMediator-1.0.0.jar 
Krishanthas-MacBook-Pro:MavenParentProject krishantha$ 

структуры проекта должен выглядеть следующим образом enter image description here

+0

Ящик правильно строит для меня, но ошибки времени выполнения появляются из-за исключения класса, когда я включаю зависимости синапсов в моем сгенерированном банке. Полагаю, мне придется покинуть зависимости. – IWantMoore

+0

есть ли какое-либо конкретное требование для добавления зависимостей синапсов к вашей банке? –

Смежные вопросы