Hi Kasun,
thanks for providing this patch, appreciated! I am pondering a bit around
the fact that it seems the patch would only work if running inside an
Equinox environment. Is my understanding correct that the patch actually
isn't OSGi runtime agnostic but only works together with Eclipse Equinox
and not for instance with Apache Felix due to the explicite dependency on
BundleURLConnection?
Also note that BundleURLConnection is part of an internal package. My
understanding here is that using classes from an internal package should be
avoided where possible (see: [1] x-internal Directive) cause these are
actually implementation specific classes.
Also I was wondering whether accessing the BundleURLConnection class like
it is shown below, would remove the explicit dependency:
final URLConnection conn = url.openConnection();
if (conn.getClass().getName().equals(
"org.eclipse.osgi.framework.internal.core.BundleURLConnection")) {
final Method method = conn.getClass().getMethod("getLocalURL", null);
method.setAccessible(true);
if (null != method) {
toFile((URL) method.invoke(conn, null););
}
}
What do you think? If there would be a way to make this OSGi framework
independent, that would be great I'd suppose.
[1]
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fbundle_manifest.html
Cheers
Daniel
On Wed, Aug 13, 2014 at 9:33 AM, Kasun Gajasinghe <[email protected]> wrote:
> Hi folks,
>
> Currently, when TomEE scans it's libraries for TLDs etc. via the
> URLClassLoader, it gets a list of URLs pointing to jar files. To process
> these TomEE converts these URLs to actual file paths. As seen in this code
> segment [1], TomEE only processes URLs that have jar:/ or file:/ protocol.
> This works fine in a non-OSGi environment.
>
> But in OSGi environments, they have OSGi bundles instead of jars. So, what
> the URLClassloader returns is a set of URLs with bundleresource:/ protocol
> pointing to the bundles. We can in fact get the actual file path from the
> bundleresource:/ protocol as well.
>
> So, I'm writing this mail to the kind folks at TomEE to consider supporting
> bundleresource:/ protocol as well. I have attached a patch for this in this
> jira [2]. The patch worked fine in my OSGi enabled runtime based on
> Equinox. One caveat of this patch is that it adds Equinox as a compile-time
> dependency. But the TomEE runtime can function without this dependency.
>
> I hope this is the proper channel to talk about this. I'd value your
> feedback very much!
>
> [1]
>
> https://github.com/apache/tomee/blob/trunk/container/openejb-loader/src/main/java/org/apache/openejb/loader/Files.java#L391
>
> [2] https://issues.apache.org/jira/browse/TOMEE-1292
>
> Thanks,
> KasunG
>
> --
> ~~~*******'''''''''''''*******~~~
> *Kasun Gajasinghe*
> Software Engineer; WSO2 Inc.; http://wso2.com,
> *linked-in: *http://lk.linkedin.com/in/gajasinghe
> *blog: **http://blog.kasunbg.org* <http://blog.kasunbg.org/>
>
>
> *twitter: **http://twitter.com/kasunbg* <http://twitter.com/kasunbg>
>