Gần đây tôi đã viết một ngôn ngữ kịch bản chuyên gia nhỏ và đã sử dụng Maven để xuất một gói tuân thủ OSGi cũng xuất một bộ mô tả dịch vụ vào tệp đăng ký dịch vụ "META-INF/services/javax.script.ScriptEngineFactory
".OSGi có không tương thích về cơ bản với JSR-223 Scripting Language Discovery không?
Vấn đề là mặc dù các gói nhập và xuất OSGi là tốt, đăng ký dịch vụ có vẻ không tương thích với OSGi (vì OSGi giữ các gói của nó khỏi đường dẫn lớp chung và sử dụng các trình nạp lớp riêng biệt cho các mô-đun).
Câu hỏi của tôi là tôi đúng khi nghĩ rằng OSGi không tương thích với cơ chế Khám phá dịch vụ và nếu không, tôi có thể thêm gì vào siêu dữ liệu gói của mình để ScriptEngineManager.getEngineFactories()
liệt kê công cụ tập lệnh của tôi trong môi trường OSGi?
Một sự không tương thích JSR-223 và OSGi khác là tại các tập lệnh thời gian chạy thường sẽ mong muốn nhập các lớp. Tuy nhiên, OSGi thích gói để xác định nhập khẩu tại thời gian xây dựng bằng cách khai báo chúng trong gói JAR META-INF/MANIFEST.MF của gói. Chỉ thị DynamicImports-Package với một ký tự đại diện có thể giải quyết vấn đề này với mức giá tưới xuống quản lý phiên bản JAR của OSGi. – buzz3791