在vertx应用程序中创建多个httpserver

时间:2018-05-12 11:18:16

标签: java vert.x

我目前正在研究vertx 3.我通过输入“localhost:8080 / home”来访问我的应用程序,我需要调用其他路由而不更改浏览器地址栏中的URL。例如,我有两种形式:

    <form action="/list" method="POST">
         <input type="text" name="list"/>
         <input type="submit" value="submit"/>
    </form>

    <form action="/insert" method="POST">
         <input type="text" name="insert"/>
         <input type="submit" value="submit"/>
    </form>

我想在第一个表单的action属性中定义URL “localhost:9090 / list”,并且URL “localhost:9091 / insert”在第二个表单的action属性中定义,并且“localhost:8080 / home”仍然显示在浏览器地址栏中。有可能用vert.x做到这一点吗? 如果您有示例代码,请告诉我。我想过Ajax,但我不知道它是否可以做到。

我想问一下,在不同的端口(9090,9091,9092等)上监听多个Verticle是否是个好主意。如果是,感兴趣的是什么?

目前我使用2个Verticle,当我问一个地址例如“localhost:9090 / list”时,它有时会起作用,有时我会“Resouces not found”同样适用于“localhost:9091 / insert”。如果有多个Verticle是个好主意,我该如何解决这个问题?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  1. 是的,只有使用AJAX才能访问其他端口或子域而无需离开初始页面。 代码看起来像这样(jQuery):

    var form = $( '#myForm' );
    form.submit(function( event ) {
      event.preventDefault();
      $.ajax({
        method: 'POST',
        url:'http://localhost:9091/insert',
        data: form.serialize(),
        ....
      });
    });
    
  2. 在不同端口下的Verticle(-s)中启动http-servers实际上代表了微服务的想法。如果您使用相同的端口,则意味着您公开了在多个Verticle上缩放的相同服务。当然,在不同的端口下公开 相同的服务 并遇到你的问题是没有意义的。