2015-11-09 39 views
0

我寫了一個自定義類調停,但我有麻煩在我的ESB部署它,當我編譯使用maven的樹蔭插件我的代碼。我需要編譯包含其所有相關的罐子我的中介類。下面是錯誤的堆棧跟蹤: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() { 

    } 
} 

這裏是我的POM:

<?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 Studio中3.8 (最好嘗試這種新的工作空間)

  1. 創建新的Maven多模塊項目。
  2. 創建多模塊項目
  3. 在側創建空序列內的項目新的ESB配置項目(只是爲了檢測部署)
  4. 創建多模塊項目中新的調停項目
  5. 創建類,並實現你沒有。
  6. 創建同一個工作區新型複合材料的應用項目,並選擇您的這兩個項目到複合材料項目

現在你做。

現在走到哪裏Maven的多模塊項目POM文件從命令提示符

mvn clean install 

你可以看到它的構建沒有錯誤存在同一個地方。

Maven的多模塊POM(自動生成)

<?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() { 

    } 
} 

jar文件創建

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

該jar也爲我正確構建,但是當我在生成的jar中包含突觸依賴項時,由於類轉換異常而出現運行時錯誤。我想我將不得不放棄依賴。 – IWantMoore

+0

有突觸的依賴添加到您的罐子任何具體的要求? –