2010-09-24 44 views
5

Tôi có gói OSGi sử dụng tệp bundle-context.xml để khởi tạo bean.truy cập ngữ cảnh mùa xuân trong gói OSGi

<bean id="myBean" class="test.MyClass"> 
    <property name="output" value="test"/> 
</bean> 

Tôi có một lớp nhà máy cần có phiên bản bean. Trong thế giới phi OSGi, tôi đã luôn luôn chỉ sau để khởi tạo bối cảnh và có được một xử lý cho một đậu ...

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("bundle-context.xml"); 
MyClass bean = (MyClass) applicationContext.getBean("myBean"); 

Nhưng, trong OSGi (FuseESB 4.2, Servicemix4), container sẽ tự động tải tệp bundle-context.xml và khởi tạo ngữ cảnh mùa xuân. Nếu tôi tải ngữ cảnh một cách rõ ràng (sử dụng mã ở trên), thì 2 ngữ cảnh được tạo (điều này là xấu). Vì vậy, cách thích hợp để có được một xử lý cho cùng một bối cảnh/đậu là gì?

Trả lời

4

Tôi cho rằng đó là Mô-đun động mùa xuân tải ngữ cảnh của bạn - vì vậy bạn không nên làm điều này cho riêng bạn. Hãy xem Spring DM documentation - điều này sẽ hữu ích.

DM mùa xuân sẽ xuất bản ngữ cảnh ứng dụng dưới dạng dịch vụ OSGi. Hãy xem giải thích here và làm theo các khuyến nghị.

Đồng thời xem nhận xét của tôi bên dưới.

+0

thx, tôi đã đọc tài liệu này ... Tôi vẫn không thấy cách dễ dàng để thực hiện việc này. Có lẽ nhảy qua một số heap đăng ký OSGI để có được một xử lý cho bối cảnh, nhưng điều này nên là một điều tiêu chuẩn để làm với Spring trong OSGi. Tui bỏ lỡ điều gì vậy? Tôi chỉ muốn một thể hiện của một bean được định nghĩa trong Spring? –

+0

Tôi chỉ thấy rằng có một giao diện ApplicationContextAware Spring-Core mà bạn có thể thực hiện. Bối cảnh sẽ được tiêm vào lớp triển khai của bạn. Điều đó sẽ hoạt động và trở thành một giải pháp đơn giản hơn. Bạn có thể tìm thấy các ví dụ trên web, ví dụ: http://howto-notes.blogspot.com/2009/03/spring-applicationcontextaware.html – FrVaBe

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