Я теперь немного застрял с книгой Scala в действии по главе 7.Scalaz + Jetty URL не найден
Существует пример приложения построить в книге, которая использует Jetty сервер и Scalaz. Дело в том, что как только сервер Jetty запущен, и запрос GET отправляется на определенный URL-адрес, Scalaz должен использовать сопоставление шаблонов с помощью объекта экстрактора MethodParts.
Однако, когда я пытаюсь получить доступ к URL, то результат будет 404.
Я использую SBT 0.13.5 и пристани версии 9.2.2.v20140723. Версия Scalaz - 6.0.3. И я запускаю Java 8.
Мне было интересно, что может быть проблемой? Насколько я узнал из книги, никакой другой конфигурации не требуется, поскольку Scalaz использует сопоставление образцов для соответствия URL-адресам.
Может быть, что-то неправильно настроено с Jetty? Или что-то еще, что мне не хватает?
шаблон согласования часть кода:
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 зависимость, которая обеспечивает Jetty: https://github.com/earldouglas/xsbt-web-plugin
Спасибо!
Servlet ** '2.3' **!? Вы действительно пишете это против Jetty 4.x (с 1997 года)? Эта спецификация сервлетов была удалена много лет назад. Jetty 9.2 находится на спецификации сервлета 3.1 (подумайте об обновлении вашего 'web.xml'. –
Изменение web.xml не решает проблему. – Marin