Java Tomcat从线程初始化servlet

时间:2015-02-19 09:32:07

标签: java multithreading tomcat7 servlet-3.0

我有一个Tomcat 7应用程序,它在启动时启动一个Thread,在做了一些事情之后我想调用“something”来初始化/启动一个部署在Tomcat上的servlet。

任何想法?

2 个答案:

答案 0 :(得分:1)

servlet由servlet容器以两种方式之一初始化:

  1. 启动时,如果servlet被标记为loadOnStartup,那么在部署war文件时它将被初始化
    1. 第一次请求
    2. 如果你的servlet没有标记为在启动时加载,那么只需从你的线程向你的servlet发送一个Http请求。您可以使用HttpURLConnection或任何类似的API来执行此操作。

答案 1 :(得分:0)

以下是解决方案:

 private boolean startup() throws ClientProtocolException, IOException {
   logger.entry();

   HttpPost request = new HttpPost("http://.../StartupServlet");

  RequestConfig requestConfig = RequestConfig.custom()
           .setSocketTimeout(30 * 1000)
           .setConnectionRequestTimeout(30 * 1000)
           .setConnectTimeout(30 * 1000)
           .build();
  request.setConfig(requestConfig);

  CloseableHttpClient client = HttpClients.createDefault();
  CloseableHttpResponse response = client.execute(request);

  if (HttpStatus.SC_OK != response.getStatusLine().getStatusCode()) {
     return false;
  }

  logger.exit();
  return true;
}