2012-12-18 32 views
6

Tôi đã viết một Groovy MainApp với chính (args).Làm thế nào để chạy vert.x được nhúng?

Khi tôi khởi chạy, thoát JVM trực tiếp ("Kết thúc thực thi JVM!").

import org.vertx.groovy.core.Vertx 

class MainApp { 

    public static void main(String[] args) { 

     Vertx vertx = VertxFactory.newVertx(); 

     vertx.createHttpServer().requestHandler{ request -> 
      println "A request has arrived on the server!" 
     }.listen(8080) 

     println "End of JVM execution !" 
    } 
} 

Làm thế nào để chạy một cách chính xác một máy chủ HTTP nhúng với vert.x?

Trả lời

2

Tôi gặp vấn đề tương tự với Java. Tôi đã kết thúc việc đặt một đối tượng vào .wait() sau tất cả các mã vert.x. Có vẻ khủng khiếp, nhưng thực sự có ý nghĩa bởi vì nó mang lại cho tôi một kích hoạt để tắt máy chủ theo yêu cầu (thông qua .notify()).

Điều này không tầm thường, nên được đề cập trong tài liệu chính thức của Vert.x.

+2

Đối mặt với nó quá, có vẻ như không có thời gian để bắt đầu ở chế độ không phải cụm và jvm dừng trước đó. Tôi đã giải quyết nó bằng 'TimeUnit.SECONDS.sleep (1);' cuối cùng: https://gist.github.com/yetanothercoder/21a2b47b686d902c5fee – yetanothercoder

+0

@yetanothercoder bất kỳ lý do nào không sử dụng '.wait' /' .notify' ? – user7610

0

Tôi phải đối mặt với điều này. Tôi đã thử vượt qua tên máy chủ sau đó nó hoạt động tốt.

Vertx Vertx = Vertx.newVertx ("hostname")

Tôi đoán có một số vấn đề xác định địa chỉ IP khi đang chạy tại địa phương và nó là không.

+0

Không, http://stackoverflow.com/a/14652319/365675 – yetanothercoder

0
RouteMatcher routeMatcher = new RouteMatcher(); 

     // HTTP server 
     HttpServer httpServer = vertx.createHttpServer(); 
     httpServer.requestHandler(routeMatcher); 
httpServer.listen(7777); 
0

Từ các tài liệu:

all Vert.x threads are daemon threads and they will not prevent the JVM for exiting. Therefore you must ensure that the main() method does not run to completion, e.g. in this example we have used System.in.read() to block the main thread waiting for IO from the console. 

Vì vậy, bạn cần phải thêm sau đây ở cuối phương thức chính của bạn như sau:

// Prevent the JVM from exiting 
System.in.read();