簡體   English   中英

在Java中啟動框架期間更新Apache Felix捆綁軟件

[英]Update Apache Felix Bundles during framework start up in Java

因此,我有這段代碼,在啟動過程中會調用該代碼來更新Apache Felix Framework中的捆綁軟件,但我只會更新我故意設置為7級或更高級別的捆綁軟件。 只要執行此代碼,就會從列表中刪除更新的捆綁軟件,並且控制台掛起。 其他時間,更新的捆綁軟件狀態為ACTIVE但控制台也掛起。

Arrays.stream(bundleContext.getBundles())
            .filter((bundle) ->  return bundle.adapt(BundleStartLevel.class).getStartLevel() > 6;
            .forEach((Bundle bundle) -> {
                try {
                    this.logger.log(LOG_DEBUG, "updating : " + bundle.getSymbolicName());
                    if (bundle.getState() == Bundle.ACTIVE) {
                        bundle.stop();
                    }
                    bundle.update();
                    bundle.start(Bundle.ACTIVE);
                } catch (BundleException exception) {
                    this.logger.log(LOG_ERROR, "Bundle update for " + name + " failed.", exception);
                }
            });

有沒有正確的方法來更新Apache Felix Framework捆綁軟件?

從給出的描述和代碼示例中,不可能確切地指出出了什么問題:

  • 該代碼何時准確調用?
  • 您在描述中說,僅更新起始級別為7或更高的包。 我在任何地方的代碼中都沒有看到。 實際上,它僅更新符號名稱等於name
  • 執行更新時根本不需要調用bundle.stop()bundle.start() 此外,此代碼中的邏輯存在缺陷:如果捆綁包之前未處於活動狀態,則現在將變為活動狀態。
  • 如果從`BundleActivator的start方法調用此代碼,則它可能會嘗試自行更新,這會導致各種不可預測的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM