private void loadDatabase() {
		// Declare a few local variables for later use
		ClassLoader currentClassLoader = null;
		Field cacheField = null;
		boolean cacheValue = true;
		
		try {
			// Store the current ClassLoader, so it can be reverted later
			currentClassLoader = Thread.currentThread().getContextClassLoader();
			
			// Set the ClassLoader to Plugin ClassLoader
			Thread.currentThread().setContextClassLoader(this.classLoader);
			
			// Get a reference to the private static "defaultUseCaches"-field in
			// URLConnection
			cacheField = URLConnection.class.getDeclaredField("defaultUseCaches");
			
			// Make it accessible, store the default value and set it to false
			cacheField.setAccessible(true);
			cacheValue = cacheField.getBoolean(null);
			cacheField.setBoolean(null, false);
			
			// Setup Ebean based on the configuration
			this.ebeanServer = EbeanServerFactory.create(this.serverConfig);
		}
		catch (Exception ex) {
			throw new RuntimeException(
			    "Failed to create a new instance of the EbeanServer",
			    ex);
		}
		finally {
			// Revert the ClassLoader back to its original value
			if (currentClassLoader != null) {
				Thread.currentThread().setContextClassLoader(currentClassLoader);
			}
			
			// Revert the "defaultUseCaches"-field in URLConnection back to its
			// original value
			try {
				if (cacheField != null) {
					cacheField.setBoolean(null, cacheValue);
				}
			}
			catch (Exception e) {
				System.out.println("Failed to revert the \"defaultUseCaches\"-field back to its original value, URLConnection-caching remains disabled.");
			}
		}
	}