2012-02-20 21 views
6

Tengo la sensación de que me he perdido algo obvio aquí, pero no sé por dónde empezar a buscar.404s al desplegar una guerra negra en embarcadero al apretar

Tengo una aplicación noir fresco, creado de esta manera:

$ lein noir new hiworld 

agrego un nuevo manejador de página a 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})) 

puse para project.clj anillo:

(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) 

Comprobar que funciona a nivel local:

$ 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) 

construyo una guerra:

$ lein ring uberwar 
# builds hiworld-0.1.0-SNAPSHOT-standalone.war 

Todo bien hasta ahora. Ahora, implementarlo en el embarcadero:

$ 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 

Pero:

$ 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) 

Qué me he perdido? Por lo que puedo decir, eso debería ser todo lo que tengo que hacer para implementar una aplicación web trivial en el embarcadero, pero evidentemente tengo algo mal aquí. No me molesta el reinicio, entonces no lo hago think Necesito definir mi propio contexto, ¿o no?

ACTUALIZACIÓN

He seguido this secuencia de instrucciones para crear un simple "hola mundo" guerra no implica clojure en absoluto, y funciona como se esperaba, por lo que parece que hay algo que no Muy bien con la pila clojure.

actualizado de nuevo

que creó la aplicación anillo simple posible como una guerra independiente y desplegado ella. Esto funcionó, por lo que parece que es algo específico del negro.

ACTUALIZADO por tercera vez

he creado e implementado una aplicación compojure hola-mundo, que funcionó como se esperaba.

Respuesta

2

También tuve este problema. Encontré la solución en la lista de correo de Noir here.

En server.clj Hice dos cosas: eliminé la llamada (server/loadviews), y agregué mis vistas a los espacios de nombres requeridos.

Luego construí mi proyecto con el comando lein ring uberwar warname.war.

3

En un archivo .war, server/load-views no funciona porque no puede encontrar archivos físicos en la guerra. En hiworld/server.clj, solo necesita todos los espacios de nombres que proporcionan vistas.

Esto no se explica en los documentos, pero encontré un mailing list thread explicando lo que está mal.

Cuestiones relacionadas