假设我在 Clojure 中使用 ZeroMQ 和 BSON 作为协议开发了两个或更多不同的服务器应用程序。如何使用单个 JVM 实例部署它们,同时共享公共依赖项?
为每个独立应用程序使用一个 JVM 实例似乎很浪费内存。我计划未来开发几个 Clojure 应用程序,VPS 内存并不便宜。
虽然没有明确说明,但在应用服务器(Jetty、Glassfish)中运行的应用程序似乎共享相同的 JVM,同时隔离它们的状态。但是,它们需要一个容器,而且 Servlet 或 Enterprise JavaBeans 都没有我可以轻松适应我的自定义协议的实现。
我一直在考虑使用 Servlet 并实现一个虚拟 service() 方法,尽管我不喜欢有一个毫无意义的 HTTP 服务器开销的想法。至于 EJB 容器,我什至无法弄清楚它的实现。
有一个只需要 init() 和 destroy() 方法的容器会很好,但我找不到提供它的应用程序服务器。
也许有办法,或者我什至不需要应用程序服务器。有人能指出我正确的方向吗?