集成基于 Spring 的 Java 应用程序和 Clojure 库

Integrate Spring-based Java application and Clojure library

我们在 Tomcat 8 中有一个基于 Spring 4.0 的 Web 应用程序 运行(或者我们有一个 Undertow 的启动脚本)。 Spring MVC 正在处理请求。我正在寻找一种方法,将一些请求处理代码推迟到 Clojure 库,对遗留 Java 代码的更改最少。

例如,URL 以 .java 结尾的请求将由传统 Java 处理,而以 .clj 结尾的请求将由 Clojure 处理。现在,我看到三个选项:

  1. 在 Java 项目的依赖项中包含 Clojure 库 jar 并使用 clojure.java.api 从 Java.
  2. 调用 Clojure 代码
  3. 使用某种 RPC/RMI 或消息队列,例如Redis和Carmine的消息队列处理能力。这样,Clojure 将存在于单独的 JVM 中。
  4. 使用某种反向代理执行 URL 路由。

以上方法是否可行?您还有什么建议?

谢谢!

我做过类似的事情,但在 DropWizard 应用程序而不是 Spring 应用程序上。我采用方法 #1。

我按照这里的例子 - 创建库。这样你就不需要使用 clojure.java.api,你的 Clojure 库会编译成一个 jar,你可以将其包含在你的 Spring 应用程序中并直接从 Java 调用(你公开的函数是 class).

上的静态方法