2011-03-26 18 views
7

Bu gibi benim uygulama içinde gömülü bir dalgakıran sunucusu (dalgakıran 6.1.24) çalıştırıyorum:İskelet sunucusu için bağlantı/istek zaman aşımı nasıl ayarlanır?

Handler handler=new AbstractHandler() 
    { 
     @Override 
     public void handle(String target, HttpServletRequest request, 
       HttpServletResponse response, int dispatch) 
       throws IOException, ServletException { 
       //this can take a long time 
       doSomething(); 
     } 
    }; 


    Server server = new Server(8080); 
    Connector connector = new org.mortbay.jetty.nio.SelectChannelConnector();  
    server.addConnector(connector); 

    server.setHandler(handler); 
    server.start(); 
Bir zaman aşımı değerini (2 saniye) ayarlamak istediğiniz

böylece eğer handler.handle() yöntemi 2 saniyeden daha uzun sürerse, jetty sunucusu 408 http kodu (istek zaman aşımı) ile müşteriye zaman aşımı ve yanıt verir.

Bu, başvurumun istemci isteğini uzun süre tutmayacağını ve her zaman 2 saniye içinde yanıt vermeyeceğini garanti etmektir.

Biraz araştırma yaptım ve "connector.setMaxIdleTime (2000);" ile test ettim. ama işe yaramıyor.

+0

Bir kod örneği buldum [here] (http://eclipsesource.com/blogs/2009/10/02/executable-wars-with-jetty/) Sizin için yararlı olabilir. – FrVaBe

+1

lütfen, şimdi 6 yıldan beri bakımdan çıkmış olan ve şimdi 150'den fazla yayın yapan Jetty 7, Jetty 8 veya daha da iyi bir Jetty 9 kullanmayı düşünün. Jetty 9 için Dokümanlar şu adreste: https://www.eclipse.org/jetty/documentation/current/index.html –

+0

Bunu yapmanın yolunu buldunuz mu? - @ "Hung Duong" – Udy

cevap

1

SelectChannelConnector (Jetty'e) API bir göz atın:

http://download.eclipse.org/jetty/7.6.17.v20150415/apidocs/org/eclipse/jetty/server/nio/SelectChannelConnector.html

I (gelen bağlantıları kontrol eder) kanalın herhangi aşımı özellikleri bulmak için denedim: setMaxIdleTime(), setLowResourceMaxIdleTime () ve setSoLingerTime() mevcut görünür.

NOT: zaman aşımı özelliğinizin çalışmaz hale gelmesinin nedeni işletim sisteminizdeki soketin yapısıyla ilgilidir. Belki de İskelenin doğası (bunu bir yerlerde okudum ama nerede olduğunu hatırlayamıyorum).

NOT2: Zaman aşımını neden sınırlandırmaya çalıştığınızdan emin değilim, belki de daha iyi bir yaklaşım arabellek boyutlarını sınırlıyor mu? Hizmet reddi engellemeye çalışıyorsanız ...

İlgili konular