Я пытаюсь получить простой пример чат-программы Atmosphere, работающей с Glassfish и Jersery.
Пока у меня есть базовый архетип веб-приложения maven со следующей структурой:
Файл ресурсов чата — это простой сервис REST, использующий аннотации Atmosphere:
package core;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import org.atmosphere.annotation.Broadcast;
import org.atmosphere.annotation.Suspend;
@Path("/")
public class ChatResource {
@Suspend(contentType = "application/json")
@GET
public String suspend() {
return "";
}
@Broadcast(writeEntity = false)
@POST
@Produces("application/json")
public Response broadcast(Message message) {
return new Response(message.author, message.message);
}
}
Классы сообщений и ответов представляют собой простые оболочки POJO. Файлы index.jsp, application.js, jquery.atmosphere.js и jquery.js скопированы непосредственно из примера проекта (найденного здесь).
Мой web.xml настроен на следующее:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Archetype Created Web Application</display-name>
<servlet>
<description>AtmosphereServlet</description>
<servlet-name>AtmosphereServlet</servlet-name>
<servlet-class>org.atmosphere.cpr.AtmosphereServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AtmosphereServlet</servlet-name>
<url-pattern>/chat/*</url-pattern>
</servlet-mapping>
</web-app>
При переходе на страницу получаю следующую ошибку:
Извините, но у вас проблемы с сокетом или сервер не работает
Если я перейду по пути, к которому пытается получить доступ страница (http://localhost:8080/.../chat), я получаю следующее сообщение:
org.atmosphere.cpr.AtmosphereMappingException: обработчик атмосферы не найден. Убедитесь, что вы определили его внутри META-INF/atmosphere.xml или аннотировали с помощью @AtmosphereHandlerService.
Мне, должно быть, не хватает файла или конфигурации установки, но я не могу найти, где (в приведенном выше сообщении говорится, что атмосфера.xml отсутствует, но в примере этого нет). Любая помощь будет оценена по достоинству.