Results 1 to 7 of 7

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

  1. #1
    Join Date
    Mar 2012
    Posts
    14

    Default 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 at 02:07 PM.

  2. #2
    Join Date
    Jun 2006
    Location
    The Netherlands
    Posts
    13,632

    Default

    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...
    Marten Deinum
    Java Consultant / Pragmatist / Open Source Enthousiast / Author


    Pro Spring MVC: With Web Flow
    Conspect

    Have you read the reference guide.
    Use the [ code ] tags, young padawan

  3. #3
    Join Date
    Mar 2012
    Posts
    14

    Default

    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.
    Attached Files Attached Files

  4. #4
    Join Date
    Mar 2012
    Posts
    14

    Default

    I have fixed that freeMarker issue that you have noticed.

  5. #5
    Join Date
    Mar 2012
    Posts
    14

    Default

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

  6. #6

    Default

    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")

  7. #7
    Join Date
    Mar 2012
    Posts
    14

    Default

    Thanks it works now.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •