Выбор за вами: если вы согласны с тем, что пользователь будет ждать результата в течение долгого времени, то вы можете просто запросить базу данных, рассчитать путь и затем вернуть результат. Но если вам повезло, и ваш сервлет работает на сервере с большим объемом памяти, вы, конечно, можете загрузить график в память и сохранить его там.
Технология сервлетов здесь в порядке. Только не пишите весь код вычисления внутри методов doGet () или doPost (). Сервлет должен действительно действовать как контроллер и просто получать результат от других классов. Переместите код в другой поток и выполните работу в классах калькуляторов.