Как настроить сервер Undertow через дескриптор web.xml?(как это происходит в Tomcat) - PullRequest
3 голосов
/ 05 июля 2019

Я сейчас пытаюсь настроить сервер undertow с помощью Spring MVC через дескриптор web.xml, но не понимаю, как это произошло?

Я только что попытался настроить контексты Spring с bean-компонентами, которые отображаются на контроллерах, и это успешно работает, но как это сделать с web.xml?

Основной класс, который делает конфигурационный сервер

public class UndertowServer {

    private static Undertow server;

    private static final String CONTEXT_PATH = "/";
    private static final String PKG_NAME = "webapp.war";

    public static void main(final String[] args) throws ServletException{

        UndertowServer deployUndertowServer = new UndertowServer();
        deployUndertowServer.configureUndertow();

        server.start();
    }

    private void configureUndertow() throws ServletException {

        DeploymentInfo servletBuilder = Servlets.deployment()
                .setClassLoader(UndertowServer.class.getClassLoader())
                .setContextPath(CONTEXT_PATH)
                .setDeploymentName(PKG_NAME)
                );

        DeploymentManager manager = Servlets.defaultContainer().addDeployment(servletBuilder);
        manager.deploy();

        PathHandler path = Handlers.path(Handlers.redirect(CONTEXT_PATH))
                .addPrefixPath(CONTEXT_PATH, manager.start());

        server = Undertow.builder().addHttpListener(8080, "localhost")
                .setHandler(path).build();
    }
}

web.xml

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

dispatcher-servlet.xml

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".html" />
    </bean>

    <bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <bean name="/index"
          class="org.example.controllers.IndexController"/>
...