Spring.io и плитки 3 — ошибка 404 при развертывании файла .war на сервере Tomcat

Я получаю сообщение об ошибке 404, когда развертываю сгенерированный файл .war на автономном сервере Tomcat, но если я развертываю войну внутри своей IDE (IntelliJ) с сервером tomcat, все работает нормально.


Это Инициализатор

        public void onStartup(ServletContext servletContext)
                       throws ServletException {
                      AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
                      mvcContext.register(AppConfig.class);

                servletContext.addListener(new ContextLoaderListener(mvcContext));

                      ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
                        "dispatcher", new DispatcherServlet(mvcContext));
                      dispatcher.setLoadOnStartup(1);
                      dispatcher.addMapping("/");
            }

Это Конфигурация приложения.

    **Tiles Configuration**

        @Bean
        public TilesConfigurer getTilesConfigurer() {
            TilesConfigurer tilesConfigurer = new TilesConfigurer();
            tilesConfigurer.setDefinitions(
                    "/WEB-INF/defs/tiles.xml");
            return tilesConfigurer;
        }

        @Bean
        public UrlBasedViewResolver getUrlBasedResolver() {
            UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();
            urlBasedViewResolver.setViewClass(new TilesView().getClass());
            return urlBasedViewResolver;
        }

        /** End of Tiles Configuration */

    **View Resolver:**

    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
            resolver.setPrefix("/WEB-INF/pages/**");
            resolver.setSuffix(".jsp");
            return resolver;


    **Tiles.xml**

    <definition name="hello-tiles" extends="commons">
            <put-attribute name="header" value="/WEB-INF/template/header2.jsp" />
            <put-attribute name="title" value="Hello Page" />
            <put-attribute name="body" value="/WEB-INF/pages/hello.jsp" />
        </definition>

person Andoy Abarquez    schedule 18.08.2014    source источник


Ответы (1)


Приложению необходимо знать путь установки Tomcat на вашем рабочем компьютере, чтобы разрешать пути. Либо вы можете жестко закодировать свой xml, либо указать файл свойств, который может получить путь установки tomcat, то есть CATALINA_HOME или CATALINA_BASE. Причина, по которой это работает в вашей среде IDE, а не в вашей рабочей среде, заключается в том, что система понимает /WEB-INF в вашей среде IDE, но этого не происходит, когда вы развертываете ее в автономной системе.

Вы можете добавить свой путь установки вашего автономного сервера к каждому из путей. например C:/Tomcat/bin. Следовательно, вам нужно будет ссылаться на ваши файлы, например

<put-attribute name="body" value="C:/Tomcat/bin/WEB-INF/pages/hello.jsp" />

Если вы не являетесь поклонником абсолютного пути, вы можете сослаться на упомянутые выше переменные и узнать, как их использовать, из файла свойств.

Надеюсь, поможет.

person user2339071    schedule 18.08.2014