Announcement Announcement Module
Collapse
No announcement yet.
Spring 3.1.1 java based configuration issue of [HTTP Status 404] Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spring 3.1.1 java based configuration issue of [HTTP Status 404]

    I have been using the new feature of Spring 3.1.1 the "java based configuration".
    I have faced an issue while creating a small demo to test that new concept.

    When I deploy my "springway.war" over tomcat and request "http://localhost:8080/springway/" --> I got "HTTP Status 404"

    I am sure that I missing something but I couldn't figure it out .
    I have been looking at the "GreenHouse" example that is over Spring site but I still get the same issue.

    Here is my WebConfig.java :

    Code:
       package config;
        
        import java.util.List;
        
        import javax.inject.Inject;
        
        import org.springframework.context.annotation.Bean;
        import org.springframework.context.annotation.Configuration;
        import org.springframework.context.support.ReloadableResourceBundleMessageSource;
        import org.springframework.core.env.Environment;
        import org.springframework.http.converter.HttpMessageConverter;
        import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
        
        import org.springframework.validation.Validator;
        import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
        
        import org.springframework.web.multipart.MultipartResolver;
        import org.springframework.web.multipart.commons.CommonsMultipartResolver;
        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.WebMvcConfigurer;
        import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
        import org.springframework.web.servlet.view.UrlBasedViewResolver;
        import org.springframework.web.servlet.view.tiles2.TilesConfigurer;
        import org.springframework.web.servlet.view.tiles2.TilesView;
      
        @Configuration
        @EnableWebMvc
        public class WebConfig extends WebMvcConfigurerAdapter {
        
            @Inject
            private Environment environment;
        
            public void addResourceHandlers(ResourceHandlerRegistry registry) {
                registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
            }
        
            public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
                converters.add(new MappingJacksonHttpMessageConverter());
            }
        
        
            /**
             * ViewResolver configuration required to work with Tiles2-based views.
             */
            @Bean
            public ViewResolver viewResolver() {
                UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();
                viewResolver.setViewClass(TilesView.class);
                return viewResolver;
            }
        
            /**
             * Configures Tiles at application startup.
             */
            @Bean
            public TilesConfigurer tilesConfigurer() {
                TilesConfigurer configurer = new TilesConfigurer();
                configurer.setDefinitions(new String[]{
                        "/WEB-INF/layouts/tiles.xml",
                        "/WEB-INF/views/**/tiles.xml"
                });
                configurer.setCheckRefresh(true);
                return configurer;
            }  
         
            @Bean
            public MultipartResolver multipartResolver() {
                CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
                multipartResolver.setMaxUploadSize(500000);
                return multipartResolver;
            }
        }
    And the web.xml:

    Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        
            <!-- Java-based annotation-driven Spring container definition -->
            <context-param>
                <param-name>contextClass</param-name>
                <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
            </context-param>
        
            <!-- Location of Java @Configuration classes that configure the components that makeup this application -->
            <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>config</param-value>
            </context-param>
        
            <!-- Specifies the default mode of this application, to be activated if no other profile (or mode) is specified -->
            <context-param>
                <param-name>spring.profiles.default</param-name>
                <param-value>embedded</param-value>
            </context-param>
        
            <!-- Creates the Spring Container shared by all Servlets and Filters -->
            <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
            </listener>
        
        
                 <!-- Handles requests into the application -->
            <servlet>
                <servlet-name>appServlet</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <init-param>
                    <!-- No explicit configuration file reference here: everything is configured in the root container for simplicity -->
                    <param-name>contextConfigLocation</param-name>
                    <param-value></param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
            </servlet>
        
            <servlet-mapping>
                <servlet-name>appServlet</servlet-name>
                <url-pattern>/</url-pattern>
            </servlet-mapping>
        
        </web-app>
    Last edited by Fatla; Mar 24th, 2012, 02:07 PM.

  • #2
    Judging by your configuration there is nothing to show so what should be shown? There eis no controller configuration there is no controller/component scanning detecting those. Next to that you use tiles but return a FreemarkerView...

    Comment


    • #3
      I have noticed that over the "Green House" there is a class called App Controller that's called when the app starts up.
      I assume that is the one that's responsible to scan the controllers.
      However when I used this class,it's not called from my demo.
      You can see my demo attached.

      Comment


      • #4
        I have fixed that freeMarker issue that you have noticed.

        Comment


        • #5
          my main issue is how to configure/scan the controllers!!

          Comment


          • #6
            I would take a look at the spring reference documentation.

            You need to use the following annotation at the top of your java config:
            Code:
             @ComponentScan("my.package.containing.controllers.to.scan")

            Comment


            • #7
              Thanks it works now.

              Comment

              Working...
              X