Camel context started twice spring mvc java config -


i have project spring mvc camel without xml config file.

my problem there 2 context : spring root webapplicationcontext , spring frameworkservlet 'dispatcher', , camel context created on every context (camel-1 , camel-2), same routes. thus, if stop or suspend 1 route, stopped or suspended on 1 context (webapplicationcontext). have context camel once. how can ?

applicationconfiguration.java

package sal.sfs.configuration;      import sal.sfs.security.sfssessioninfo;     import org.springframework.context.annotation.bean;     import org.springframework.context.annotation.componentscan;     import org.springframework.context.annotation.configuration;     import org.springframework.context.annotation.import;     import org.springframework.context.annotation.propertysource;     import org.springframework.web.servlet.viewresolver;     import org.springframework.web.servlet.config.annotation.enablewebmvc;     import org.springframework.web.servlet.config.annotation.resourcehandlerregistry;     import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter;     import org.springframework.web.servlet.view.internalresourceviewresolver;      @configuration     @enablewebmvc     @componentscan(basepackages = "sal.sfs")     @propertysource(value = {"classpath:sfs.properties"})     @import({persistenceconfiguration.class, securityconfiguration.class, sfscamelconfiguration.class})     public class applicationconfiguration extends webmvcconfigureradapter {          @bean(name = "sfs")         public viewresolver viewresolver() {             internalresourceviewresolver viewresolver = new internalresourceviewresolver();             viewresolver.setsuffix(".zul");             return viewresolver;         }          /*          * configure resourcehandlers serve static resources css/ javascript etc...          */         @override         public void addresourcehandlers(resourcehandlerregistry registry) {             registry.addresourcehandler("/css/**").addresourcelocations("/css/");             registry.addresourcehandler("/img/**").addresourcelocations("/img/");         }      } 

sfscamelconfiguration.java

package sal.sfs.configuration;  import java.util.list; import javax.annotation.resource; import org.apache.camel.route; import org.apache.camel.spring.javaconfig.camelconfiguration; import org.apache.camel.spring.spi.springtransactionpolicy; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.componentscan; import org.springframework.context.annotation.configuration; import org.springframework.context.annotation.import;  @configuration @componentscan("sal.sfs.camel") @import(persistenceconfiguration.class) public class sfscamelconfiguration extends camelconfiguration {      @resource     persistenceconfiguration persistenceconfiguration;      @bean     public springtransactionpolicy cameltransactionpolicy() {         springtransactionpolicy springtransactionpolicy = new springtransactionpolicy();         springtransactionpolicy.settransactionmanager(persistenceconfiguration.transactionmanager(persistenceconfiguration.entitymanagerfactory().getobject()));         springtransactionpolicy.setpropagationbehaviorname("propagation_required");         return springtransactionpolicy;     }  } 

securitywebapplicationinitializer.java

package civadis.salaires.sfs.configuration;  import org.springframework.security.web.context.abstractsecuritywebapplicationinitializer;  public class securitywebapplicationinitializer extends abstractsecuritywebapplicationinitializer {  } 

springmvcinitializer.java

package sal.sfs.configuration;  import javax.servlet.filter; import org.springframework.orm.jpa.support.openentitymanagerinviewfilter; import org.springframework.web.servlet.support.abstractannotationconfigdispatcherservletinitializer;  public class springmvcinitializer extends abstractannotationconfigdispatcherservletinitializer {      @override     protected class<?>[] getrootconfigclasses() {         return new class[]{applicationconfiguration.class};     }      @override     protected class<?>[] getservletconfigclasses() {         return new class[]{applicationconfiguration.class};     }      @override     protected string[] getservletmappings() {         return new string[]{"/", "*"};     }       /*     have registered openentitymanagerinviewfilter enable lazy loading of jpa entity graphs in view rendering phase     */     @override     protected filter[] getservletfilters() {        return new filter[]{              new openentitymanagerinviewfilter()         };     }     } 

it's ok if change getservletconfigclasses() :

public class springmvcinitializer extends abstractannotationconfigdispatcherservletinitializer {  ...     @override     protected class<?>[] getservletconfigclasses() {         return null;     } ... } 

Comments