diff --git a/pom.xml b/pom.xml index 8a585a2b..3a19acc8 100644 --- a/pom.xml +++ b/pom.xml @@ -232,9 +232,9 @@ - javax.servlet + org.mortbay.jetty servlet-api - 2.5 + 3.0.20100224 provided @@ -247,11 +247,23 @@ javax.servlet.jsp.jstl jstl-api 1.2 - + + + servlet-api + javax.servlet + + + org.glassfish.web jstl-impl 1.2 + + + servlet-api + javax.servlet + + @@ -483,7 +495,10 @@ org.apache.maven.plugins maven-war-plugin 2.1.1 - + + false + + com.googlecode.t7mp @@ -594,5 +609,4 @@ file://${user.home}/local-maven-publish-repository - - \ No newline at end of file + diff --git a/src/main/java/com/springsource/greenhouse/config/GreenhouseWebAppInitializer.java b/src/main/java/com/springsource/greenhouse/config/GreenhouseWebAppInitializer.java new file mode 100644 index 00000000..ee304813 --- /dev/null +++ b/src/main/java/com/springsource/greenhouse/config/GreenhouseWebAppInitializer.java @@ -0,0 +1,89 @@ +/* + * Copyright 2002-2011 the original author or authors. + * + * 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.springsource.greenhouse.config; + +import java.util.Set; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.filter.DelegatingFilterProxy; +import org.springframework.web.filter.HiddenHttpMethodFilter; +import org.springframework.web.flash.FlashMapFilter; +import org.springframework.web.servlet.DispatcherServlet; + +/** + * Code-based alternative to web.xml for use within Servlet 3.0+ environments. See + * {@link WebApplicationInitializer} Javadoc for complete details. + * + * @author Chris Beams + */ +public class GreenhouseWebAppInitializer implements WebApplicationInitializer { + + /** + * Register and configure all Servlet container components necessary to power the + * Greenhouse web application. + */ + @Override + public void onStartup(ServletContext sc) throws ServletException { + System.out.println("GreenhouseWebAppInitializer.onStartup()"); + + // Create the 'root' Spring application context + AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); + root.scan("com.springsource.greenhouse.config"); + root.getEnvironment().setDefaultProfiles("embedded"); + + // Manages the lifecycle of the root application context + sc.addListener(new ContextLoaderListener(root)); + + // Allows attributes to be accessed on the next request + sc.addFilter("flashMapFilter", FlashMapFilter.class) + .addMappingForUrlPatterns(null, false, "/*"); + + // Enables support for DELETE and PUT request methods with web browser clients + sc.addFilter("hiddenHttpMethodFilter", HiddenHttpMethodFilter.class) + .addMappingForUrlPatterns(null, false, "/*"); + + // Secures the application + sc.addFilter("securityFilter", new DelegatingFilterProxy("springSecurityFilterChain")) + .addMappingForUrlPatterns(null, false, "/*"); + + // Handles requests into the application + ServletRegistration.Dynamic appServlet = + sc.addServlet("appServlet", new DispatcherServlet(new GenericWebApplicationContext())); + appServlet.setLoadOnStartup(1); + Set mappingConflicts = appServlet.addMapping("/"); + if (!mappingConflicts.isEmpty()) { + throw new IllegalStateException("'appServlet' could not be mapped to '/' due " + + "to an existing mapping. This is a known issue under Tomcat versions " + + "<= 7.0.14; see https://issues.apache.org/bugzilla/show_bug.cgi?id=51278"); + } + + // H2 Database Console for managing the app's database + ServletRegistration.Dynamic h2Servlet = + sc.addServlet("H2Console", org.h2.server.web.WebServlet.class); + h2Servlet.setInitParameter("webAllowOthers", "true"); + h2Servlet.setLoadOnStartup(2); + h2Servlet.addMapping("/admin/h2/*"); + } + +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index b756f7cc..00000000 --- a/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - contextClass - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - - - - - contextConfigLocation - com.springsource.greenhouse.config - - - - - spring.profiles.default - embedded - - - - - org.springframework.web.context.ContextLoaderListener - - - - - flashMapFilter - org.springframework.web.flash.FlashMapFilter - - - - flashMapFilter - /* - - - - - hiddenHttpMethodFilter - org.springframework.web.filter.HiddenHttpMethodFilter - - - - hiddenHttpMethodFilter - /* - - - - - securityFilter - org.springframework.web.filter.DelegatingFilterProxy - - targetBeanName - springSecurityFilterChain - - - - - securityFilter - /* - - - - - H2Console - org.h2.server.web.WebServlet - - -webAllowOthers - true - - 2 - - - - H2Console - /admin/h2/* - - - - - appServlet - org.springframework.web.servlet.DispatcherServlet - - - contextConfigLocation - - - 1 - - - - appServlet - / - - - \ No newline at end of file