Oh I’m pretty sure it is possible in your case.

Regards,
Neil

On 15 August 2014 at 11:07:00, Konstantine Kougios 
([email protected]) wrote:

Hi Bruce,  

This is not possible in my case. This is because A doesn’t expose any  
service. A is just a models bundle for apache sling, so there are model  
classes annotated with @Model. Then C (sling) registers those models in  
it’s adaptTo registry. There is no service exported by A.  

B is my service layer and it requires the models of A, and there are  
services that need to adaptTo() during activation.  

Cheers  


On 15/08/2014 10:59, "Bruce Jackson" <[email protected]> wrote:  

>Konstantine  
>  
>As others have said, you should assume anything about bundle start order,  
>and neither should you have to make one bundle start another.  
>If B depends on A, then it should have a dependency on a service interface  
>exported by A. There are several ways you can implement this, as Neil  
>says, either by DS or by a ServiceTracker in B.  
>  
>Thanks  
>  
>Bruce  
>  
>On 14/08/14 17:18, "Konstantine Kougios" <[email protected]>  
>wrote:  
>  
>>Hi Bruce,  
>>  
>>C is a service that keeps a class registry based on annotations  
>>A uses those annotations. When A is started, the annotated classes are  
>>registered with C  
>>B depends on A but via C.  
>>  
>>So B doesn’t depend on a service of A (A contains domain model classes  
>>that are annotated). But it needs the annotated classes to be registered  
>>on C. C is a 3rd party bundle (sling) which is always in started state.  
>>  
>>What I did so far, on B I added a BundleActivator that forces A to start:  
>>  
>>public class Activator implements BundleActivator {  
>> @Override  
>> public void start(final BundleContext bundleContext) throws  
>>Exception {  
>> Bundle[] bundles = bundleContext.getBundles();  
>> for (Bundle bundle : bundles) {  
>> String name = bundle.getSymbolicName();  
>> if (“my_A_bundle_symbolic_name".equals(name)) {  
>> bundle.start();  
>> }  
>>….  
>>}  
>>  
>>This works and solves my issue but it means I need to manage any other  
>>such dependencies in that class. I don’t know if there is a better way.  
>>  
>>Cheers  
>>  
>>  
>>  
>>  
>>  
>>On 14/08/2014 17:12, "Bruce Jackson" <[email protected]>  
>>wrote:  
>>  
>>>Hi Konstantine  
>>>  
>>>I think if you could provide some kind of simple dependency statement,  
>>>it  
>>>would be clearer. I can’t work out if you’re saying you have:  
>>>  
>>>a depends on b  
>>>b depends on c  
>>>  
>>>or  
>>>  
>>>a depends on b  
>>>b depends on c  
>>>  
>>>or a depends on b  
>>>c depends on a and b  
>>>  
>>>?  
>>>  
>>>Thanks  
>>>  
>>>Bruce  
>>>  
>>>On 14/08/14 15:55, "Konstantine Kougios" <[email protected]>  
>>>wrote:  
>>>  
>>>>Hi,  
>>>>  
>>>>"If they depend on a service that are not started yet they should just  
>>>>wait until it becomes available²  
>>>>  
>>>>Problem is that the service is on bundle C and started during container  
>>>>startup. Bundle C is not restarted when I deploy my bundles. A has  
>>>>annotations on some classes that declare that they have to be  
>>>>registered  
>>>>on C. B uses those annotated classes and the services of C. But B is  
>>>>started before A which means C is not aware of the annotated classes of  
>>>>A.  
>>>>(I hope it makes sense)  
>>>>  
>>>>Cheers  
>>>>  
>>>>  
>>>>On 14/08/2014 12:23, "Tommy Svensson" <[email protected]> wrote:  
>>>>  
>>>>>I agree with the following statement:  
>>>>>  
>>>>> Your bundles should never make any assumptions on the order in  
>>>>>which  
>>>>>they are started.  
>>>>>  
>>>>>I would stick to this statement. Your bundles should be able to handle  
>>>>>themselves correctly no matter in which order things are started. If  
>>>>>they  
>>>>>depend on a service that are not started yet they should just wait  
>>>>>until  
>>>>>it becomes available. When all bundles are upp and running and all  
>>>>>services are available all should be good. You should consider a  
>>>>>timeout  
>>>>>waiting for something however. If your code just accept that something  
>>>>>will be available in due time, the order bundles are started in are  
>>>>>completely irrelevant. I would also say that the  
>>>>>application/service/whatever will be more stable then, since if it can  
>>>>>handle that, it can also handle services temporarily being gone later  
>>>>>due  
>>>>>to bundle redeployment by simply waiting for them to become available  
>>>>>again. This allows redeployments with minimal impact on running code.  
>>>>>  
>>>>>Cheers,  
>>>>>Tommy  
>>>>>  
>>>>>  
>>>>>14 aug 2014 kl. 12:54 skrev Jan Willem Janssen  
>>>>><[email protected]>:  
>>>>>  
>>>>>> -----BEGIN PGP SIGNED MESSAGE-----  
>>>>>> Hash: SHA1  
>>>>>>  
>>>>>> On 14/08/14 12:47, Konstantine Kougios wrote:  
>>>>>>> This creates problems for me as some services on A do register  
>>>>>>> classes on a separate bundle C. So A services, when activated,  
>>>>>>> expect to find those registrations on C but can¹t.  
>>>>>>>  
>>>>>>> Is this a common issue? Is there a solution?  
>>>>>>  
>>>>>> Your bundles should never make any assumptions on the order in which  
>>>>>> they are started. OSGi is intended to be a dynamic environment in  
>>>>>> which services can come and go at any time.  
>>>>>>  
>>>>>> Basically, you want to use a higher-level API, such as Felix  
>>>>>> Dependency Manager or Declarative Services to describe the service  
>>>>>> dependencies. This way, your services can get callbacks or get  
>>>>>> notified when their dependencies are met or are no longer met.  
>>>>>>  
>>>>>> - --  
>>>>>> Met vriendelijke groeten | Kind regards  
>>>>>>  
>>>>>> Jan Willem Janssen | Software Architect  
>>>>>> +31 631 765 814  
>>>>>>  
>>>>>> /My world is revolving around INAETICS and Amdatu/  
>>>>>>  
>>>>>> Luminis Technologies B.V.  
>>>>>> Churchillplein 1  
>>>>>> 7314 BZ Apeldoorn  
>>>>>> +31 88 586 46 00  
>>>>>>  
>>>>>> http://www.luminis-technologies.com  
>>>>>> http://www.luminis.eu  
>>>>>>  
>>>>>> KvK (CoC) 09 16 28 93  
>>>>>> BTW (VAT) NL8169.78.566.B.01  
>>>>>> -----BEGIN PGP SIGNATURE-----  
>>>>>> Version: GnuPG/MacGPG2 v2.0.17 (Darwin)  
>>>>>> Comment: GPGTools - http://gpgtools.org  
>>>>>>  
>>>>>> iQIcBAEBAgAGBQJT7JVWAAoJEKF/mP2eHDc4tyQP/2nBps6b0s5JAm6NFceq0w8Z  
>>>>>> W/jM6CTP2+3T3kZBsUIauU74thMAo3fYDapprtS1dSIc5CvQYJIGN6Ls4fw+NVt7  
>>>>>> jh+iQpddtWEsR+j3K38TP+5LhRL4glQcaKu5As1kWeLpccMIxG8X/b+PjelMbuXD  
>>>>>> DBu3JPp3n7SH20JKfcCAtvo5a7fVXmFg8C5i3xEyfX9nd0IjccaAgC6MJTbyFyTX  
>>>>>> pw0p5cwdRP1/izo+ErIHcOu0zTKvSnfovPYgl7HOwwwafCj5ZJpZjNTHezIiNDWq  
>>>>>> 1UvTJN6owX0a7sG/O/dOl1KZ1r7HG3w0pRX88XJ952FIBZXiwGROyuciizt7S8hj  
>>>>>> vaikwUXkX1L8VG3O5/wVEbBVXzaStTCtjUUL2obh7hMt8gHFweV4wAte3Z49cr4G  
>>>>>> 11V5PoaS0lCyqA7JiSi42Ob23JiZZ9vg3ja2+n98LT6F9bhjV3Tm5J+pPvKxnkcB  
>>>>>> +0Z2WTCsQ0URwKE8zY4aXARuVVm1ypq3c5DPz7bP+tEOG3b00kpgMCZkc3R8hut+  
>>>>>> 0NXfyzS99f9HAMX4Gyy65d6CcWGewOKc+qflkJLehdNs8taM/cRn8Cg3gF1gvXEU  
>>>>>> 29W7+3xLKf3jSRONPKsyXAZ3K/ykhvpRhJvrNzWDdZLUlANMHPq7+vI3lN5eycyp  
>>>>>> 3SR528SyP9q0xpGNpbay  
>>>>>> =3/N6  
>>>>>> -----END PGP SIGNATURE-----  
>>>>>>  
>>>>>>  
>>>>>>---------------------------------------------------------------------  
>>>>>> 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]  
>>>>>  
>>>>  
>>>>  
>>>>---------------------------------------------------------------------  
>>>>To unsubscribe, e-mail: [email protected]  
>>>>For additional commands, e-mail: [email protected]  
>>>>  
>>>  
>>>*** DISCLAIMER ***  
>>>  
>>>This message, including attachments, is intended solely for the  
>>>addressee  
>>>indicated in this message and is strictly confidential or otherwise  
>>>privileged. If you are not the intended recipient (or responsible for  
>>>delivery of the message to such person) : - (1) please immediately (i)  
>>>notify the sender by reply email and (ii) delete this message and  
>>>attachments, - (2) any use, copy or dissemination of this transmission  
>>>is  
>>>strictly prohibited. If you or your employer does not consent to  
>>>Internet  
>>>email messages of this kind, please advise Myriad Group AG by reply  
>>>e-mail immediately. Opinions, conclusions and other information  
>>>expressed  
>>>in this message are not given or endorsed by Myriad Group AG unless  
>>>otherwise indicated by an authorized representative independent of this  
>>>message.  
>>>?B?KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKC  
>>>B  
>>>*  
>>>??[???昧?X?K??K[XZ[???\???[???昧?X?P??[?^??\?X?K???‘???Y??]?[?[??栢  
>>>[X[????K[XZ[???\????[????[?^??\?X?K???  
>>  
>  
>*** DISCLAIMER ***  
>  
>This message, including attachments, is intended solely for the addressee  
>indicated in this message and is strictly confidential or otherwise  
>privileged. If you are not the intended recipient (or responsible for  
>delivery of the message to such person) : - (1) please immediately (i)  
>notify the sender by reply email and (ii) delete this message and  
>attachments, - (2) any use, copy or dissemination of this transmission is  
>strictly prohibited. If you or your employer does not consent to Internet  
>email messages of this kind, please advise Myriad Group AG by reply  
>e-mail immediately. Opinions, conclusions and other information expressed  
>in this message are not given or endorsed by Myriad Group AG unless  
>otherwise indicated by an authorized representative independent of this  
>message.  


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

Reply via email to