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
Post a Comment