Search code examples
undertow

undertow multiple webservices url


I want something like this on my address. How I can bind servlet1, servlet2, servlet3 to localhost:8080 so I can have different url to call such as

localhost:8080/servlet

localhost:8080/servlet1

localhost:8080/servlet2

localhost:8080/servlet3

I have this code that only work for thw last url(servlet) added

DeploymentInfo servletBuilder = deployment()
                .setClassLoader(ServletServer.class.getClassLoader())
                .setContextPath(MYAPP)
                .setDeploymentName("test.war")
                .addServlets(
                        servlet(servletName,  x)
                        .addInitParam("message", output)
                        .addMapping("/"+servletName.toLowerCase()));

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

        HttpHandler servletHandler = manager.start();
        path = Handlers.path(Handlers.redirect(MYAPP))
                .addPrefixPath(MYAPP, servletHandler);

Solution

  • DeploymentInfo servletBuilder = deployment()
    .addServlets(
     servlet("servlet1", YourServlet1.class).addInitParam("param1", "Value A")
    .addMapping("/servlet1/*"),
     servlet("servlet2", YourServlet2.class).addInitParam("param2", "Value B")
    .addMapping("/servlet2/*"),
     servlet("servlet3", YourServlet3.class).addInitParam("param2", "Value C")
    .addMapping("/servlet3/*")  // as many as you like.
    );
    

    Taken using info from here: https://github.com/undertow-io/undertow/tree/master/examples/src/main/java/io/undertow/examples/servlet