У меня есть проект clojure / ring, в котором два разных приложения / обработчика работают на разных портах (один для API и один для веб-интерфейса). У них много общего кода, но у каждого есть свое пространство имен, в котором он выполняет всю работу, связанную с этим интерфейсом. Теперь я хочу развернуть его как сервлет, работающий в tomcat или что-то подобное (на самом деле он должен работать в любом контейнере сервлета). У меня возникли проблемы, потому что кажется, что lein-ring предполагает, что в сервлете будет только один обработчик. Например, в моем project.clj у меня есть эта строка:
:ring {:handler caribou.api/app
:servlet-name "caribou"
:init caribou.api/init}
Это отлично подходит для API, но как насчет внешнего интерфейса? Нужно ли мне сделать еще один проект, включающий этот, чтобы он мог иметь свой собственный обработчик и сервлет? Всегда ли сервлет работает на одном порту?
Есть две вещи, в которых я не уверен в принципе: я не из java, поэтому я не уверен, что происходит с подходом сервлета и какие у него ограничения, и мне неясно, как именно Clojure переводит в парадигму сервлета достаточно, чтобы структурировать этот проект в общем виде.
Любая помощь приветствуется, спасибо!