in bindings/servicemix-http/src/main/java/org/apache/servicemix/http/jetty/JettyContextManager.java [131:205]
public synchronized Object createContext(String strUrl, HttpProcessor processor) throws Exception {
URL url = new URL(strUrl);
Server server = getServer(url);
if (server == null) {
server = createServer(url, processor.getSsl());
} else {
// Check ssl params
SslParameters ssl = sslParams.get(getKey(url));
if (ssl != null && !ssl.equals(processor.getSsl())) {
throw new Exception("An https server is already created on port " + url.getPort()
+ " but SSL parameters do not match");
}
}
String path = url.getPath();
if (!path.startsWith("/")) {
path = "/" + path;
}
if (path.endsWith("/")) {
path = path.substring(0, path.length() - 1);
}
String pathSlash = path + "/";
// Check that context does not exist yet
HandlerCollection handlerCollection = (HandlerCollection) server.getHandler();
ContextHandlerCollection contexts = (ContextHandlerCollection) handlerCollection.getHandlers()[0];
Handler[] handlers = contexts.getHandlers();
if (handlers != null) {
for (int i = 0; i < handlers.length; i++) {
if (handlers[i] instanceof ContextHandler) {
ContextHandler h = (ContextHandler) handlers[i];
String handlerPath = h.getContextPath() + "/";
if (handlerPath.startsWith(pathSlash) || pathSlash.startsWith(handlerPath)) {
throw new Exception("The requested context for path '" + path
+ "' overlaps with an existing context for path: '" + h.getContextPath() + "'");
}
}
}
}
// Create context
ServletContextHandler context = new ServletContextHandler();
context.setContextPath(path);
ServletHolder holder = new ServletHolder();
holder.setName("jbiServlet");
holder.setClassName(HttpBridgeServlet.class.getName());
ServletHandler servletHandler = new ServletHandler();
servletHandler.setServlets(new ServletHolder[]{holder});
ServletMapping mapping = new ServletMapping();
mapping.setServletName("jbiServlet");
mapping.setPathSpec("/*");
servletHandler.setServletMappings(new ServletMapping[]{mapping});
if (processor.getAuthMethod() != null) {
ConstraintSecurityHandler secHandler = new ConstraintSecurityHandler();
ConstraintMapping constraintMapping = new ConstraintMapping();
Constraint constraint = new Constraint();
constraint.setAuthenticate(true);
constraint.setRoles(new String[]{"*"});
constraintMapping.setConstraint(constraint);
constraintMapping.setPathSpec("/");
secHandler.setConstraintMappings(new ConstraintMapping[]{constraintMapping});
secHandler.setHandler(servletHandler);
secHandler.setAuthMethod(processor.getAuthMethod());
JaasUserRealm realm = new JaasUserRealm();
if (configuration.getAuthenticationService() != null) {
realm.setAuthenticationService(AuthenticationService.Proxy.create(configuration.getAuthenticationService()));
}
secHandler.setLoginService(realm);
context.setSecurityHandler(secHandler);
}
context.setServletHandler(servletHandler);
context.setAttribute("processor", processor);
// add context
contexts.addHandler(context);
servletHandler.initialize();
context.start();
return context;
}