有没有人在现有的JavaEE基础设施(我的情况下是Webspehere Application Server 8)中体验过组合Clojure代码?
创建要部署到Application Server的jar
时,我将(:aot [carina.stateless])
放到project.clj
(carina.stateless
包括无状态EJB所需的类和两个接口)然后运行lein jar
会导致巨大的jar
由所有相关的clojure名称空间组成。
我试图避免使用lein uberjar
,因为我打算将更多应用程序部署到同一个应用程序服务器并使用共享jar,但现在大多数代码都被预编译了。
如果我所做的只是实现javax.ejb.Remote
并扩展javax.ejb.Stateless
,有没有办法避免这个AOT步骤产生一个巨大的jar文件?
答案 0 :(得分:1)
简答:
不,没有办法做你想做的事。您可以选择一些共享库并将它们移动到应用服务器中的类加载器层次结构中,但它“可能”不值得付出努力。
但要注意这个空间:
你的问题是你需要(我希望)你的EJB使用的一些clojure。
目前clojure不是模块化的,所以你不得不采取所有的clojure.jar和任何依赖。
目前它对你没有帮助,但你需要的功能是“树摇动”,你可以通过一些尚未指定的过程“摇动”你的依赖关系以及你不需要的所有部分,留给你一个小的运行时和jar。
我相信这是在最近的clojure conj中提到的与android等小平台上的部署有关。