下面列出了怎么用org.springframework.boot.web.embedded.tomcat.TomcatWebServer的API类实例代码及写法,或者点击链接到github查看源代码。
WebServer start() throws Exception {
WebHandler webHandler = (WebHandler) toHttpHandler(routingFunction());
HttpHandler httpHandler = WebHttpHandlerBuilder.webHandler(webHandler)
.filter(new IndexRewriteFilter())
.build();
Tomcat tomcat = new Tomcat();
tomcat.setHostname("localhost");
tomcat.setPort(9090);
Context rootContext = tomcat.addContext("", System.getProperty("java.io.tmpdir"));
ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler);
Wrapper servletWrapper = Tomcat.addServlet(rootContext, "httpHandlerServlet", servlet);
servletWrapper.setAsyncSupported(true);
rootContext.addServletMappingDecoded("/", "httpHandlerServlet");
TomcatWebServer server = new TomcatWebServer(tomcat);
server.start();
return server;
}
WebServer start() throws Exception {
WebHandler webHandler = (WebHandler) toHttpHandler(routingFunction());
HttpHandler httpHandler = WebHttpHandlerBuilder.webHandler(webHandler)
.filter(new IndexRewriteFilter())
.build();
Tomcat tomcat = new Tomcat();
tomcat.setHostname("localhost");
tomcat.setPort(9090);
Context rootContext = tomcat.addContext("", System.getProperty("java.io.tmpdir"));
ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler);
Tomcat.addServlet(rootContext, "httpHandlerServlet", servlet);
rootContext.addServletMappingDecoded("/", "httpHandlerServlet");
TomcatWebServer server = new TomcatWebServer(tomcat);
server.start();
return server;
}
WebServer start() throws Exception {
WebHandler webHandler = (WebHandler) toHttpHandler(routingFunction());
HttpHandler httpHandler = WebHttpHandlerBuilder.webHandler(webHandler)
.filter(new IndexRewriteFilter())
.build();
Tomcat tomcat = new Tomcat();
tomcat.setHostname("localhost");
tomcat.setPort(9090);
Context rootContext = tomcat.addContext("", System.getProperty("java.io.tmpdir"));
ServletHttpHandlerAdapter servlet = new ServletHttpHandlerAdapter(httpHandler);
Wrapper servletWrapper = Tomcat.addServlet(rootContext, "httpHandlerServlet", servlet);
servletWrapper.setAsyncSupported(true);
rootContext.addServletMappingDecoded("/", "httpHandlerServlet");
TomcatWebServer server = new TomcatWebServer(tomcat);
server.start();
return server;
}
@Override
public void onApplicationEvent(WebServerInitializedEvent event) {
Service service = ((TomcatWebServer) event.getWebServer()).getTomcat().getService();
for (Connector connector : service.findConnectors()) {
if (connector.getSecure()) {
this.httpsPort = connector.getLocalPort();
} else {
this.httpPort = connector.getLocalPort();
}
}
}
@Bean
public TomcatServletWebServerFactory servletWebServerFactory() {
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
// 激活 JNDI(默认失效)
tomcat.enableNaming();
return super.getTomcatWebServer(tomcat);
}
};
}
/**
* Extracts a Tomcat {@link Connector} from Spring webapp context.
*/
public static Connector getConnector(ServletWebServerApplicationContext applicationContext) {
final TomcatWebServer container = (TomcatWebServer) applicationContext.getWebServer();
// Start the container to make sure all connectors are available.
container.start();
return container.getTomcat().getConnector();
}
/**
* Bean to configure Armeria Tomcat service.
* @return configuration bean.
*/
@Bean
public ArmeriaServerConfigurator armeriaTomcat() {
final WebServer webServer = ((WebServerApplicationContext) applicationContext).getWebServer();
if (webServer instanceof TomcatWebServer) {
final Tomcat tomcat = ((TomcatWebServer) webServer).getTomcat();
return serverBuilder -> serverBuilder.service("prefix:/tomcat/api/rest/v1",
TomcatService.of(tomcat));
}
return serverBuilder -> { };
}
@Test
public void verifySingleConnector() {
// Relevant to Tomcat 9.0
assertThat(applicationContext).isInstanceOf(WebServerApplicationContext.class);
final WebServer webServer = ((WebServerApplicationContext) applicationContext).getWebServer();
assertThat(webServer).isInstanceOf(TomcatWebServer.class);
assertThat(((TomcatWebServer) webServer).getTomcat()
.getEngine()
.getService()
.findConnectors()).hasSize(1);
}
@Bean
public ServletWebServerFactory servletContainer() {
log.info("Starting servletContainer");
return new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
try {
log.info("Catalina base is " + tomcat.getServer().getCatalinaBase().getAbsolutePath());
File lib = new File("lib").getAbsoluteFile();
if (lib.isDirectory()) {
File bkvmWar = searchWar(lib, "bkvm", ".war");
if (bkvmWar != null) {
File configFile = new File("bkvm.conf");
log.info("looking for BKVM configuration file at " + configFile.getAbsolutePath());
if (configFile.isFile()) {
Properties props = new Properties();
try (FileReader reader = new FileReader(configFile)) {
props.load(reader);
}
boolean bkvmEnabled = Boolean.parseBoolean(props.getProperty("bkvm.enabled", "false"));
log.info("Read bkvm.enabled = {}", bkvmEnabled);
if (bkvmEnabled) {
System.setProperty("bookkeeper.visual.manager.config.path", configFile.getAbsolutePath());
File file = new File(tomcat.getServer().getCatalinaBase(), "/webapps");
log.info("Tomcat Webapps directory is " + file.getAbsolutePath());
file.mkdirs();
File bkvmDirectory = new File(file, "bkvm");
log.info("Deploying BKVM to " + bkvmDirectory.getAbsolutePath());
unZip(bkvmWar, bkvmDirectory);
Context context = tomcat.addWebapp("/bkvm", bkvmDirectory.getAbsolutePath());
WebappLoader loader = new WebappLoader(Thread.currentThread().getContextClassLoader());
context.setLoader(loader);
}
}
}
}
return super.getTomcatWebServer(tomcat);
} catch (IOException | ServletException ex) {
throw new RuntimeException(ex);
}
}
};
}