我有,我需要重新加載我的OSGi包,每日4次的要求。重新加載bundle意味着重新創建靜態實例Bean,重新加載駱駝路由,重新創建和注入線程池,數據庫連接池..等(其他spring xml東西)。我試圖通過ssh刷新我的捆綁軟件,但是我需要捆綁標識來改變加班時間。所以,我寫了一個經理一束,用符號名稱得到束和刷新他們每天有與助手捆綁.The幫手束沿着3根已使用問題與更新OSGi包
osgi impl : felix
container : apache-servicemix-4.4.1-fuse-03-06
Service Dependency spec : Blueprint
所有常見 類和服務4倍接口。這3個軟件包中沒有代碼共享(它們都不導出任何軟件包)。它們都通過camel vm端點和服務進行交互。我只刷新了其他3個捆綁軟件,並且幫助器捆綁軟件不提供任何服務。現在
,問題是當過我做他們的啓動和正常工作這3包的更新,但我看到每次我這樣做的時候800-900課上的JConsole的增加。強制gc似乎也沒有清理這些對象。那麼,這些舊有線物體會是什麼?服務依賴關係應該被自動更新,並且bundle之間沒有代碼依賴關係。我在更新之前和之前檢查了類的數量差異。
我可以看到一些類中的數量已經翻了一番像org.apache.activemq.camel.component.VmComponent, org.apache.commons.dbcp.BasicDataSource ...等和一些自定義的豆,我已經在我的駱駝路線中定義了。我很依賴駱駝核心,藍圖,石英...等。什麼容器上正好發生在豆,VM endpoints..etc在駱駝上下文和組件藍圖配置XML的定義上的更新。我知道它建議您在更新捆綁軟件後調用FrameworkWiring.refreshBundles()。但是,我沒有代碼共享捆綁之間,我推測任何其他依賴容器應該處理我認爲現在是錯誤的。而且我不知道,如果在ServiceMix的當前費利克斯框架實現支持FrameworkWiring.refreshBundles()(ref),我是不是能夠得到它的工作。我該如何解決這個問題?
感謝 sanre6
你有沒有從舊的包實例掛線程? – artbristol 2012-04-18 07:54:03
是的,他們的人數增加了一倍。你是否想說我必須關閉我的實例,在更新捆綁之前關閉駱駝路由? – sanre6 2012-04-19 06:01:41
我們發現相同的問題。切換到equinox實現使這個問題消失,然後我懷疑Felix OSGI容器的問題。 – 2015-03-10 10:55:19