package me.j360.boot.advance;
import org.apache.activemq.ActiveMQXAConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.catalina.Context;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.ErrorPage;
import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.boot.context.embedded.ServletContextInitializer;
import org.springframework.boot.context.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.boot.jta.atomikos.AtomikosDataSourceBean;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.http.HttpStatus;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.SessionRepositoryFilter;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.filter.DelegatingFilterProxy;
import redis.clients.jedis.JedisPoolConfig;
import javax.jms.Queue;
import javax.jms.Session;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import java.util.Arrays;
import java.util.Properties;
/**
* Created with j360-boot -> me.j360.springboot.simple.
* User: min_xu
* Date: 2015/7/29
* Time: 10:18
* 说明:等同于SpringContext.xml作用
* 1、使用SpringBootServletInitializer spring boot封装的入口
* 2、使用WebMvcConfigurerAdapter spring mvc的入口,需要自己去封装
*/
@EntityScan("me.j360")
@ComponentScan("me.j360")
@EnableAutoConfiguration
@Configuration
@EnableTransactionManagement
@EnableRedisHttpSession
public class J360MainConfiguration extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(J360MainConfiguration.class);
}
@Autowired
private DataSource dataSource;
private CharacterEncodingFilter characterEncodingFilter() {
final CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return characterEncodingFilter;
}
@Bean
public FilterRegistrationBean j360FilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(characterEncodingFilter());
return registration;
}
@Bean
public ServletContextInitializer initializer() {
return new ServletContextInitializer() {
public void onStartup(ServletContext servletContext) throws ServletException {
}
};
}
//此处需要配置Jedis信息,默认的是本地的localhost
//@Bean
public JedisConnectionFactory connectionFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
return new JedisConnectionFactory(jedisPoolConfig);
}
}