支持多个网络服务 url
undertow multiple webservices url
我想在我的地址上写这样的东西。
我如何将 servlet1、servlet2、servlet3 绑定到 localhost:8080,这样我就可以调用不同的 url,例如
localhost:8080/servlet
localhost:8080/servlet1
localhost:8080/servlet2
localhost:8080/servlet3
我有这个代码只适用于最后添加的 url(servlet)
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);
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.
);
修改自Undertow 1.2.5示例代码:
来自此 URL 的可运行项目将于 2015 年 6 月 10 日到期:
https://www.hightail.com/download/bXBaTXRRaFJQb0xIRHRVag
package servlet;
import javax.servlet.ServletException;
import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import static io.undertow.servlet.Servlets.defaultContainer;
import static io.undertow.servlet.Servlets.deployment;
import static io.undertow.servlet.Servlets.servlet;
/**
* @author Stuart Douglas
*/
public class ServletServer {
public static final String MYAPP = "/myapp";
public static void main(final String[] args) {
try {
DeploymentInfo servletBuilder = deployment()
.setClassLoader(ServletServer.class.getClassLoader())
.setContextPath(MYAPP)
.setDeploymentName("doesnotmatter.war")
.addServlets(
servlet("MessageServletA", MessageServletA.class)
.addInitParam("message", "Hello AAA\n")
.addMapping("/msgA/*"),
servlet("MessageServletB", MessageServletB.class)
.addInitParam("message", "Hello BBB\n")
.addMapping("/msgB/*"),
servlet("MessageServletC", MessageServletC.class)
.addInitParam("message", "Hello CCC\n")
.addMapping("/msgC/*")
);
DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();
PathHandler path = Handlers.path(Handlers.redirect(MYAPP))
.addPrefixPath(MYAPP, servletHandler);
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
server.start();
} catch (ServletException e) {
throw new RuntimeException(e);
}
}
}
请使用来自 shell 的命令进行测试:
# Runs in background
java -cp target/undertowservlet-jar-with-dependencies.jar servlet.Servletrver &
curl http://localhost:8080/myapp/msgA/
curl http://localhost:8080/myapp/msgB/
curl http://localhost:8080/myapp/msgC/
我想在我的地址上写这样的东西。 我如何将 servlet1、servlet2、servlet3 绑定到 localhost:8080,这样我就可以调用不同的 url,例如
localhost:8080/servlet
localhost:8080/servlet1
localhost:8080/servlet2
localhost:8080/servlet3
我有这个代码只适用于最后添加的 url(servlet)
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);
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.
);
修改自Undertow 1.2.5示例代码:
来自此 URL 的可运行项目将于 2015 年 6 月 10 日到期: https://www.hightail.com/download/bXBaTXRRaFJQb0xIRHRVag
package servlet;
import javax.servlet.ServletException;
import io.undertow.Handlers;
import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import static io.undertow.servlet.Servlets.defaultContainer;
import static io.undertow.servlet.Servlets.deployment;
import static io.undertow.servlet.Servlets.servlet;
/**
* @author Stuart Douglas
*/
public class ServletServer {
public static final String MYAPP = "/myapp";
public static void main(final String[] args) {
try {
DeploymentInfo servletBuilder = deployment()
.setClassLoader(ServletServer.class.getClassLoader())
.setContextPath(MYAPP)
.setDeploymentName("doesnotmatter.war")
.addServlets(
servlet("MessageServletA", MessageServletA.class)
.addInitParam("message", "Hello AAA\n")
.addMapping("/msgA/*"),
servlet("MessageServletB", MessageServletB.class)
.addInitParam("message", "Hello BBB\n")
.addMapping("/msgB/*"),
servlet("MessageServletC", MessageServletC.class)
.addInitParam("message", "Hello CCC\n")
.addMapping("/msgC/*")
);
DeploymentManager manager = defaultContainer().addDeployment(servletBuilder);
manager.deploy();
HttpHandler servletHandler = manager.start();
PathHandler path = Handlers.path(Handlers.redirect(MYAPP))
.addPrefixPath(MYAPP, servletHandler);
Undertow server = Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler(path)
.build();
server.start();
} catch (ServletException e) {
throw new RuntimeException(e);
}
}
}
请使用来自 shell 的命令进行测试:
# Runs in background
java -cp target/undertowservlet-jar-with-dependencies.jar servlet.Servletrver &
curl http://localhost:8080/myapp/msgA/
curl http://localhost:8080/myapp/msgB/
curl http://localhost:8080/myapp/msgC/