Интеграция Java-приложения на базе Spring и библиотеки Clojure
У нас есть веб-приложение на основе Spring 4.0, работающее в Tomcat 8 (в качестве альтернативы у нас есть стартовый скрипт для Undertow). Spring MVC обрабатывает запросы. Я ищу способ перенести часть кода обработки запросов в библиотеку Clojure с минимальными изменениями в унаследованном коде Java.
Например, запросы с URL-адресами, заканчивающимися на .java
будет обрабатываться устаревшей Java, а запросы, заканчивающиеся на .clj
будет обработан Clojure. Сейчас я вижу три варианта:
- Включить библиотеку jar Clojure в зависимости и использовать Java-проект
clojure.java.api
вызывать код Clojure из Java. - Используйте своего рода RPC/RMI или очереди сообщений, например, возможности обработки очереди сообщений Redis и Carmine. Таким образом, Clojure будет жить в отдельной JVM.
- Используйте своего рода обратный прокси-сервер для выполнения URL-маршрутизации.
Вышеуказанные подходы реально осуществимы? Что бы вы еще предложили?
Спасибо!
1 ответ
Я сделал похожую вещь, но в приложении DropWizard, а не в приложении Spring. Я пошел с подходом #1.
Я следовал примеру здесь - /questions/18286626/vyizov-clojure-iz-java/18286639#18286639 чтобы создать библиотеку. Таким образом, вам не нужно использовать clojure.java.api
ваша библиотека Clojure компилируется в jar-файл, который вы можете включить в приложение Spring и вызывать непосредственно из Java (представленные вами функции являются статическими методами в классе).