Я не верю, что вы можете сделать это, используя Tomcat (или другой движок сервлета).
Самый простой способ может состоять в том, чтобы порождать трудоемкий процесс в отдельном потоке, вызывать его и устанавливать время ожидания для этого вызова. Вы можете легко это сделать, используя объект FutureTask и вызывая get () , указав тайм-аут. Вы получите TimeoutException, если задача занимает слишком много времени, и вы можете использовать сервлет, чтобы сообщить об этом (приятно) пользователю.
например. (очень просто)
FutureTask f = new FutureTask(new Runnable{...});
try {
Object o = f.get(TIMEOUT, UNITS)
// report success
}
catch (TimeoutException e) {
// report failure
}