public JettyHttpContext register(String context, String path) throws Exception {
		if (context == null || !context.startsWith("/")) {
			throw new Exception("context must not be null and begin with /");
		}
		if (path == null || !path.startsWith("/")) {
			throw new Exception("path must not be null and begin with /");
		}
		Map<String, JettyHttpContext> entry = ctx.get(context);
		if (entry == null) {
			entry = new ConcurrentHashMap<String, JettyHttpContext>();
			ctx.put(context, entry);
		} else {
			if (entry.containsKey(path)) {
				throw new Exception(String.format("Context %s path %s already registered", context, path));
			}
		}
		JettyHttpContext hctx = new JettyHttpContext(new JettyAttributeInfo(), context, path);
		entry.put(path, hctx);
		return hctx;
	}