注意
考虑到这篇原始文章是大约两年前写的,我想知道是否存在逐步说明的指令,以便我可以将一个Noir或其他Clojure Web应用程序集成到Apache中,无论是Jetty、Tomcat还是其他什么东西。类似的指令存在于Django中,我认为我明白Python在Django的情况下被运行为引擎而不是ring框架,因此Clojure web应用程序更加复杂。
结束注释
我深深地爱着Clojure,而Compojure似乎是一个很棒的Web框架。
但当我想将我的应用程序作为WAR在像Tomcat这样的常规应用程序服务器上部署时,一切都崩溃了。我实际上必须编写自定义的Ring处理程序来处理静态文件和资源,使其在本地Jetty和Tomcat上都能工作,因为标准处理程序不能正常工作,并且我必须手动在每个位置添加上下文根。
我感到非常惊讶,因为我必须编写所有这些代码来创建最简单的Web应用程序,它既可以在Jetty上运行又可以在Tomcat上运行。对于这一点,我只有三个可能的解释:
- 没有人将Clojure/Compojure用于除了在本地Jetty上进行开发之外的任何事情,即生产
- 每个人都在专用的Jetty上部署Clojure/Compojure应用程序而不需要上下文根(就像人们对Node.js应用程序所做的那样)
- 存在一种非常简单的方法来绕过我遇到的问题,我不知道
在您看来,这些哪一种情况是适用的?还是其他什么情况?
编辑:
请注意,使用Maven/Leiningen创建war文件是轻而易举的,并不是我的意思。我想知道为什么我必须编写如此多的代码才能使Compojure与Tomcat配合工作,例如静态文件服务和上下文根感知,这些基本的东西应该可以开箱即用。