2015-04-20 16 views
5

Tôi có một ứng dụng JAX-RS Jersey mà chạy trên một trường hợp Grizzly:Kết hợp Jersey với Tyrus

public class Application { 
    public static final String BASE_URI = "http://127.0.0.1:8080/rest"; 

    public static void main(String[] args) throws IOException { 
     ResourceConfig rc = new ResourceConfig().packages("my.package.rest"); 
     HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc); 
     System.out.println("Server started, press any key to stop."); 
     System.in.read(); 
     server.shutdownNow(); 
    } 
} 

bên my.package.rest có JAX-RS chú thích nguồn lực. Tôi muốn thêm websocket chú thích (@ServerEndpoint, @OnOpen, @OnMessage, v.v.) tài nguyên sử dụng Tyrus trên cùng một máy chủ (nói trong "http://127.0.0.1:8080/websocket") nhưng tất cả tài liệu tôi có thể tìm thấy cho thấy cách khởi động máy chủ websocket độc lập sử dụng Tyrus + thùng chứa Grizzly, không kết hợp với Jersey. Tôi đang tìm một cái gì đó như:

server.getServerConfiguration().addHttpHandler(new SomeTyrusHttpHandler("/websocket")); 

nhưng tôi không thể tìm thấy bất cứ điều gì tương tự như SomeTyrusHttpHandler. Làm thế nào tôi có thể kết hợp Jersey và Tyrus trong một máy chủ Grizzly đơn?

Trả lời

1

câu hỏi hay, nhưng hiện tại không có câu trả lời hay cho câu hỏi này. Bạn vẫn có thể làm điều đó, nhưng nó sẽ đòi hỏi phải đi sâu vào bên trong Grizzly; Tyrus được đăng ký bởi một addon (xem WebSocketAddOn) và nó có thể được kết hợp với Jersey cách đăng ký vào container đó. Xin lưu ý rằng việc tích hợp hai khung công tác này lại với nhau không phải là một thách thức nhỏ - chạy chúng trong một thùng chứa duy nhất là bước đầu tiên, nhưng có những thứ khác cần được chăm sóc, như "nhà cung cấp cá thể", vòng đời điều chỉnh, vv Tôi tin rằng chủ đề này vượt quá phạm vi của một câu trả lời SO - bạn có thể mong đợi blogpost từ tôi hoặc một số thành viên khác của Tyrus/Jersey về điều này. (Tôi sẽ đăng nó ở đây một khi đã xong).

Dù sao, tôi khuyên bạn nên sử dụng phương pháp bảo thủ hơn và sử dụng một số vùng chứa nhẹ hỗ trợ Servlet 3.1; nên yêu cầu ít công việc hơn ở bên cạnh bạn và bạn sẽ có thời gian chạy/vòng đời Servlet tiêu chuẩn.

+0

Chỉ cần sử dụng Khí quyển, nó thực hiện chính xác những gì bạn muốn và cho phép chạy Jersey trên đầu trang của Grizzly, GlassFish, vv https://github.com/Atmosphere/atmosphere. Ví dụ http://goo.gl/s7OwGc là ví dụ siêu dễ dàng của Jersey 2 chạy một cách minh bạch trên đầu trang của các ổ cắm web. – jfarcand

+0

xem https://github.com/pavelbucek/placeholder - PoC, kết hợp giữa Jersey và Tyrus (trên đầu trang của Grizzly + HK2). –

+0

Xin chào, có tin tức nào về sự tích hợp như vậy không? Tôi muốn thêm một tài nguyên WebSocket vào dự án Jersey của tôi. –

Các vấn đề liên quan