Интеграция Java-приложения на базе Spring и библиотеки Clojure

У нас есть веб-приложение на основе Spring 4.0, работающее в Tomcat 8 (в качестве альтернативы у нас есть стартовый скрипт для Undertow). Spring MVC обрабатывает запросы. Я ищу способ перенести часть кода обработки запросов в библиотеку Clojure с минимальными изменениями в унаследованном коде Java.

Например, запросы с URL-адресами, заканчивающимися на .java будет обрабатываться устаревшей Java, а запросы, заканчивающиеся на .clj будет обработан Clojure. Сейчас я вижу три варианта:

  1. Включить библиотеку jar Clojure в зависимости и использовать Java-проект clojure.java.api вызывать код Clojure из Java.
  2. Используйте своего рода RPC/RMI или очереди сообщений, например, возможности обработки очереди сообщений Redis и Carmine. Таким образом, Clojure будет жить в отдельной JVM.
  3. Используйте своего рода обратный прокси-сервер для выполнения URL-маршрутизации.

Вышеуказанные подходы реально осуществимы? Что бы вы еще предложили?

Спасибо!

1 ответ

Решение

Я сделал похожую вещь, но в приложении DropWizard, а не в приложении Spring. Я пошел с подходом #1.

Я следовал примеру здесь - /questions/18286626/vyizov-clojure-iz-java/18286639#18286639 чтобы создать библиотеку. Таким образом, вам не нужно использовать clojure.java.apiваша библиотека Clojure компилируется в jar-файл, который вы можете включить в приложение Spring и вызывать непосредственно из Java (представленные вами функции являются статическими методами в классе).

Другие вопросы по тегам