Better exception handling.
This commit is contained in:
parent
89c8d564a4
commit
38ee8657e8
6 changed files with 88 additions and 78 deletions
|
|
@ -1,7 +1,6 @@
|
|||
package org.dynmap.web;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public interface HttpHandler {
|
||||
void handle(String path, HttpRequest request, HttpResponse response) throws IOException;
|
||||
void handle(String path, HttpRequest request, HttpResponse response) throws Exception;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ public class HttpServerConnection extends Thread {
|
|||
|
||||
public void run() {
|
||||
try {
|
||||
socket.setSoTimeout(30000);
|
||||
socket.setSoTimeout(5000);
|
||||
|
||||
HttpRequest request = new HttpRequest();
|
||||
if (!readRequestHeader(socket.getInputStream(), request)) {
|
||||
|
|
@ -106,10 +106,13 @@ public class HttpServerConnection extends Thread {
|
|||
|
||||
try {
|
||||
handler.handle(relativePath, request, response);
|
||||
} catch (IOException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
log.log(Level.SEVERE, "HttpHandler '" + handler + "' has thown an exception", e);
|
||||
e.printStackTrace();
|
||||
socket.close();
|
||||
if (socket != null) {
|
||||
socket.close();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package org.dynmap.web.handlers;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -16,7 +15,7 @@ public class ClientConfigurationHandler implements HttpHandler {
|
|||
this.configuration = configuration;
|
||||
}
|
||||
@Override
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws IOException {
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws Exception {
|
||||
String s = Json.stringifyJson(configuration);
|
||||
|
||||
byte[] bytes = s.getBytes();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package org.dynmap.web.handlers;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.World;
|
||||
|
|
@ -26,7 +25,7 @@ public class ClientUpdateHandler implements HttpHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws IOException {
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws Exception {
|
||||
long current = System.currentTimeMillis();
|
||||
long cutoff = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -56,30 +56,38 @@ public abstract class FileHandler implements HttpHandler {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws IOException {
|
||||
path = formatPath(path);
|
||||
InputStream fileInput = getFileInput(path);
|
||||
if (fileInput == null) {
|
||||
response.statusCode = 404;
|
||||
response.statusMessage = "Not found";
|
||||
return;
|
||||
}
|
||||
|
||||
String extension = getExtension(path);
|
||||
String mimeType = getMimeTypeFromExtension(extension);
|
||||
|
||||
response.fields.put("Content-Type", mimeType);
|
||||
response.fields.put("Connection", "close");
|
||||
OutputStream out = response.getBody();
|
||||
public void handle(String path, HttpRequest request, HttpResponse response) throws Exception {
|
||||
InputStream fileInput = null;
|
||||
try {
|
||||
int readBytes;
|
||||
while ((readBytes = fileInput.read(readBuffer)) > 0) {
|
||||
out.write(readBuffer, 0, readBytes);
|
||||
path = formatPath(path);
|
||||
fileInput = getFileInput(path);
|
||||
if (fileInput == null) {
|
||||
response.statusCode = 404;
|
||||
response.statusMessage = "Not found";
|
||||
return;
|
||||
}
|
||||
|
||||
String extension = getExtension(path);
|
||||
String mimeType = getMimeTypeFromExtension(extension);
|
||||
|
||||
response.fields.put("Content-Type", mimeType);
|
||||
response.fields.put("Connection", "close");
|
||||
OutputStream out = response.getBody();
|
||||
try {
|
||||
int readBytes;
|
||||
while ((readBytes = fileInput.read(readBuffer)) > 0) {
|
||||
out.write(readBuffer, 0, readBytes);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
fileInput.close();
|
||||
throw e;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
fileInput.close();
|
||||
} catch (Exception e) {
|
||||
if (fileInput != null) {
|
||||
try { fileInput.close(); } catch (IOException ex) { }
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
fileInput.close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue