appending reference to url passed to BundleContext.installBundle

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

appending reference to url passed to BundleContext.installBundle

Yash Bagadia
I have observed there are 2 ways to pass url to BundleContext.installBundle function as below:
String installURL1 = "file:///abc/def.jar;
 String installURL2 = "reference:file:abc/def.jar";
What is the difference in these 2 and which one is recommended?
 
Regards,
Yash Bagadia

_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
Reply | Threaded
Open this post in threaded view
|

Re: appending reference to url passed toBundleContext.installBundle

Thomas Watson
A 'reference' install will not copy the content of the bundle file into the framework's internal storage.  Instead it will load the bundle directly out of the file URL the 'reference' URL is pointing to.  Note that 'reference' URLs only support embedded 'file' URLs (not http etc.)  This has advantages for management agents that manage bundles in their own bundle store on disk and you want to avoid double copies of the bundle on disk when they are installed into the framework.
 
Any non-reference URL will copy the content of the bundle into the framework's internal storage.  This allows the original content to be deleted after installation and the bundle will remain functional and installed within the framework.
 
HTH

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: "[hidden email]" <[hidden email]>
Cc:
Subject: [equinox-dev] appending reference to url passed to BundleContext.installBundle
Date: Tue, Feb 7, 2017 3:33 AM
 
I have observed there are 2 ways to pass url to BundleContext.installBundle function as below:
String installURL1 = "file:///abc/def.jar;
 String installURL2 = "reference:file:abc/def.jar";
What is the difference in these 2 and which one is recommended?
 
 
Regards,
Yash Bagadia
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 


_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
Reply | Threaded
Open this post in threaded view
|

Re: appending reference to url passed toBundleContext.installBundle

Yash Bagadia
Hi Thomas, 
Thanks a lot for your reply.
Actually I am dealing a performance issue with some custom bundle loading/installing code.

So with 'reference' install i am getting a huge performance improvement. So is it the case? or its just that I am dealing with a badly written code :|

I have some 700 jars in a folder that and its not fixed can be added/removed by the user. The code is written as such it will loop over the list of jars present in the directory. Install the bundle one by one. If the bundle already loaded then it is uninstalled.

Currently, 'reference' is not used. But with 'reference' I got a huge performance improvement. Is it expected? 
 
Regards, Yash Bagadia


On Tuesday, 7 February 2017 6:57 PM, Thomas Watson <[hidden email]> wrote:


A 'reference' install will not copy the content of the bundle file into the framework's internal storage.  Instead it will load the bundle directly out of the file URL the 'reference' URL is pointing to.  Note that 'reference' URLs only support embedded 'file' URLs (not http etc.)  This has advantages for management agents that manage bundles in their own bundle store on disk and you want to avoid double copies of the bundle on disk when they are installed into the framework.
 
Any non-reference URL will copy the content of the bundle into the framework's internal storage.  This allows the original content to be deleted after installation and the bundle will remain functional and installed within the framework.
 
HTH

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: "[hidden email]" <[hidden email]>
Cc:
Subject: [equinox-dev] appending reference to url passed to BundleContext.installBundle
Date: Tue, Feb 7, 2017 3:33 AM
 
I have observed there are 2 ways to pass url to BundleContext.installBundle function as below:
String installURL1 = "file:///abc/def.jar;
 String installURL2 = "reference:file:abc/def.jar";
What is the difference in these 2 and which one is recommended?
 
 
Regards,
Yash Bagadia
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 




_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
Reply | Threaded
Open this post in threaded view
|

Re: appending reference to url passed toBundleContext.installBundle

Thomas Watson
I would expect a performance improvement in that case because you avoid having to do the extra disk IO to read and copy the content of the 700 jars to the internal framework storage.  But there is a catch.  The framework assumes that the code that is doing the installation of the bundles with 'reference' scheme is controlling the content of the bundle such that it will not dynamically change (get overwritten with new content or deleted) without either doing an update call (in the case where you override the file) or an uninstallation call in case you are going to delete the file.  Unspecified behavior will occur if you change or remove the content of a bundle file that the framework is actively loading out of.

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: Thomas Watson/Austin/IBM@IBMUS, "[hidden email]" <[hidden email]>
Cc:
Subject: Re: [equinox-dev] appending reference to url passed toBundleContext.installBundle
Date: Tue, Feb 7, 2017 10:49 AM
 
Hi Thomas, 
Thanks a lot for your reply.
Actually I am dealing a performance issue with some custom bundle loading/installing code.
 
So with 'reference' install i am getting a huge performance improvement. So is it the case? or its just that I am dealing with a badly written code :|
 
