1

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

例如,以 URL 结尾的请求.java将由旧版 Java 处理,而以 结尾的请求.clj将由 Clojure 处理。目前,我看到三个选项:

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

以上方法真的可行吗?你还有什么建议?

谢谢!

4

1 回答 1

3

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

我按照这里的示例 - https://stackoverflow.com/a/2187427/827617 创建库。这样您就不需要使用clojure.java.api,您的 Clojure 库编译成一个 jar,您可以将其包含在您的 Spring 应用程序中并直接从 Java 调用(您公开的函数是类上的静态方法)。

于 2015-02-09T15:29:01.427 回答