/** * Copyright (C) 2015 Orange * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.francetelecom.clara.cloud.webapp.config; import org.apache.wicket.protocol.http.WicketFilter; import org.apache.wicket.spring.SpringWebApplicationFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; import org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ImportResource; import org.springframework.stereotype.Component; import org.springframework.web.filter.DelegatingFilterProxy; import javax.annotation.PreDestroy; import javax.servlet.*; import java.util.Arrays; import java.util.Map; /** * Created by wooj7232 on 09/01/2015. */ @SpringBootApplication(exclude={/*ManagementSecurityAutoConfiguration.class,SecurityAutoConfiguration.class,*/ /*RabbitAutoConfiguration.class,*/JmsAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class,DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class, FreeMarkerAutoConfiguration.class}) // No qualifying bean of type [javax.sql.DataSource] is defined: expected single matching bean but found 2: postgres-activiti-paas,postgres-db-paas // DataSourceTransactionManagerAutoConfiguration.class,DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class // NoUniqueBeanDefinitionException: No qualifying bean of type [javax.jms.ConnectionFactory] is defined: expected single matching bean but found 2: jmsConnectionFactory,asyncTaskHandlingConnectionFactory // JmsAutoConfiguration // Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Cannot find template location(s): [classpath:/templates/] (please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false) // FreeMarkerAutoConfiguration @Component @ImportResource({"/WEB-INF/spring-config/application-context.xml"}) public class ElPaaSoWebApplication extends SpringBootServletInitializer { private static final Logger LOGGER = LoggerFactory.getLogger(ElPaaSoWebApplication.class); @Value("${application.context.location}") String applicationContextFilename; public static void main(String[] args) { SpringApplication.run(ElPaaSoWebApplication.class); } @Autowired ApplicationContext applicationContext; /** * spring boot war */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(ElPaaSoWebApplication.class); } // <!-- Spring param --> // <context-param> // <param-name>contextConfigLocation</param-name> // <param-value> // ${application.context} // /WEB-INF/spring-config/security-app-context.xml // </param-value> // </context-param> // // // <listener> // <display-name>spring context loader</display-name> // <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> // </listener> // // <!-- spring security filter --> // <filter> // <filter-name>springSecurityFilterChain</filter-name> // <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> // </filter> // <filter-mapping> // <filter-name>springSecurityFilterChain</filter-name> // <url-pattern>/*</url-pattern> // </filter-mapping> // <session-config> // <cookie-config> // <http-only>true</http-only> // </cookie-config> // </session-config> @Override public void onStartup(ServletContext context) throws ServletException { LOGGER.info("Initializing ElPaaSo"); SessionCookieConfig cookieConfig = context.getSessionCookieConfig(); cookieConfig.setHttpOnly(true); super.onStartup(context); dumpServletContext(context); } private void dumpServletContext(ServletContext context) { Map<String, ? extends ServletRegistration> servletRegistrations = context.getServletRegistrations(); LOGGER.info("Dump Servlets:"); for (Map.Entry<String, ? extends ServletRegistration> entry : servletRegistrations.entrySet()) { LOGGER.info("Servlet: {} - {}", entry.getKey(),entry.getValue().getClassName()); Map<String, String> initParams = entry.getValue().getInitParameters(); for (Map.Entry<String, String> aParam : initParams.entrySet()) { LOGGER.info("Servlet {} param {} - {}", entry.getKey(),aParam.getKey(),aParam.getValue()); } } Map<String, ? extends FilterRegistration> filters = context.getFilterRegistrations(); LOGGER.info("Dump filters:"); for (Map.Entry<String, ? extends FilterRegistration> aFilterEntry : filters.entrySet()) { LOGGER.info("Filter: {} - {}", aFilterEntry.getKey(), aFilterEntry.getValue().getClassName(),aFilterEntry.getValue().getUrlPatternMappings().toArray()); Map<String, String> initParams = aFilterEntry.getValue().getInitParameters(); for (Map.Entry<String, String> aParam : initParams.entrySet()) { LOGGER.info("Filter {} param {} - {}", aFilterEntry.getKey(),aParam.getKey(),aParam.getValue()); } } } @PreDestroy public void onShutdown(){ LOGGER.info("Elpaaso is shutting down now!!!"); } }