我的應用程序當前正在使用equinox的IProvisioningAgent查找捆綁軟件並將其供應到正在運行的配置文件中。代碼符合以下內容;如何在配置到運行配置文件後解析並啓動捆綁軟件
// Look up agent provider using OSGI service
IProvisioningAgentProvider provider = ...;
IProvisioningAgent = provider.createAgent(null); // Use currently running agent
// Define IU
IInstallableUnit iu = ...; // found using remote repository queries
// Find profile
IProfileRegistry registry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME);
IProfile profile = registry.getProfile(IProfileRegistry.SELF);
// Create change request
IPlanner planner = (IPlanner) agent.getService(IPlanner.SERVICE_NAME);
IProfileChangeRequest request = planner.createChangeRequest(profile);
request.add(iu);
// Create plan and perform
IProvisioningPlan plan = planner.getProvisioningPlan(request, ctx, monitor);
IEngine engine = (IEngine) agent.getService(IEngine.SERVICE_NAME);
IStatus status = engine.perform(plan, PhaseSetFactory.createDefaultPhaseSet(), monitor);
這工作正常,我可以看到IU(具有依賴關係)已安裝在磁盤上。
我現在需要在不重新啓動的情況下將軟件包安裝到運行環境中。我可以在網上找到的所有例子只是重新啓動不適合在這種情況下的平臺。我以前使用BundleContext.installBundle()
,但似乎太低級別,我無法找到如何從配置API獲取URL。
我可以使用配置API的另一部分嗎?我已閱讀使用org.eclipse.equinox.internal.provisional.configurator.Configurator
,但它是內部的,似乎無法解決問題。
我的問題是:什麼是正確安裝,解決和啓動剛剛設置的捆綁包而不重新啓動的步驟。
ECLIPSE_TOUCHPOINT_ID的值是多少? –