java - Is there a way to use the Servlet API with Undertow? -


i'm discovering how undertow works , surprised api:

undertow server = undertow.builder()                 .addhttplistener(8080, "localhost")                 .sethandler(new httphandler() {                     @override                     public void handlerequest(final httpserverexchange exchange) throws exception {                         exchange.getresponseheaders().put(headers.content_type, "text/plain");                         exchange.getresponsesender().send("hello world");                     }                 }).build();         server.start(); 

is there way use more convenient servlet api somehow?

undertow server = undertow.builder()                 .addhttplistener(8080, "localhost")                 .sethandler(new httphandler() {                     @override                     public void handlerequest(final httpservletrequest request, final httpservletresponse response) throws exception {                         // ...                     }                 }).build();         server.start(); 

what i'm trying achieve replace working jetty container uses servlet api undertow after reading docs , source can't seem find way so. i'm not using .war files embedded jetty. has pointers?

it's documented in section creating servlet deployment. here's mcve based on documentation provided you've dependencies right, along servlet api.

package com.stackoverflow.q35269763;  import io.undertow.handlers; import io.undertow.undertow; import io.undertow.server.handlers.pathhandler; import io.undertow.servlet.servlets; import io.undertow.servlet.api.deploymentinfo; import io.undertow.servlet.api.deploymentmanager;  import java.io.ioexception;  import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse;  public class test {      public static void main(string... args) throws exception {         deploymentinfo servletbuilder = servlets.deployment().setclassloader(test.class.getclassloader())             .setdeploymentname("myapp").setcontextpath("/myapp")             .addservlets(servlets.servlet("myservlet",                 new httpservlet() {                     @override                     protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {                         response.getwriter().write("hello world!");                     }                 }.getclass()).addmapping("/myservlet"));         deploymentmanager manager = servlets.defaultcontainer().adddeployment(servletbuilder);         manager.deploy();         pathhandler path = handlers.path(handlers.redirect("/myapp")).addprefixpath("/myapp", manager.start());         undertow server = undertow.builder().addhttplistener(8888, "localhost").sethandler(path).build();         server.start();     }  } 

when open http://localhost:8888/myapp/myservlet in favourite webbrowser after copy'n'paste'n'running above code, you'll see

hello world!


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -