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