Hi all,
I want to use the tomcat supported manager command
<https://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html#Supported_Manager_Commands>
to deploy a war file. The Tomcat server is Tomcat v8.0.23.
The application is sure to be deployed and started successfully, I,
however, got the failed message of the response as below
*FAIL - Deployed application at context path /test but context failed to
start*
The way I used is the HttpURLConnection in Java to PUT a file by an HTTP
request as below code
public void execute(ResponseHandler handler) throws IOException {
String deployURL =
"http://localhost/manager/text/deploy?update=true&path=/test"
final HttpURLConnection hconn = (HttpURLConnection) (new
URL(deployURL)).openConnection();
try (FileInputStream fsInput = new FileInputStream(deployedPackage)) {
final long contentLength = fsInput.getChannel().size();
hconn.setAllowUserInteraction(false);
hconn.setDoInput(true);
hconn.setUseCaches(false);
hconn.setDoOutput(true);
hconn.setRequestMethod("PUT");
hconn.setRequestProperty("Content-Type", "application/octet-stream");
hconn.setRequestProperty("Content-Length", "" + contentLength);
hconn.setFixedLengthStreamingMode(contentLength);
hconn.setRequestProperty("User-Agent", "Catalina-Ant-Task/1.0");
// Set up an authorization header with our credentials
final String input = this.username + ":" + this.password;
final String output =
Base64.getEncoder().encodeToString(input.getBytes(StandardCharsets.ISO_8859_1));
hconn.setRequestProperty("Authorization", "Basic " + output);
// Establish the connection with the server
hconn.connect();
try (BufferedInputStream istream = new
BufferedInputStream(fsInput, 1024);
BufferedOutputStream ostream = new
BufferedOutputStream(hconn.getOutputStream(), 1024)) {
final byte buffer[] = new byte[1024];
while (true) {
int n = istream.read(buffer);
if (n < 0) {
break;
}
ostream.write(buffer, 0, n);
}
}
}
String response = new String();
// Process the response message
try (InputStreamReader reader = new
InputStreamReader(hconn.getInputStream(), "utf-8")) {
final StringBuilder buff = new StringBuilder();
while (true) {
int ch = reader.read();
if (ch < 0) {
break;
} else {
buff.append((char) ch);
}
}
handler.handle(buff.toString());
}
hconn.disconnect();}
The target URL is *http://localhost/manager/text/deploy?update=true&path=/test
<http://localhost/manager/text/deploy?update=true&path=/test>* for
deploying a war file to a context path "test". And the *deployedPackage* is
a File with the size amount 130 MB.
Is there anything I miss to set up or do it in the wrong way?
Thanks