Используйте веб-сервер Undertwo для обслуживания как статических страниц, так и веб-сервиса.

Я пытаюсь использовать Undertow для обслуживания как статических страниц, так и веб-службы (RestEasy), но не могу заставить их работать одновременно. Я вижу, как другие задают те же вопросы, что и HTTP Handler и Resteasy Deployment with откат и отдых. Должен быть способ получить эту работу, верно? WildFly может работать с обоими через один и тот же порт. Но как я мог это сделать? Спасибо!


person yyff    schedule 24.10.2016    source источник


Ответы (1)


Как насчет:

DeploymentInfo servletBuilder = deployment()
    .setClassLoader(App.class.getClassLoader())
    .setContextPath("/api")
    .setDeploymentName("test.war")
    .addServlets(
        servlet("MessageServlet", MessageServlet.class)
            .addInitParam("message", "Hello World")
            .addMapping("/*"),
        servlet("MyServlet", MessageServlet.class)
            .addInitParam("message", "MyServlet")
            .addMapping("/myservlet"));
DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();


Undertow.builder().addHttpListener(8080, "0.0.0.0")
    .setHandler(Handlers.path()

        // REST API path
        .addPrefixPath("/servlet", servletHandler)

        // Serve all static files from a folder
        .addPrefixPath("/static", new ResourceHandler(
            new PathResourceManager(Paths.get("/path/to/www/"), 100))
            .setWelcomeFiles("index.html"))

    ).build().start();

Часть сервлета взята из официальных примеров Undertow, здесь. Вы можете общаться со своими сервлетами сообщений через:

GET /servlet/api

POST /servlet/api/myservlet

person ant1g    schedule 24.10.2016