Osgi paketlerimi günde 4 kez yeniden yüklemem gereken bir gereksinim var. Bir paketi yeniden yüklemek, statik örneğin yeniden oluşturma, deve yollarını yeniden yükleme, yeniden oluşturma ve enjekte etme iş parçacığı havuzları, veritabanı bağlantı havuzları ..etc (diğer bahar xml öğeleri) anlamına gelir. Paketlerimi ssh ile yenilemeyi denedim, ancak fazla mesaiyi değiştirebilecek bir paket id'sine ihtiyacım vardı. Yani, sembolik adlarıyla demetleri alır ve bunları yeniler Yönetici Paketi 4 kezOsgi paketlerinin güncellenmesiyle ilgili sorun
osgi impl : felix
container : apache-servicemix-4.4.1-fuse-03-06
Service Dependency spec : Blueprint
tüm ortak sınıflar kullandı bir yardımcı paket hayranlarıyla yardımcı paket ile birlikte 3 desteler vardır ve gündüz hizmet yazdı arayüzler. Bu 3 paket arasında kod paylaşımı yoktur (hiçbiri herhangi bir paket ihraç etmez). Bunların hepsi deve vm uç noktaları ve hizmetleri ile etkileşime girer. Sadece diğer 3 demeti yeniliyor ve yardımcı paket hiçbir hizmet sunmuyor.
Şimdi, sorun, başlattıkları ve düzgün çalıştıkları bu 3 paket üzerinde herhangi bir güncelleştirme yaptığım zaman, ama her seferinde jconsole'da 800-900 sınıfı bir artış görüyorum. Gc zorlamak da bu nesneleri temizlemiyor gibi görünüyor. Peki, bu eski kablolu nesneler ne olabilir? Hizmet bağımlılıkları otomatik olarak güncellenmeli ve paketler arasında kod bağımlılıkları yok. Güncellemeden önceki ve sonraki sınıfların sayısındaki farkı kontrol ettim.
i bazı sınıfların bu sayı görebiliyorduiki katına org.apache.activemq.camel.component.VmComponent, org.apache.commons.dbcp.BasicDataSource gibi ..etc ve bazı özel fasulye o ben deve rotalarımda tanımladı. Ben deve çekirdeği, blueprint, kuvars ... vs için konteyner bağımlı değilim.Ve tam olarak fasulye, VM uç noktaları .. deve bağlamında ve blueprint-config xml güncellemesinde tanımlanan bileşenlere. Paketi güncellediğinizde, FrameworkWiring.refreshBundles() yöntemini çağırması önerilir. Ancak, demetleri arasında kod paylaşımı yok ve sanırım şu anda yanlış olduğunu düşündüğüm başka bağımlılıklar konteyneri ele almalıyım. Ve servicemix mevcut felix çerçeve uygulamasının FrameworkWiring.refreshBundles() (ref) destekleyip desteklemediğinden emin değilim. Bu sorunu nasıl giderebilirim?
Teşekkür sanre6
Eski bundle örneğinin etrafında asılı olan iş parçacıklarınız var mı? – artbristol
evet, onların sayısı ikiye katlandı. Örneklerimi kapatmam gerektiğini, demeti güncellemeden önce deve rotalarını kapatmam gerektiğini mi söylüyorsun? – sanre6
Aynı sorunu bulduk. Ekinoks uygulamasına geçmek bu problemi ortadan kaldırıyor, o zaman ben Felix OSGI konteyneriyle ilgili bir sorundan şüpheleniyorum. –