3

有没有人将 Clojure 代码与现有的 JavaEE 基础设施结合起来(在我的例子中是 Webspehere Application Server 8)?

在创建jar要部署到应用程序服务器的应用程序服务器时,我放入((:aot [carina.stateless])包括无状态 EJB 所需的类和两个接口)然后运行导致由所有依赖的 clojure 命名空间组成的庞大。project.cljcarina.statelesslein jarjar

我试图避免lein uberjar,因为我打算将更多应用程序部署到同一个应用程序服务器并使用共享 jar,但现在,大部分代码都已预编译。

如果我所做的只是实现javax.ejb.Remote和扩展,有没有办法避免这个 AOT 步骤产生一个巨大的 jar 文件javax.ejb.Stateless

4

1 回答 1

1

简短的回答:

不,没有办法做你想做的事。您也许可以挑选一些共享库并将它们移动到应用服务器中的类加载器层次结构中,但这“可能”不值得付出努力。

但请注意这个空间:

您的问题是您只需要(我希望)您的 EJB 使用的一些 clojure。

目前 clojure 不是模块化的,所以你不得不接受所有的 clojure.jar 和任何依赖项。

它目前对您没有帮助,但您需要的功能是“摇树”,您可以通过一些尚未指定的过程“摇动”您的依赖关系以及您不需要的所有位,让您一个小的运行时和 jar。

我相信在最近的 clojure conj 中提到了这一点,涉及在 android 等小型平台上的部署。

于 2012-05-03T19:46:34.813 回答