Java Servlet中的CompletableFuture

时间:2019-02-20 15:53:01

标签: java asynchronous servlets completable-future

我尝试使用 Java Servlet中的Java 8 CompletableFuture 异步处理http请求(然后在不使用AsyncContext的情况下实现Servlet 3.1的一种变体实现。

事实是,当我使用CompletableFuture时,即使我得到的httpCode为200,有时也会得到正确的答案,有时甚至根本没有响应。

当我尝试使用与CompletableFuture等效的 RxJava Observable 时,它工作正常。

这是我的Servlet代码,您可以找到注释的同步工作代码:

System.setProperty("webdriver.chrome.driver", "C:\\Users\\Selenium and drivers\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("http://the-internet.herokuapp.com/");
driver.manage().window().maximize();
System.out.println("Set up running");
   // <<------your test scenario should be placed here 
tearDown();

这是curl命令以及我得到的工作和不工作响应:

  

○→curl -v -i -X POST'http://localhost:8986/create/user/nio'-H'内容类型:application / json; charset = utf-8'-d'{“ name”:“ Alessandro”,“姓“:” Argentieri“}'      注意:不必要使用-X或--request,已经推断出POST。   *正在尝试:: 1 ...   * TCP_NODELAY设置   *连接到localhost(:: 1)端口8986(#0)   POST / create / user / nio HTTP / 1.1   主机:localhost:8986   用户代理:curl / 7.54.0   接受: /   内容类型:application / json; charset = utf-8   内容长度:45

     
      
  • 完全释放上传:45个字节中的45个      
     

{“ id”:“ ea3b8828-98a1-44f3-a938-40e79043d9db”,“名称”:“ Giorgio”,“姓氏”:“洛雷托”}   *与主机localhost的连接#0保持不变

现在下一个响应为空:

  

○→curl -v -i -X POST'http://localhost:8986/create/user/nio'-H'内容类型:application / json; charset = utf-8'-d'{“ name”:“ Alessandro”,“姓“:” Argentieri“}'   注意:不必要使用-X或--request,已经推断出POST。   *正在尝试:: 1 ...   * TCP_NODELAY设置   *连接到localhost(:: 1)端口8986(#0)   POST / create / user / nio HTTP / 1.1   主机:localhost:8986   用户代理:curl / 7.54.0   接受: /   内容类型:application / json; charset = utf-8   内容长度:45

     
      
  • 上传完全发送出去:45个字节中的45个   

  •   
  • 与主机localhost的连接#0保持不变

  •   

CompletableFuture有什么问题?

0 个答案:

没有答案