I have some 700 jars in a folder that and its not fixed can be added/removed by the user. The code is written as such it will loop over the list of jars present in the directory. Install the bundle one by one. If the bundle already loaded then it is uninstalled.
 
Currently, 'reference' is not used. But with 'reference' I got a huge performance improvement. Is it expected? 
 
 
Regards, Yash Bagadia

 
On Tuesday, 7 February 2017 6:57 PM, Thomas Watson <[hidden email]> wrote:
 
A 'reference' install will not copy the content of the bundle file into the framework's internal storage.  Instead it will load the bundle directly out of the file URL the 'reference' URL is pointing to.  Note that 'reference' URLs only support embedded 'file' URLs (not http etc.)  This has advantages for management agents that manage bundles in their own bundle store on disk and you want to avoid double copies of the bundle on disk when they are installed into the framework.
 
Any non-reference URL will copy the content of the bundle into the framework's internal storage.  This allows the original content to be deleted after installation and the bundle will remain functional and installed within the framework.
 
HTH

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: "[hidden email]" <[hidden email]>
Cc:
Subject: [equinox-dev] appending reference to url passed to BundleContext.installBundle
Date: Tue, Feb 7, 2017 3:33 AM
 
I have observed there are 2 ways to pass url to BundleContext.installBundle function as below:
String installURL1 = "file:///abc/def.jar;
 String installURL2 = "reference:file:abc/def.jar";
What is the difference in these 2 and which one is recommended?
 
 
Regards,
Yash Bagadia
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 

 
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 


_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
Reply | Threaded
Open this post in threaded view
|

Re: appending reference to url passed toBundleContext.installBundle

Yash Bagadia
Understood your point about the catch.

One more problem I am facing is that even when this part of code is executed second time. Let's say after launching the application for the second time it is still taking the same time when not using reference. 


On Tue, Feb 7, 2017 at 10:40 PM, Thomas Watson
I would expect a performance improvement in that case because you avoid having to do the extra disk IO to read and copy the content of the 700 jars to the internal framework storage.  But there is a catch.  The framework assumes that the code that is doing the installation of the bundles with 'reference' scheme is controlling the content of the bundle such that it will not dynamically change (get overwritten with new content or deleted) without either doing an update call (in the case where you override the file) or an uninstallation call in case you are going to delete the file.  Unspecified behavior will occur if you change or remove the content of a bundle file that the framework is actively loading out of.

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: Thomas Watson/Austin/IBM@IBMUS, "[hidden email]" <[hidden email]>
Cc:
Subject: Re: [equinox-dev] appending reference to url passed toBundleContext.installBundle
Date: Tue, Feb 7, 2017 10:49 AM
 
Hi Thomas, 
Thanks a lot for your reply.
Actually I am dealing a performance issue with some custom bundle loading/installing code.
 
So with 'reference' install i am getting a huge performance improvement. So is it the case? or its just that I am dealing with a badly written code :|
 
I have some 700 jars in a folder that and its not fixed can be added/removed by the user. The code is written as such it will loop over the list of jars present in the directory. Install the bundle one by one. If the bundle already loaded then it is uninstalled.
 
Currently, 'reference' is not used. But with 'reference' I got a huge performance improvement. Is it expected? 
 
 
Regards, Yash Bagadia

 
On Tuesday, 7 February 2017 6:57 PM, Thomas Watson <[hidden email]> wrote:
 
A 'reference' install will not copy the content of the bundle file into the framework's internal storage.  Instead it will load the bundle directly out of the file URL the 'reference' URL is pointing to.  Note that 'reference' URLs only support embedded 'file' URLs (not http etc.)  This has advantages for management agents that manage bundles in their own bundle store on disk and you want to avoid double copies of the bundle on disk when they are installed into the framework.
 
Any non-reference URL will copy the content of the bundle into the framework's internal storage.  This allows the original content to be deleted after installation and the bundle will remain functional and installed within the framework.
 
HTH

Tom
 
 
 
----- Original message -----
From: Yash Bagadia <[hidden email]>
Sent by: [hidden email]
To: "[hidden email]" <[hidden email]>
Cc:
Subject: [equinox-dev] appending reference to url passed to BundleContext.installBundle
Date: Tue, Feb 7, 2017 3:33 AM
 
I have observed there are 2 ways to pass url to BundleContext.installBundle function as below:
String installURL1 = "file:///abc/def.jar;
 String installURL2 = "reference:file:abc/def.jar";
What is the difference in these 2 and which one is recommended?
 
 
Regards,
Yash Bagadia
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 

 
_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev
 


_______________________________________________
equinox-dev mailing list
[hidden email]
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev