0

Разочарованный, я отправляю этот вопрос. Я уверен, что я достаточно занялся серфингом, чтобы знать, что правильный ответ пока не обсуждается. Но если дело противоположное, примите мои извинения и поделитесь со мной ссылкой на форум.Джерси SSE не работает с Tomcat 7

Я тестирую концепции SSE-трансляции с использованием API SSE от Джерси.

Я не использую Maven или что-то еще. Поскольку животное проект я работаю, был начат путь, прежде чем я стал знаком с Maven, поэтому я вручную добавлять Jar файлы в папку Lib Web-Inf

У меня есть следующие соответствующие jars-

2/28/2016 06:58 PM   85,147 javax.json-1.0.4.jar 
12/28/2016 06:58 PM   85,353 javax.servlet-api-3.0.1.jar 
12/28/2016 06:58 PM   115,534 javax.ws.rs-api-2.0.1.jar 
12/28/2016 06:58 PM   100,146 jaxb-api-2.2.7.jar 
12/28/2016 06:58 PM   117,090 jersey-client-2.2.jar 
12/28/2016 06:58 PM   600,514 jersey-common-2.2.jar 
12/28/2016 06:58 PM   52,819 jersey-container-servlet-core-2.2.jar 
12/28/2016 06:58 PM   18,107 jersey-container-servlet.jar 
12/28/2016 06:58 PM   971,310 jersey-guava-2.24.1.jar 
12/28/2016 06:58 PM   30,495 jersey-media-sse.jar 
12/28/2016 06:58 PM   801,094 jersey-server-2.2.jar 

My web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0"> 
    <display-name>SDTP-SS-UK-ERP</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 
    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class> 
     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
     </filter-class> 
     <async-supported>true</async-supported> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/struts/*</url-pattern> 
    </filter-mapping> 

    <!-- Jersey Support Configuration for RestFul WebServices --> 
    <servlet> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <!-- <servlet-name>jersey-servlet</servlet-name> --> 
     <servlet-class> 
      org.glassfish.jersey.servlet.ServletContainer 
     </servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.rest.services,com.sse.services</param-value> 

     </init-param> 
     <!-- 
     <init-param> 
      <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     --> 
     <load-on-startup>1</load-on-startup> 
     <async-supported>true</async-supported> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <!-- <servlet-name>jersey-servlet</servlet-name> --> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

My Test SSE регистрационный файл. Я использую это, чтобы зарегистрироваться для SSE:

 @Singleton 
@Path("/sse") 
public class SseTest extends ResourceConfig 
{ 


    public SseTest() { 
     super(SseTest.class, SseFeature.class); 
    } 

    public SseBroadcaster BROADCASTER = new SseBroadcaster(); 

    @GET 
    @Path("/getSSE") 
    @Produces(SseFeature.SERVER_SENT_EVENTS) 
    public EventOutput getMessageQueue() 
    { 
     EventOutput eventOutput = new EventOutput(); 

     this.BROADCASTER.add(eventOutput); 
     System.out.println(eventOutput.toString()); 
     return eventOutput; 
    } 

// После этого регистрируется, я триггер вещания через другой сервисно

@GET 
@Path("/test2/{id}") 
@Produces(MediaType.TEXT_PLAIN) 
//@Consumes(MediaType.TEXT_PLAIN) 
public String addMessage(@PathParam("id") final String msg) throws IOException 
{ 

    String misg= msg+"\\n\\n"; 
    OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); 
    OutboundEvent event = eventBuilder.mediaType(MediaType.TEXT_PLAIN_TYPE).data(String.class, misg).build(); 
    System.out.println(event.getData()); 
    BROADCASTER.broadcast(event); 
    return "Message '" + msg + "' has been broadcast."; 
} 

Теперь я поделюсь, что происходит в Chrome или Firefox:

Когда я звоню в службу getSSE, браузер регистрирует поток событий, и даже есть таблеток eventStream в данных сети с пустым табличным идентификатором, типом, данными.

Когда я звоню в службу/test2/10, для этого отображается 200 OK, и ответ отображается в браузере.

На вкладке getSSE первый getSSE отображается как завершенный, а другой getSSE появляется как ожидающий. Но данные источника событий все еще равны нулю.

После вызова test2 дважды вот результат:

getSSE 200 EventSource sse.html: -Infinity 149 B 35,41 сек
getSSE 200 EventSource Другие 149 B 11,0 мин
getSSE 200 EventSource Другое 144 B В ожидании

Может кто-нибудь указать, почему я не получаю данные? Я не получаю ошибок во время выполнения в Server End Java.

Сервер Tomcat 7.0.69 Java является JDK 1.7

Пожалуйста, помогите мне сделать эту работу .. Я потерял сон из любопытства, где я буду неправильно

+0

Любой, пожалуйста, помогите –

ответ

0

Проблема решена

Проблема с версиями библиотеки