2012-03-29 16 views
30
<servlet> 
     <description>xxx</description> 
     <servlet-name>xxx</servlet-name> 
     <servlet-class>com.xxx.yyy</servlet-class> 
     <async-supported>true</async-supported> 
</servlet> 

Servlet web.xml yapılandırma dosyasında async-supported amacı nedir? Hangi durumda kullanabilirim?Web.xml'de async destekli amacı nedir?

+2

Servlet 3.0 için eklenen özellikler şunlardır: https://blogs.oracle.com/enterprisetechtips/entry/asynchronous_support_in_servlet_3 –

cevap

41

İronik olarak, tomcat'ın web.xml dosyasında bu özelliği nasıl yazacağımın sözdizimini arıyordum ve bu, google'dan açtığım ilk arama öğesiydi - doğru yazılıyor (çalışıyor), teşekkürler.

Sorunuzu yanıtlamak için, bu, sunucu uygulamasının gelen yanıtları daha sonra yanıt için saklamasına olanak tanır. İstek işlemek için kullanılan iş parçacığını serbest bırakır, böylece sunucu yanıt göndermeye hazır olana kadar başka bir yerde kullanılabilir.

Pratik amaçlı, bu yapılandırmada, istemciye (aslında istemci ilk isteği sunucuya gönderdikten sonra) push verisine sahip bir sunucu uygulayabilirsiniz.

Bu teknik, bir istemciden belirsiz aralıklarla değiştirilebilecek verileri almak için gereksiz zamanlanmış isteklerin gereksiniminin yerine geçer. Ve iş parçacığı üzerinde asılı değil, ölçeklenebilir bir şekilde yapar.


Bazı örnek kullanımın söz şunlardır:

Sohbet uygulamaları, zaman bir müşteri türleri diğer müşteriye anında görünmesini istediğiniz bir mesaj. Kullanıcıların e-postaları, e-posta sunucusu tarafından alındığı anda görüntülemelerine olanak sağlamak için e-posta uygulamaları.

Otomasyon görevleri için bir Programlama Mantık Denetleyicisinden bir tarayıcıya giriş değişikliği güncellemeleri göndermek için de kullandım. Üzerinde iyi bir öğretici olan

Here's. This da java'da bazı somun ve cıvataları kapsar.

+0

Bu, GlassFish 4.1 –

+4

için de geçerlidir. Not: Eşzamansız isteğinizle eşlenmiş herhangi bir filtre varsa, bunların her birinin de < "bölümünde true' işlevine ihtiyacı vardır – TMG

0

Eğer GlassFish 4.1 kullanıyor edersek, src/main/webapp/web.xml''deki bu deneyin:

<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 
<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
2

temel amacı Websockets bir geri dönüş mekanizması olarak XHR akışını sağlamaktır. Açık olarak yapılandırılmamışsa, uygulamanız java.lang.IllegalArgumentException yol açacak XHR akışına geri dönülemez: Async desteği bir sunucuda etkin olmalıdır ....

Daha ayrıntılı bilgi için buraya tıklayın (Servlet 3). zaman uyumsuz İstekleri):
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

amacıyla yapılandırma doğru uygulanan 1'e tarayıcınızda wesocket bağlantı sayısını sınırlamak olduğunu doğrulamak ve 1'den fazla sekmede uygulamayı açmak için. Konfigürasyon uygulanırsa, sekme 1'de ve hxr'de sekme 2'de yayınlanmış websocket bağlantısı olacaktır.