2009-08-31 41 views
8

Tôi mới sử dụng lập trình với OSGI. Bất cứ ai có thể cung cấp cho tôi một ví dụ làm việc của một khách hàng/máy chủ dịch vụ osgi invocation.Ví dụ làm việc cho dịch vụ OSGI từ xa

Tôi đã cố gắng để đạt được điều này trong 2 tuần qua mà không thành công.

Dịch vụ của tôi đang được phát hiện và được thực hiện bởi một phiên bản nhật thực trong cùng một máy, nhưng khi tôi thử cùng một thứ từ một máy khác thì không thành công.

Mọi trợ giúp sẽ được đánh giá cao.

Cảm ơn.

Trả lời

8

Trong nền tảng OSGi (Phiên bản 4.1) Các dịch vụ được phát hiện thông qua đăng ký dịch vụ OSGi là các dịch vụ cục bộ chỉ có trong cá thể khung OSGi duy nhất (ví dụ: JVM đơn). Bạn không thể mong đợi để thực hiện một dịch vụ OSGi chạy trên một máy tính khác.

Nếu bạn muốn gọi dịch vụ OSGi trên nhiều trường hợp khung (nghĩa là nhiều JVM/nhiều máy), bạn nên xem Đặc tả OSGi được phân phối (RFC 119) sẽ là một phần của upcoming OSGi specification (Phiên bản 4 4.2) với CXF dưới dạng reference implementation.

Cập nhật: Một cách khác để gọi dịch vụ OSGi từ xa là sử dụng R-OSGi. Nó là một phần mềm trung gian cung cấp một cách gần như minh bạch để truy cập các dịch vụ trên các nền tảng OSGi từ xa.

+0

Trang CXF có một loạt các mẫu ở cuối trang. – SteveD

2

Trừ khi bạn đang chơi với triển khai OSGi OSC của CXF hoặc Eclipse, không có gì liên quan đến việc remoting trong OSGi. Bạn sẽ có thể thực hiện bất kỳ công việc triển khai từ xa nào giữa 2 quy trình dựa trên OSGi.

Điều tôi muốn nói là có thể bạn sẽ gặp vấn đề về trình tải lớp nếu bạn thử và sử dụng RMI hoặc bất kỳ mẫu RPC nào có sẵn trong tính năng truy cập từ xa của Spring. Điều này có thể giải quyết được, nhưng đòi hỏi một sự hiểu biết tốt về OSGi và trình nạp lớp.

Mã của bạn có hoạt động không nếu bạn chạy mã ngoài OSGi? Bạn đang sử dụng tường lửa? Bạn có thể chạy bất kỳ dịch vụ dựa trên mạng nào trên máy tính của mình có thể hiển thị với các PC khác trên mạng không?

Như được mô tả, sự cố có vẻ liên quan đến mạng nhiều hơn liên quan đến OSGi.

Ngoài ra, bạn không đề cập đến những gì bạn gặp phải khi chạy trên các máy tính khác nhau.

3

Dịch vụ OSGi là nội bộ vm, chứ không phải liên vm, trừ khi bạn thêm phân phối ở trên cùng.

Bạn có thể muốn xem Brian's tutorial, một công việc tốt cho thấy cách dịch vụ OSGi có thể được xuất và sử dụng ECF để thực hiện phân phối từ xa. Có khá nhiều nhóm tham gia nhưng anh ấy làm tốt công việc giải thích nó.

1

Nền tảng Riena của nền tảng nhật thực cung cấp OSGi remote services bằng cách xuất bản dịch vụ dưới dạng điểm cuối dịch vụ web.

1

Có thể câu trả lời sẽ được cập nhật vì chúng không còn hợp lệ nữa.

Hiện tại có sẵn các Dịch vụ từ xa OSGi Bạn có thể đọc về nó trong Đặc tả kỹ thuật của OSGi Enterprice Chương 100. Có hai triển khai chính: Eclipse ECF và Apache CXF.Có một ví dụ điển hình cho ECF here

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