2014-12-09 28 views
6

Làm cách nào để khởi động trình duyệt tự động sau khi khởi động ứng dụng khởi động mùa xuân.Không có bất kỳ phương thức gọi lại nào để kiểm tra xem webapp đã được triển khai chưa và sẵn sàng phục vụ các yêu cầu, khi trình duyệt được tải, người dùng sẽ thấy trang chỉ mục và có thể bắt đầu tương tác với webapp?Khởi chạy trình duyệt tự động sau khi webapp khởi động mùa xuân đã sẵn sàng

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
    // launch browser on localhost 
} 

Trả lời

4

Bạn có thể làm điều đó bằng một số mã java. Tôi không chắc chắn nếu khởi động mùa xuân có một cái gì đó ra khỏi hộp.

import java.awt.Desktop; 
import java.io.IOException; 
import java.net.URI; 
import java.net.URISyntaxException; 

public class Browser { 
    public static void main(String[] args) { 
     String url = "http://www.google.com"; 

     if(Desktop.isDesktopSupported()){ 
      Desktop desktop = Desktop.getDesktop(); 
      try { 
       desktop.browse(new URI(url)); 
      } catch (IOException | URISyntaxException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     }else{ 
      Runtime runtime = Runtime.getRuntime(); 
      try { 
       runtime.exec("xdg-open " + url); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+0

Có lẽ tôi nên xây dựng, tôi muốn để có được một callback như beanpostconstruct để cho tôi biết nếu bối cảnh web đã sẵn sàng để phục vụ, sau đó tôi có thể mở trình duyệt như mã trên hoặc sử dụng thư viện trình khởi chạy trình duyệt. – cherit

+0

Sau khi chạy, ứng dụng đã sẵn sàng ... Vì vậy, bạn chỉ có thể khởi chạy trình duyệt của mình sau đó. –

+0

Bạn có nghĩa là để nói phương pháp chạy là một cuộc gọi chặn? – cherit

0

Dưới đây đang làm việc cho tôi:

@EventListener({ApplicationReadyEvent.class}) 
void applicationReadyEvent() { 
    System.out.println("Application started ... launching browser now"); 
    Browse("www.google.com"); 
} 

public static void Browse(String url) { 
    if(Desktop.isDesktopSupported()){ 
     Desktop desktop = Desktop.getDesktop(); 
     try { 
      desktop.browse(new URI(url)); 
     } catch (IOException | URISyntaxException e) { 
      e.printStackTrace(); 
     } 
    }else{ 
     Runtime runtime = Runtime.getRuntime(); 
     try { 
      runtime.exec("rundll32 url.dll,FileProtocolHandler " + url); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Các vấn đề liên quan