Servlets 404在挤压码头部署黑战时

Servlets 404在挤压码头部署黑战时,servlets,deployment,clojure,jetty,noir,Servlets,Deployment,Clojure,Jetty,Noir,我觉得我错过了一些明显的东西,但我不知道从哪里开始寻找 我有一个全新的黑色应用程序,创建于: $ lein noir new hiworld 我向src/hiworld/server.clj添加了一个新的页面处理程序: (ns hiworld.server (:require [noir.server :as server])) (server/load-views "src/hiworld/views/") (def handler (server/gen-handler {:mode

我觉得我错过了一些明显的东西,但我不知道从哪里开始寻找

我有一个全新的黑色应用程序,创建于:

$ lein noir new hiworld
我向src/hiworld/server.clj添加了一个新的页面处理程序:

(ns hiworld.server
  (:require [noir.server :as server]))
(server/load-views "src/hiworld/views/")

(def handler (server/gen-handler {:mode :dev
                                  :ns 'hiworld}))
我为ring设置了project.clj:

(defproject hiworld "0.1.0-SNAPSHOT"
            :description "FIXME: write this!"
            :dependencies [[org.clojure/clojure "1.3.0"]
                           [noir "1.2.2-SNAPSHOT"]]
            :dev-dependencies [[lein-ring "0.5.4"]]
            :ring {:handler hiworld.server/handler}
            :main hiworld.server)
检查它是否在本地工作:

$ lein deps
$ lein ring server-headless
# elsewhere
$ curl -I localhost:3000/welcome
HTTP/1.1 200 OK
Date: Mon, 20 Feb 2012 08:51:15 GMT
Set-Cookie: ring-session=ef00a7ad-2061-4026-9d94-3ed86ec8c46c;Path=/
Content-Type: text/html; charset=utf-8
Content-Length: 0
Server: Jetty(6.1.25)
我建立了一场战争:

$ lein ring uberwar
# builds hiworld-0.1.0-SNAPSHOT-standalone.war
到目前为止一切都很好。现在,我将其部署到jetty:

$ sudo apt-get install jetty libjetty-extra
$ sudo cp hiworld-0.1.0-SNAPSHOT-standalone.war /usr/share/jetty/webapps/root.war
$ sudo chown jetty:adm /usr/share/jetty/webapps/root.war
$ sudo mv /usr/share/jetty/webapps/root /usr/share/jetty/webapps/root-orig
$ sudo /etc/init.d/jetty restart
但是:

我错过了什么?据我所知,这应该是我在jetty上部署一个微不足道的web应用程序所需要做的全部工作,但显然我这里出了点问题。我不介意重新启动,所以我认为我不需要定义自己的上下文——或者我需要

更新

我按照一系列指令创建了一个简单的“hello world”战争,完全不涉及clojure,它按照预期工作,因此clojure堆栈似乎有一些不太正确的地方

再次更新

我创建了一个最简单的环应用程序作为一个独立的战争,并部署了它。这起作用了,所以它看起来像是黑色的东西

第三次更新


我创建并部署了一个hello world compojure应用程序,该应用程序按预期工作。

在.war文件中,服务器/加载视图无法工作,因为它在war中找不到物理文件。在hiworld/server.clj中,只需要提供视图的所有名称空间


文档中没有解释这一点,但我找到了一个解释错误的方法。

我也有这个问题。我在黑名单上找到了解决方案

server.clj
中,我做了两件事:删除了
(服务器/加载视图)
调用,并将视图添加到所需的名称空间中

然后,我使用命令
lein-ring-uberwar-warname.war
构建了我的项目

$ curl -I localhost:8080/welcome
HTTP/1.1 404 Not Found
Date: Mon, 20 Feb 2012 08:59:27 GMT
Set-Cookie: ring-session=c255da15-6cbd-4d2c-8e17-9d120918bde9;Path=/
Content-Type: text/html; charset=utf-8
Content-Length: 363
Server: Jetty(6.1.24)