Hi,

Am 14.05.2012 um 14:54 schrieb Thierry Templier:

> Hello Felix,
> 
> Thanks very much for your answer. I just read the javadoc of the 
> PackageAdmin and it seems that it only applies when the bundle exports 
> packages and it's not the case... Nevertheless I tried to call the 
> refreshPackages method for the updated bundle and I have the same behavior.
> 
> I think I precisely identify where the problem occurs in the code. In 
> fact we have three main bundles:
> 
> - the first one A is the server.
> - the second one B is the application that need to be deployed on the 
> server. The application (and some other hints) are provided through an 
> OSGi service.
> - the third one C is the deployment manager that implement the 
> whiteboard pattern.
> 
> The application registers all resources that it will provide. Something 
> like that:
> 
> register("/path", MyResource.class);
> 
> This is done with the application class within bundle C. Both 
> application and resource are in the same bundle so there is no loading 
> problem.
> 
> When the request is executed for the path, the server tries to determine 
> which is the appropriate method of the resource for the call. It calls 
> using reflection the getDeclaredMethods for the resource class. This 
> class is gotten using the registered application. In this case, I have 
> an class not found exception for a class that corresponds to the return 
> type of a method. This exception only occurs when updating bundle B...
> 
> Hope I'm clear with my explanations...

Not really ...

Bundle C is the manager. But is it really C providing the application classes ?

Me thinks, C registers classes from B. When B is updated the old registered 
classes must first be removed and registered again after the update. You can do 
this either in the BundleActivator.stop method of B (better) or when receiving 
the STOPPING event in C.

Regards
Felix


> 
> Thierry
> 
> 
> 
>> Hi
>> 
>> Once you updated the bundle other bundles may still be using the old bundle 
>> version. You have to refresh the bundle wirings for them to be wired to the 
>> new bundle.
>> 
>> Traditionally this has been done with a call to 
>> PackageAdmin.refreshBundles(Bundle[]) (There is now new API to do this, but 
>> I do not know it off-hand; but the old is still avaliable).
>> 
>> Regards
>> Felix
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to