1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.googlecode.t7mp;
17
18 import java.io.BufferedReader;
19 import java.io.File;
20 import java.io.IOException;
21 import java.io.InputStream;
22 import java.io.InputStreamReader;
23
24 import com.googlecode.t7mp.util.TomcatUtil;
25
26
27
28
29
30
31 public final class ForkedTomcatShutdownHook extends Thread {
32
33 private static final long SLEEPTIME = 10000;
34 private final File binDirectory;
35 private final PluginLog log;
36
37 public ForkedTomcatShutdownHook(File binDirectory, PluginLog log) {
38 this.binDirectory = binDirectory;
39 this.log = log;
40 }
41
42 @Override
43 public void run() {
44 ProcessBuilder processBuilder = new ProcessBuilder(TomcatUtil.getStopScriptName(), "stop");
45 int exitValue = -1;
46 try {
47 Process p = processBuilder.directory(this.binDirectory).start();
48 InputStream is = p.getInputStream();
49 BufferedReader br = new BufferedReader(new InputStreamReader(is));
50 String line;
51 while ((line = br.readLine()) != null) {
52 log.info(line);
53 }
54 exitValue = p.waitFor();
55 } catch (InterruptedException e) {
56 e.printStackTrace();
57 } catch (IOException e) {
58 e.printStackTrace();
59 }
60 try {
61 Thread.sleep(SLEEPTIME);
62 } catch (InterruptedException e) {
63 log.error(e.getMessage(), e);
64 }
65 log.debug("Exit-Value ForkedTomcatShutdownHook " + exitValue);
66 }
67
68 }