2010-07-27 30 views

Trả lời

3

Chưa được triển khai trong Spring Framework 3.x. Xem https://jira.springframework.org/browse/SPR-5587https://jira.springsource.org/browse/SPR-8517

Nếu những gì bạn muốn là hỗ trợ sao chổi (long ajax polling ajax) Bạn "có thể" thử CometD (http://cometd.org/documentation/cometd-java/server/services/integration-spring). Nhưng tôi cảnh báo bạn rằng tôi đã bỏ nó, nó chỉ cồng kềnh thôi! (Một điều đơn giản như việc bỏ phiếu dài đòi hỏi ngày cấu hình ??!)

Tôi chỉ thực hiện bản thân một số bộ điều khiển RESTful trong Spring3 và tự mình lập bản thân việc bỏ phiếu dài. Thực hiện yêu cầu kiểu Ajax của bạn đến máy chủ, bộ điều khiển của bạn giữ cho nó mở cho đến khi máy chủ có dữ liệu mới để gửi tới trình duyệt. Trình duyệt khởi tạo một yêu cầu bỏ phiếu dài mới để có được các sự kiện tiếp theo. Để tránh thời gian chờ kết nối, chỉ cần trả về các giá trị giả khiến khách hàng lặp lại yêu cầu.

Cách dễ dàng nhất là hầu hết các giải pháp tốt nhất.

+0

nên được thực hiện cho mùa xuân 3.1.0 mà đã được phát hành, nhưng theo https: //jira.springsource.org/browse/SEC-1685 nó đã được chuyển sang 3.2.0 ... tuy nhiên, hỗ trợ Servlet 3.0 là rộng hạn và nó không nhất thiết có nghĩa là xử lý không đồng bộ sẽ được triển khai quá –

4

Không quá nhanh, không dễ thực hiện việc bỏ phiếu dài tốt. Phương pháp mà bạn đã đề cập hoạt động tốt, nhưng có một vấn đề nghiêm trọng là "đói đói"

Mỗi phiếu thăm dò ý kiến ​​dài sẽ sử dụng hết một luồng, nếu bạn có 1000 người dùng đồng thời, bạn cần 1000 chủ đề để phục vụ yêu cầu bỏ phiếu dài (hầu hết thời gian cập nhật trạng thái phía máy chủ trên trình duyệt của khách hàng)

Jetty 6 có mẫu tiếp tục khéo léo giải phóng chuỗi yêu cầu bỏ phiếu dài được sử dụng bởi logic ứng dụng thực.

+0

Và Jetty 7, bây giờ bản phát hành hiện tại vào giữa năm 2011 hỗ trợ đầy đủ điều này. Tôi cũng đang tìm kiếm một tình trạng hiện tại trong hỗ trợ mùa xuân. –

2

Câu hỏi khá cũ, nhưng vẫn chưa được trả lời. Tác giả muốn hỗ trợ async trong Spring MVC và giải pháp vẫn chưa được đưa ra.

Như câu trả lời trước đã nêu, yêu cầu hỗ trợ không đồng bộ được gửi tới trình gỡ lỗi cộng đồng mùa xuân và sẽ được triển khai trong Spring 3.1.0. Điều này đã được phát hành gần đây, nhưng theo ghi chú phát hành "hỗ trợ Servlet 3.0" dự kiến ​​sẽ được thực hiện trong phiên bản 3.2.0: https://jira.springsource.org/browse/SEC-1685

Tôi cần COMET hiệu quả cao cho ứng dụng của mình. Việc triển khai hiện tại của tôi dựa trên ví dụ này: http://code.google.com/p/jquery-stream/wiki/EchoExample, nhưng tôi quan tâm đến việc chuyển nó sang bộ điều khiển Spring MVC. Hiện tại, tôi vừa cải thiện ví dụ và chèn thủ công các hạt đậu mùa xuân để cho phép giao tiếp với phần còn lại của ứng dụng. Tôi đã có một số vấn đề với nó, được mô tả trong câu hỏi của tôi: Tomcat 7 Async Processing failing - only one request processed simultanously. Đối với bây giờ nó đang làm việc tốt.

Tôi đã tìm thấy ví dụ sử dụng giải pháp jboss: http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Asynchronous_HTTP_Request_Processing.html, nhưng việc sử dụng jboss như đối với tôi không có giải pháp. JBoss quá lớn, quá chậm và quá khó để phát triển.

+0

Xem (và bỏ phiếu cho :)) https://jira.springsource.org/browse/SPR-8517 –

0

Hỗ trợ đồng bộ Servlet 3.0 hiện đang được xem xét. Nếu bạn có các trường hợp cụ thể mà bạn muốn xem được phản ánh, vui lòng nhận xét theo số SPR-8517 hoặc xem vé và thực hiện theo các cuộc thảo luận.

Các vấn đề liên quan