【发布时间】:2016-08-01 12:02:30
【问题描述】:
我有一个没有任何xml配置文件的camel项目spring mvc。
我的问题是有两个上下文:Spring root WebApplicationContext 和 Spring FrameworkServlet 'dispatcher',并且在每个上下文(camel-1 和 camel-2)上创建一个骆驼上下文,具有相同的路由。因此,如果我停止或暂停一条路线,她只会在一个上下文 (WebApplicationContext) 上停止或暂停。我只想拥有一次上下文骆驼。我该怎么办?
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 to serve static resources like 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[]{"/", "*"};
}
/*
Also we have registered OpenEntityManagerInViewFilter to enable lazy loading of JPA entity graphs in view rendering phase
*/
@Override
protected Filter[] getServletFilters() {
return new Filter[]{
new OpenEntityManagerInViewFilter()
};
}
}
【问题讨论】:
-
你使用什么版本的骆驼?尝试最新版本
-
嗨,克劳斯,我使用最新版本的骆驼 2.17.2 和 spring 版本 4.2.5。
标签: apache-camel spring-java-config