diff options
author | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2011-08-18 15:04:09 +0000 |
---|---|---|
committer | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2011-08-18 15:04:09 +0000 |
commit | 0bba8c08d29aa16cdba91e25fcf3ba754800993b (patch) | |
tree | 9cfed62635b0976c3d2796c2a2f1bc943270b301 /BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java | |
parent | 4800d1a9e2d8b90f81a95662ace7aa6e7bee32cd (diff) | |
download | mocca-0bba8c08d29aa16cdba91e25fcf3ba754800993b.tar.gz mocca-0bba8c08d29aa16cdba91e25fcf3ba754800993b.tar.bz2 mocca-0bba8c08d29aa16cdba91e25fcf3ba754800993b.zip |
Help update: Show specific 404 pages
* Locale-dependent
* 404h.html if page not found was a help page
* 404.html else
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@956 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java')
-rw-r--r-- | BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java | 108 |
1 files changed, 96 insertions, 12 deletions
diff --git a/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java b/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java index 216c6228..07c5d792 100644 --- a/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java +++ b/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java @@ -41,6 +41,8 @@ import java.security.AllPermission; import java.security.KeyStore;
import java.security.Permissions;
import java.security.cert.Certificate;
+import java.util.Locale; + import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
@@ -66,8 +68,17 @@ public class Container { }
}
private Server server;
- private WebAppContext webapp;
- private Certificate caCertificate;
+ private WebAppContext webapp; + private WebappErrorHandler errorHandler;
+ private Certificate caCertificate; + private File tempDir; + + private Locale locale = null; + + public void init(Locale locale) throws IOException { + this.locale = locale; + init(); + } public void init() throws IOException {
// System.setProperty("DEBUG", "true");
@@ -103,7 +114,7 @@ public class Container { sslConnector.setKeyPassword(passwd);
//avoid jetty's ClassCastException: iaik.security.ecc.ecdsa.ECPublicKey cannot be cast to java.security.interfaces.ECPublicKey
- String[] RFC4492CipherSuites = new String[]{
+ String[] RFC4492CipherSuites = new String[] {
"TLS_ECDH_ECDSA_WITH_NULL_SHA",
"TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
"TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
@@ -139,10 +150,14 @@ public class Container { webapp.setLogUrlOnStart(true);
webapp.setContextPath("/");
webapp.setExtractWAR(true);
- webapp.setParentLoaderPriority(false);
-
- webapp.setWar(copyWebapp(webapp.getTempDirectory()));
-// webapp.setPermissions(getPermissions(webapp.getTempDirectory()));
+ webapp.setParentLoaderPriority(false); + + errorHandler = new WebappErrorHandler(locale); + webapp.setErrorHandler(errorHandler);
+ + tempDir = webapp.getTempDirectory();
+ webapp.setWar(copyWebapp(tempDir));
+// webapp.setPermissions(getPermissions(tempDir));
server.setHandler(webapp);
server.setGracefulShutdown(1000 * 3);
@@ -186,7 +201,70 @@ public class Container { new StreamCopier(is, os).copyStream();
os.close();
return webapp.getPath();
- }
+ } + +// private boolean deleteRecursive(File f) +// { +// if (f.isDirectory()) +// { +// String[] children = f.list(); +// for (String child : children) { +// if (!deleteRecursive(new File(f, child))) +// return false; +// } +// } +// return f.delete(); +// } +// +// private void deleteOnExitRecursive(File f) +// { +// if (f.isDirectory()) +// { +// String[] children = f.list(); +// for (String child : children) +// deleteOnExitRecursive(new File(f, child)); +// } +// f.deleteOnExit(); +// } +// +// /** +// * Workaround for Jetty problem where temporary directory +// * doesn't get deleted under Windows due to locking issues. +// * +// * @param tempDir Temporary directory to delete +// */ +// private void deleteTempDir(final File tempDir) { +// try { +// if (tempDir.exists()) { +// log.debug("Temp directory still exists - trying to delete"); +// if (!deleteRecursive(tempDir)) +// { +// log.debug("Deleting temp directory failed - adding shutdown hook"); +// Runtime.getRuntime().addShutdownHook( +// new Thread() { +// public void run() { +// log.debug("Shutdown hook executing"); +// if (tempDir.exists()) { +// log.debug("Temp directory still exists - trying to delete"); +// if (!deleteRecursive(tempDir)) +// { +// log.debug("Deleting temp directory failed"); +// deleteOnExitRecursive(tempDir); +// } +// else +// log.debug("Successfully deleted temp directory"); +// } +// } +// } +// ); +// } +// else +// log.debug("Successfully deleted temp directory"); +// } +// } catch (SecurityException ex) { +// log.debug("Temp directory access failed", ex); +// } +// }
/**
* grant all permissions, since we need read/write access to save signature data files anywhere (JFileChooser) in the local filesystem
@@ -221,13 +299,19 @@ public class Container { return server.isRunning();
}
- public void stop() throws Exception {
- server.stop();
+ public void stop() throws Exception { +// log.debug("Container: stop called"); + server.stop(); + +// deleteTempDir(tempDir); }
public void destroy() {
+// log.debug("Container: destroy called"); server.destroy();
- }
+ +// deleteTempDir(tempDir); +}
public void join() throws InterruptedException {
server.join();
@@ -248,5 +332,5 @@ public class Container { log.error("Failed to load local ca certificate", ex);
log.warn("automated web certificate installation will not be available");
}
- }
+ } }
|