Tôi đang sử dụng Ngày CQ. Tôi muốn lưu trữ một số dữ liệu trong một SQL Server DB, sử dụng hồ bơi kết nối có sẵn trong giao diện điều khiển Felix. Tôi có thể làm điều này từ một JSP, bằng cách sử dụng các "sling" đối tượng của loại SlingScriptHelper định nghĩa trong defineObjects tagNhận các dịch vụ OSGi từ một gói trong Sling/CQ
sling.getService(DataSourcePool.class).
Tuy nhiên, tôi muốn sử dụng một servlet tạo ra trong một gói OSGi để xử lý các yêu cầu từ khách hàng. Servlet không có thẻ defineObjects, vì vậy đối tượng "sling" không được định nghĩa. Tôi không nhìn thấy một cách để tạo ra một đối tượng SlingScriptHelper hợp lệ trong servlet của tôi, nhưng có vẻ như nó phải là có thể.
Có cách nào không?
Tôi đã có thể sử dụng phương pháp chú thích SCR. Làm thế nào tôi sẽ nhận được một thể hiện của BundleContext, mặc dù? Đó là điều mà tôi không thể đoán ra được. – joelt
Tôi chưa thử nghiệm điều này, nhưng tôi nghĩ rằng nó có thể được thực hiện bằng cách sử dụng các phương thức activate() hoặc bind(). – joelt
Trong kích hoạt (..) và hủy kích hoạt (..) lấy một đối tượng osgi ComponentContext. Từ obj này, bạn có thể lấy được BundleContext. Bạn không nên cần đối tượng context context như Bertrand đã chỉ ra; bạn chỉ cần sử dụng DCS khởi tạo các đối tượng của bạn trong servlet của bạn (đó là dịch vụ sling). – empire29