2014-09-02 1 views
0

내가 제 7 장Scalaz + 부두 URL이

지금 행동에 책 스칼라와 거의 붙어 찾을 수 없습니다 예를 들어 응용 프로그램이 부두 서버 및 Scalaz를 사용하여 책에 구축있다. 핵심은 Jetty 서버가 시작되고 GET 요청이 특정 URL로 보내지면 Scalaz는 MethodParts 추출기 객체의 도움으로 패턴 일치를 사용해야합니다. 내가 URL을 액세스하려고 할 때마다

그러나, 결과는 내가 SBT의 0.13.5 및 부두 버전 9.2.2.v20140723를 사용하여 오전 404

입니다. Scalaz의 버전은 6.0.3입니다. 그리고 Java 8을 실행하고 있습니다.

나는 무엇이 문제 일 수 있는지 궁금합니다. Scalaz가 패턴 일치를 사용하여 URL을 일치시키기 때문에이 책에서 배웠던 다른 구성은 필요하지 않습니다.

부두가 제대로 구성되지 않았습니까? 아니면 내가 놓친 다른 것?

코드의 일부와 일치하는 패턴 :

def handle(implicit request: Request[Stream], servletRequest: HttpServletRequest): Option[Response[Stream]] = 

    request match { 
     case MethodParts(GET, "card" :: "create" :: Nil) => 
       Some(OK(ContentType, "text/html") << strict << CreateStory(param("message"))) 
     case _ => None 
    } 

어플리케이션 클래스 값의 주요부 :

val application = new ServletApplication[Stream, Stream]{ 

    def application(implicit servlet: HttpServlet, servletRequest: HttpServletRequest, 
     request: Request[Stream]) = { 
     def found(x: Iterator[Byte]): Response[Stream] = OK << x.toStream 
     handle | HttpServlet.resource(found, NotFound.xhtml) 
    } 
} 

web.xml 파일 :

<?xml version="1.0" encoding="utf-8"?> 
    <!DOCTYPE web-app PUBLIC 
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
    <servlet> 
     <servlet-name>Scalaz</servlet-name> 
     <servlet-class> 
      scalaz.http.servlet.StreamStreamServlet 
      </servlet-class> 
     <init-param> 
      <param-name>application</param-name> 
      <param-value> 
       com.kanban.application.WeKanbanApplication 
      </param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Scalaz</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Librabry 의존성 그 부두를 제공합니다 : https://github.com/earldouglas/xsbt-web-plugin

감사합니다.

+0

서블릿 **'2.3' **!? Jetty 4.x (1997 년부터)에 대해이 글을 쓰고 있습니까? 그 서블릿 스펙은 수년 전에 폐기되었습니다. Jetty 9.2는 Servlet spec 3.1에있다. (당신의'web.xml을 업그레이드하는 것을 고려해라.) –

+0

web.xml을 변경해도 문제가 해결되지 않는다. – Marin

답변

0

나는이 질문을 삭제할 수 있으면 좋겠다. 대체로 문제를 발견했습니다 ... sbt 컴파일러가 잘못된 소스 코드 파일을 사용하고 있습니다 ... IDE를 사용하지 않았기 때문에 그렇습니다.하지만 파일을 다른 위치로 옮길 때 Sublime Text 3 Beta , Sublime은 메모리에있는 파일을 이전 위치에 대한 참조와 함께 남겨 두었습니다 ... 그래서 컴파일 할 때 파일의 잘못된 버전이 사용되었습니다. 멍청한 실수.