in taverna-interaction-activity/src/main/java/org/apache/taverna/activities/interaction/jetty/InteractionJetty.java [72:160]
public synchronized void startJettyIfNecessary(CredentialManager credentialManager) {
if (server != null) {
return;
}
// final ClassLoader previousContextClassLoader = Thread.currentThread()
// .getContextClassLoader();
// Thread.currentThread().setContextClassLoader(
// InteractionJetty.class.getClassLoader());
final String port = interactionPreference.getPort();
server = new Server(Integer.parseInt(port));
server.setStopAtShutdown(true);
final WebdavServlet interactionServlet = new WebdavServlet();
final ServletHolder interactionHolder = new ServletHolder();
interactionHolder.setServlet(interactionServlet);
try {
interactionHolder.setInitParameter("rootpath",
getInteractionDirectory().getCanonicalPath());
} catch (final IOException e1) {
logger.error("Unable to set root of interaction", e1);
}
final HandlerList handlers = new HandlerList();
final Context overallContext = new Context(handlers, "/",
Context.SESSIONS);
overallContext.setContextPath("/");
server.setHandler(overallContext);
final AbderaServlet abderaServlet = new AbderaServlet();
final ServletHolder abderaHolder = new ServletHolder(abderaServlet);
abderaHolder.setInitParameter(ServiceManager.PROVIDER,
BasicProvider.class.getName());
overallContext.addServlet(abderaHolder, "/*");
overallContext.addServlet(interactionHolder, "/interaction/*");
if (interactionPreference.getUseUsername()) {
final Constraint constraint = new Constraint();
constraint.setName(Constraint.__BASIC_AUTH);
constraint.setRoles(new String[] { "user", "admin", "moderator" });
constraint.setAuthenticate(true);
final ConstraintMapping cm = new ConstraintMapping();
cm.setConstraint(constraint);
cm.setPathSpec("/*");
final SecurityHandler sh = new SecurityHandler();
try {
final HashUserRealm realm = new HashUserRealm(REALM_NAME);
final URI serviceURI = createServiceURI(port);
final UsernamePassword up = credentialManager
.getUsernameAndPasswordForService(serviceURI, true,
"Please specify the username and password to secure your interactions");
if (up != null) {
final String username = up.getUsername();
realm.put(username, up.getPasswordAsString());
realm.addUserToRole(username, "user");
}
sh.setUserRealm(realm);
} catch (final CMException e) {
logger.error(e);
} catch (final URISyntaxException e) {
logger.error(e);
}
sh.setConstraintMappings(new ConstraintMapping[] { cm });
overallContext.addHandler(sh);
}
getFeedDirectory();
try {
server.start();
while (!server.isRunning()) {
Thread.sleep(5000);
}
} catch (final Exception e) {
logger.error("Unable to start Jetty");
}
// Thread.currentThread()
// .setContextClassLoader(previousContextClassLoader);
}