标记应用程序而不使用web.xml可分发用于Tomcat会话复制

时间:2016-05-06 16:15:47

标签: java xml spring session tomcat

我有基于Spring的应用程序并使用编程方法(AbstractAnnotationConfigDispatcherServletInitializer)进行应用程序配置。

要使tomcat会话复制工作,我需要使用<distributable/>中的web.xml标记'标记'应用distributable,但正如我所提到的,我使用的是编程风格,例如

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {

            String activeProfile = activeProfile();

            if (isNotEmpty(activeProfile)) {
                servletContext.setInitParameter("spring.profiles.active", activeProfile);
            }

            super.onStartup(servletContext);

        }
    }

我找不到任何关于如何使用Spring配置的文档,所以我的问题是,是否有可能在没有web.xml的情况下拥有可分发的应用程序?我无法将所有配置移动到web.xml,因此感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

您无法从基于Java的配置中设置多个选项,其中一个是<distributable />另一个是error-pages

为此,您仍然需要web.xml,只需创建一个尽可能为空的web.xml并且只包含<distributable />。其他所有内容都可以保留在基于Java的配置中。

<web-app
        version="3.0"
        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_3_0.xsd">

    <distributable />

</web-app>

答案 1 :(得分:0)

这似乎已在此处得到解答...... Mixing web.xml and AbstractAnnotationConfigDispatcherServletInitializer in Spring 除非我误解了问题/答案。

答案 2 :(得分:0)

无法使用Spring以编程方式配置群集。一种解决方案是混合使用基于XML和Java的配置。这样可以维护Web.xml条目。 一个例子是here来做这件事。