2017-02-14 3 views
0

В настоящее время я пытаюсь использовать MSF4J с StreamingOutput API. Однако вместо потоковой передачи файла я хочу передать последовательность нескончаемых коротких строк/текстов. Я хочу, чтобы строки были немедленно очищены от клиента. Однако клиент не получает его после флеша. Я считаю, что это связано с 8KB-буфером по умолчанию, потому что через несколько секунд мои строки размываются. Как переопределить этот буфер по умолчанию так же, как это делается в стеклянной платке? https://jersey.java.net/apidocs/2.22/jersey/org/glassfish/jersey/server/ServerProperties.html#OUTBOUND_CONTENT_LENGTH_BUFFERwso2 msf4j: Как настроить свойства сервера

Я хочу что-то вроде ...

Properties properties = new Properties() 
properties.set("jersey.config.server.contentLength.buffer", 0);** 

new MicroservicesRunner() 
    .setProperties(properties)** 
    .addInterceptor(new HTTPMonitoringInterceptor()) 
    .deploy(new MyService()) 
    .start(); 

Мой streamingout класс

new StreamingOutput(){  
    public void write(OutputStream os) throws IOException, WebApplicationException  { 
     while(true){ 
      os.write("some string".getBytes()); 
      os.flush(); 
     }  
     } 
} 

спасибо.

+0

Итак, ваши строки сразу же смываются, но не значения int - это случай? –

+0

@ThusithaThilinaDayaratne, целые числа также рассматриваются как строки, поскольку они возвращаются через REST. Даже с флешем клиент не получит строки сразу, пока не будет потреблен буфер 8kb. – Speng

+0

Можете ли вы поделиться полным сервисом? –

ответ

1

Это код целиком. Он работает, но я хочу, чтобы я мог переопределить свойства сервера.

например. properties.set ("jersey.config.server.contentLength.buffer", 0); спасибо.

упаковка ph.sample.api.ms;

импорт org.wso2.msf4j.MicroservicesRunner; import org.wso2.msf4j.analytics.httpmonitoring.HTTPMonitoringInterceptor;

общественного класса Application { государственной статической силы основных (String [] арг) {

new MicroservicesRunner(9000) 
      .addInterceptor(new HTTPMonitoringInterceptor()) 
      .deploy(new StreamService()) 
      .start(); 
} } 

пакет ph.sample.api.ms;

импорт javax.ws.rs.GET; import javax.ws.rs.Path; импорт javax.ws.rs.core.Response;

импорт org.wso2.carbon.metrics.core.annotation.Timed; import java.io.IOException; import java.io.OutputStream;

import javax.ws.rs.WebApplicationException; импорт javax.ws.rs.core.StreamingOutput;

@Path ("/ поток") общественного класса StreamService { @GET @Path ("/ подписка") @Timed общественный резонанс подписаться() {

return Response.ok(new StreamingOutput(){ 
     @Override   
     public void write(OutputStream os) throws IOException, WebApplicationException { 
     while(true){ 
      os.write("some string".getBytes()); 
      os.flush(); 
     }    
     } 
    }).build(); 
} 

}

+0

Обновите свой вопрос. Не размещайте как ответ –

+0

Вы можете изменить размер буфера на основе вашего требования./См. Образец https://github.com/wso2/msf4j/blob/master/samples/fileserver/src/main/java/org/ WSO2/msf4j/пример/FileServer.java # L110 –

Смежные вопросы