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

时间:2015-02-09 14:42:08

标签: spring clojure redis rmi carmine

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

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

  1. 在Java项目的依赖项中包含Clojure库jar,并使用clojure.java.api从Java调用Clojure代码。
  2. 使用某种RPC / RMI或消息队列,例如Redis和Carmine的消息队列处理功能。这样,Clojure就会生活在一个单独的JVM中。
  3. 使用某种反向代理来执行URL路由。
  4. 以上方法实际可行吗?你还有什么建议?

    谢谢!

1 个答案:

答案 0 :(得分:3)

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

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