Anonymous | Login | Signup for a new account | 12-17-2024 08:32 PST |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
0005476 | [Resin] | minor | always | 07-01-13 15:24 | 07-31-13 09:05 | ||||
Reporter | alex | View Status | public | ||||||
Assigned To | ferg | ||||||||
Priority | normal | Resolution | fixed | ||||||
Status | closed | Product Version | 4.0.36 | ||||||
Summary | 0005476: Async requests via Resin LoadBalancer | ||||||||
Description |
Comet requests return prematurely if requested via load balancer. <html> <head> <title>test</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> <script type="text/javascript"> var i = 0; function test() { if (i++ > 32) return; $.ajax({ type: 'GET', url: 'async' }); get(Math.floor(Math.random() * 100)); } function get(n) { $.ajax({ type: 'GET', url: 'image.png', data: { '_': n }, success: function() { setTimeout(test, 1000); } }); } $(function() { test(); }); </script> </head> <body></body> </html> package jp.co.intra_mart; import java.io.IOException; import java.util.concurrent.TimeUnit; import javax.servlet.AsyncContext; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class AsyncServlet extends GenericServlet { @Override public void service(final ServletRequest request, final ServletResponse response) throws IOException, ServletException { final AsyncContext context = request.startAsync(); context.setTimeout(30 * 1000); context.start(new Runnable() { @Override public void run() { try { TimeUnit.SECONDS.sleep(5); } catch (final Exception e) { e.printStackTrace(); } finally { context.complete(); } } }); } } package jp.co.intra_mart; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResinIISTestServlet extends HttpServlet { @Override protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { final StringBuilder builder = new StringBuilder(1024); builder.append("<html>\n"); builder.append(" <head>\n"); builder.append(" <title>test</title>\n"); builder.append(" <script src=\"//ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js\"></script>\n"); builder.append(" <script type=\"text/javascript\">\n"); builder.append(" var i = 0;"); builder.append(" function test() {\n"); builder.append(" if (i++ > 32) return;"); builder.append(" $.ajax({\n"); builder.append(" type: 'GET',\n"); builder.append(" url: 'async'\n"); builder.append(" });\n"); builder.append(" get(Math.floor(Math.random() * 100));\n"); builder.append(" }\n"); builder.append(" function get(n) {\n"); builder.append(" $.ajax({\n"); builder.append(" type: 'GET',\n"); builder.append(" url: 'image.png',\n"); builder.append(" data: { '_': n },\n"); builder.append(" success: function() { setTimeout(test, 1000); }\n"); builder.append(" });\n"); builder.append(" }\n"); builder.append(" $(function() {\n"); builder.append(" test();\n"); builder.append(" });\n"); builder.append(" </script>\n"); builder.append(" </head>\n"); builder.append(" <body></body>\n"); builder.append("</html>\n"); resp.getWriter().write(builder.toString()); } } |
||||||||
Additional Information |
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" [^] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [^] metadata-complete="false" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [^] http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> [^] <servlet> <servlet-name>ResinIISTestServlet</servlet-name> <servlet-class>jp.co.intra_mart.ResinIISTestServlet</servlet-class> </servlet> <servlet> <servlet-name>AsyncServlet</servlet-name> <servlet-class>jp.co.intra_mart.AsyncServlet</servlet-class> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>ResinIISTestServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AsyncServlet</servlet-name> <url-pattern>/async</url-pattern> </servlet-mapping> </web-app> |
||||||||
Attached Files | |||||||||
|
Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
32 total queries executed. 27 unique queries executed. |