Dear,

We are trying to get to a point where bundles installed through Aries
subsystems can be updated at runtime. The new artifacts for the bundles are
supposed to be retrieved from our maven repositories.

Our current setup is capable of two things:
- Installing bundle jars present as content in ESA archives
- Installing bundles retrieved from our maven repositories based on the
subsystem content of an ESA not containing bundle jars.

When trying to update a bundle (regardless whether it was a packaged jar or
an artifact retrieved from our maven repositories), we run into issues when
resolving the URI.

Specifically we get the following exception:
java.net.MalformedURLException: Unknown protocol: subsystem
at java.net.URL.<init>(URL.java:620)
at
org.apache.felix.framework.util.SecureAction.createURL(SecureAction.java:255)
...
at org.apache.felix.gogo.command.Basic.update(Basic.java:849)
...
Caused by: java.lang.IllegalStateException: Unknown protocol: subsystem
at
org.apache.felix.framework.URLHandlersStreamHandlerProxy.parseURL(URLHandlersStreamHandlerProxy.java:373)
at java.net.URL.<init>(URL.java:615)
... 40 more

When debugging this execution, we looked at the bundle (BundleImpl) used by
Felix and we saw that originalLocation of the BundleArchive is referencing
the subsystem:
"subsystem://?Subsystem-SymbolicName=com.myGroupId.my-subsystem-subsystem&Subsystem-Version=1.0.0.SNAPSHOT!/[email protected]
"

This location explains the unknown protocol when parsing the URI.

Is it possible to influence this originalLocation in Aries? Can you give us
a pointer to where this originalLocation of the installed bundle is set?

Thanks!

Wouter

Reply via email to