{"id":4384795,"date":"2021-04-01T13:12:02","date_gmt":"2021-04-01T11:12:02","guid":{"rendered":"https:\/\/www.deptagency.com\/insight\/binding-and-unbinding-osgi-services-in-aem\/"},"modified":"2025-12-08T13:47:51","modified_gmt":"2025-12-08T11:47:51","slug":"binding-and-unbinding-osgi-services-in-aem","status":"publish","type":"article","link":"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/","title":{"rendered":"Binding and unbinding OSGI services in AEM"},"content":{"rendered":"<div class=\"block-article-post-header js-block-article-post-header block-article-post-header__theme--onyxGrey\">\n\t<button\tclass=\"cta-button block-article-post-header__back-button cta-button__color--white cta-button__style--back\" aria-label=\"Back\" >\n\t<svg width='41' height='41' viewBox='0 0 41 41' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><circle cx='20.5' cy='20.5' r='19.5' transform='rotate(-90 20.5 20.5)' stroke='var(--dept-button-icon-outline-color)' stroke-width='1.3' stroke-miterlimit='10' fill='none'\/><circle class='icon-backplate' cx='20.5' cy='20.5' r='19.5' transform='rotate(-90 20.5 20.5)' fill='var(--dept-button-icon-backplate-color)' fill-opacity='1'\/><path class='icon-center' d='M21.174 30 11 20.674l10.174-9.326m-9.326 9.328H30.5' stroke='var(--dept-button-icon-color)' stroke-width='1.3' stroke-miterlimit='10' fill='none'\/><\/svg>\n\t\t\t<span>\n\t\t\tBack to all articles\t\t<\/span>\n\t\n<\/button><h1\t\tclass=\"typography block-article-post-header__title typography__color--white typography__size--h1 typography__align--left\"\n\t\t\t>\n\t\tBinding and unbinding OSGI services in AEM\t<\/h1><div\n\t\tclass=\"image-wrap block-article-post-header__image-wrap\"\n\t\tdata-align=\"center center\"\n\t\t\t>\n\n\t\t\t<picture\n\t\tclass=\"image__picture\"\n\t\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<img\n\t\t\t\tsrc=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg\"\n\t\t\t\tclass=\"image block-article-post-header__image\"\n\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\/>\n\t\t<\/picture>\n\t\n\t<\/div><div class=\"author block-article-post-header__author\" data-animation=\"slide-fade\">\n\t\t\t<img\n\t\t\tclass=\"author__portrait\"\n\t\t\tsrc=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2023\/10\/Himanshu-Mody-150x150.jpg\"\n\t\t\talt=\"Himanshu Mody\"\n\t\t\/>\n\t\n\t<div class=\"author__text\">\n\t\tHimanshu Mody\t\t<br \/>\n\t\tVP Global Adobe Alliances\n\t\t\t<\/div>\n<\/div>\n\t<div class=\"block-article-post-header__meta\">\n\t\t\t\t\t\t\t<div class=\"block-article-post-header__meta-date\">\n\t\t\t\t<div class=\"block-article-post-header__date-description\">\n\t\t\t\t\tDate\t\t\t\t<\/div>\n\t\t\t\t<div class=\"block-article-post-header__published-date\">\n\t\t\t\t\t1 April 2021\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t<\/div>\n<\/div>\n\n<div class=\"block-title-and-content js-block-title-and-content block-title-and-content__theme--white\">\n\t<div class=\"block-title-and-content__layout\">\n\t\t\n\t\t\t\t\t<div class=\"block-title-and-content__content\">\n\t\t\t\t\n<h2\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\tIn Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations. This is one of AEM\u2019s most powerful features that Java developers can leverage in order to achieve customization. We often create our own components that consume core services that are provided by AEM. Consuming these services can be done very efficiently using references.\t<\/h2>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tJust like Spring framework and Google\u2019s Guice it is possible to use dependency injection in AEM in order to acquire a reference to one or more services. The possibilities for this that are offered to us by the OSGi standards are quite numerous, in this blog I\u2019d like to share the basics of using service references with you.\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tFirst, to create an OSGi component, simply use the @Component annotation on your class:<br>@Component<br>public class MyComponent\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tYour newly created component will not be activated automatically when it is not referenced by any other component. This is called delayed activation. To prevent delayed activation you can set the value of \u201cimmediate\u201d in the component annotation to true.<br>@Component(immediate=true)\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tReferencing another component can be done though the usage of the reference annotation:<br>@Reference<br>private MyService myService;\t<\/p>\n\n<h2\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\tInterfaces for OSGI services\t<\/h2>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tWhen using references you\u2019ll need to add the service annotation to your component. You\u2019ll also need to provide a service interface. Providing a service interface is not only good practice but also necessary for the binding process to work correctly. A service that may be referenced would look like this:\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\t@Component<br>@Service<br>public class MyServiceImpl implements MyService\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tIn this case the component implementation class is called MyServiceImpl, it\u2019s interface is called MyService. The @Reference annotation will cause a lookup of a service with this exact interface name.\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tWhen your OSGi service implementation uses more than one interface each of these can be used to reference the service. You may also specify exactly which interfaces are used:<br>@Service(value={MyService.class, OtherInteface.class}\t<\/p>\n\n<h2\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\tTargeting a service implementation\t<\/h2>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tReferencing services using just the reference annotation and nothing more works perfectly for cases in which a service interface has only one implementation. But if a service has multiple implementations you can select a specific implementation by using a property filter:\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\t@Reference(target = \u201d(type=http)\u201d)<br>private MyService myService\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tThis will make sure that the service implementation that has the property \u201ctype\u201d set to \u201chttp\u201d will be referenced:\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\t@Component @Service @Properties( @Property(name = \u201ctype\u201d, value = \u201chttp\u201d) ) public class MyServiceImpl implements MyService\t<\/p>\n\n<h2\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\tReferences in a list or map\t<\/h2>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tIf you have more than one implementation of a service you may want to reference all of them in a list or map. By setting and implementing the bind and unbind methods you can store multiple references of the same service:\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\t@Reference( referenceInterface = MyService.class, policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, bind = \u201cbindMyService\u201d, unbind = \u201cunbindMyService\u201d) private Map&lt;String, MyService> myServiceMap = new HashMap&lt;String, MyService&amp; protected void bindMyService(MyService myService, Map properties) { if (properties.containsKey(\u201ctype\u201d)) { String type = properties.get(\u201ctype\u201d).toString(); myServiceMap.put(type, myService); } } protected void unbindMyService(MyService myService) { myServiceMap.values().remove(myService); }\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tNotice that in the reference annotation the attribute \u201creferenceInterface\u201d has been set to the interface class. This is needed because we are now using the Map interface rather than the MyService interface for our class attribute.\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tNotice that in the bind method the first argument is a service implementation and the second argument is a map containing the properties of this implementation. This map will contain the property \u201ctype\u201d and the value that has been assigned to it.\t<\/p>\n\n<p\t\tclass=\"typography block-typography__typography typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tThis setup will allow us to programmatically select one of the referenced services:<br>public void performAction(String type) { myServiceMap(type).action(); }\t<\/p>\n\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\n\t<div class=\"block-title-and-content__social-links\">\n\t\t\t\t\t<a\n\t\t\t\thref=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-url=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-title=\"Binding and unbinding OSGI services in AEM\"\n\t\t\t\tdata-share-type=\"copy\"\n\t\t\t\tclass=\"block-title-and-content__social-links-item js-social-link\"\n\t\t\t\taria-label=\"Copy page link\"\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tdata-tooltip=\"true\"\n\t\t\t\t\tdata-tooltip-text=\"Link copied to clipboard.\"\n\t\t\t\t\t\t\t>\n\t\t\t\t<svg fill='none' xmlns='http: \/\/www.w3.org\/2000\/svg' width='22' height='22' viewBox='0 0 22 22'><path d='M6.832 15.167l8.333-8.333M9.332 6.001l2.787-2.787a4.715 4.715 0 016.666 0v0a4.715 4.715 0 010 6.667L16 12.668M5.999 9.334l-2.787 2.787a4.715 4.715 0 000 6.666v0a4.715 4.715 0 006.667 0l2.787-2.786' stroke='currentColor' stroke-width='2'\/><\/svg>\t\t\t<\/a>\n\t\t\t\t\t\t<a\n\t\t\t\thref=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https%3A%2F%2Fwww.deptagency.com%2Fen-in%2Finsight%2Fbinding-and-unbinding-osgi-services-in-aem%2F\"\n\t\t\t\tdata-share-url=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-title=\"Binding and unbinding OSGI services in AEM\"\n\t\t\t\tdata-share-type=\"facebook\"\n\t\t\t\tclass=\"block-title-and-content__social-links-item js-social-link\"\n\t\t\t\taria-label=\"Share to Facebook\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\n\t\t\t\t\t\t\t>\n\t\t\t\t<svg width='14' height='22' viewBox='0 0 14 22' fill='none' xmlns='http: \/\/www.w3.org\/2000\/svg'><path d='M4.032 22L4 12H0V8h4V5.5C4 1.789 6.298 0 9.61 0c1.585 0 2.948.118 3.345.17v3.88H10.66c-1.8 0-2.15.856-2.15 2.112V8h5.241l-2 4H8.51v10H4.032z' fill='currentColor'\/><\/svg>\t\t\t<\/a>\n\t\t\t\t\t\t<a\n\t\t\t\thref=\"https:\/\/api.whatsapp.com\/send?text=https%3A%2F%2Fwww.deptagency.com%2Fen-in%2Finsight%2Fbinding-and-unbinding-osgi-services-in-aem%2F\"\n\t\t\t\tdata-share-url=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-title=\"Binding and unbinding OSGI services in AEM\"\n\t\t\t\tdata-share-type=\"whatsapp\"\n\t\t\t\tclass=\"block-title-and-content__social-links-item js-social-link\"\n\t\t\t\taria-label=\"Share to Whatsapp\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\n\t\t\t\t\t\t\t>\n\t\t\t\t<svg xmlns='http: \/\/www.w3.org\/2000\/svg' width='25' height='24' viewBox='0 0 25 24'><path d='M.805 24l1.687-6.163a11.869 11.869 0 01-1.588-5.945C.907 5.335 6.244 0 12.801 0c3.182.001 6.17 1.24 8.415 3.488a11.819 11.819 0 013.481 8.413c-.002 6.558-5.34 11.893-11.896 11.893h-.005c-1.99-.001-3.947-.5-5.685-1.448L.805 24zm6.598-3.807l.361.214a9.874 9.874 0 005.033 1.378h.004c5.45 0 9.885-4.434 9.888-9.885a9.824 9.824 0 00-2.894-6.993 9.823 9.823 0 00-6.99-2.898c-5.454 0-9.89 4.434-9.892 9.884a9.86 9.86 0 001.512 5.26l.235.374-.999 3.648 3.742-.982z' fill='currentColor'\/><path d='M9.825 6.921c-.24-.58-.486-.501-.668-.51-.174-.009-.372-.01-.57-.01-.198 0-.52.074-.793.371-.272.298-1.04 1.017-1.04 2.48 0 1.462 1.065 2.875 1.214 3.073.148.199 2.096 3.2 5.078 4.487.709.306 1.262.49 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.759-.72 2.007-1.413.247-.694.247-1.29.173-1.413-.074-.124-.272-.199-.57-.347-.297-.149-1.758-.868-2.03-.967-.273-.1-.471-.149-.67.149-.198.297-.767.966-.94 1.165-.174.198-.348.223-.645.074-.297-.149-1.255-.462-2.39-1.475-.884-.788-1.48-1.76-1.654-2.058-.173-.298-.018-.459.13-.607.134-.133.298-.347.446-.52.149-.174.199-.298.298-.496.099-.198.05-.372-.025-.52-.074-.15-.669-1.612-.917-2.207z' fill='currentColor'\/><\/svg>\t\t\t<\/a>\n\t\t\t\t\t\t<a\n\t\t\t\thref=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fwww.deptagency.com%2Fen-in%2Finsight%2Fbinding-and-unbinding-osgi-services-in-aem%2F&#038;text=Binding%20and%20unbinding%20OSGI%20services%20in%20AEM\"\n\t\t\t\tdata-share-url=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-title=\"Binding and unbinding OSGI services in AEM\"\n\t\t\t\tdata-share-type=\"twitter\"\n\t\t\t\tclass=\"block-title-and-content__social-links-item js-social-link\"\n\t\t\t\taria-label=\"Share to Twitter\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\n\t\t\t\t\t\t\t>\n\t\t\t\t<svg width='25' height='20' viewBox='0 0 25 20' fill='none' xmlns='http: \/\/www.w3.org\/2000\/svg'><path d='M24.75 2.3c-.9.4-1.8.7-2.8.8 1-.6 1.8-1.6 2.2-2.7-1 .6-2 1-3.1 1.2-.9-1-2.2-1.6-3.6-1.6-2.7 0-4.9 2.2-4.9 4.9 0 .4 0 .8.1 1.1-4.2-.2-7.8-2.2-10.2-5.2-.5.8-.7 1.6-.7 2.5 0 1.7.9 3.2 2.2 4.1-.8 0-1.6-.2-2.2-.6v.1c0 2.4 1.7 4.4 3.9 4.8-.4.1-.8.2-1.3.2-.3 0-.6 0-.9-.1.6 2 2.4 3.4 4.6 3.4-1.7 1.3-3.8 2.1-6.1 2.1-.4 0-.8 0-1.2-.1 2.2 1.4 4.8 2.2 7.5 2.2 9.1 0 14-7.5 14-14v-.6c1-.7 1.8-1.6 2.5-2.5z' fill='currentColor'\/><\/svg>\t\t\t<\/a>\n\t\t\t\t\t\t<a\n\t\t\t\thref=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fwww.deptagency.com%2Fen-in%2Finsight%2Fbinding-and-unbinding-osgi-services-in-aem%2F\"\n\t\t\t\tdata-share-url=\"https:\/\/www.deptagency.com\/en-in\/insight\/binding-and-unbinding-osgi-services-in-aem\/\"\n\t\t\t\tdata-share-title=\"Binding and unbinding OSGI services in AEM\"\n\t\t\t\tdata-share-type=\"linkedin\"\n\t\t\t\tclass=\"block-title-and-content__social-links-item js-social-link\"\n\t\t\t\taria-label=\"Share to Linkedin\"\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\n\t\t\t\t\t\t\t>\n\t\t\t\t<svg width='19' height='18' viewBox='0 0 19 18' fill='none' xmlns='http: \/\/www.w3.org\/2000\/svg'><path d='M1.15 17.3h3.6V5.8h-3.6v11.5zM.75 2.1c0 1.2 1 2.1 2.1 2.1 1.2 0 2.1-.9 2.1-2.1 0-1.2-1-2.1-2.1-2.1-1.2 0-2.1 1-2.1 2.1zM14.45 17.3h3.6v-6.2c0-3.1-.7-5.5-4.3-5.5-1.8 0-2.9.9-3.4 1.8V5.8h-3.4v11.5h3.6v-5.7c0-1.5.2-2.9 2.1-2.9 1.8 0 1.8 1.7 1.8 3v5.6z' fill='currentColor'\/><\/svg>\t\t\t<\/a>\n\t\t\t\t<\/div>\n<\/div>\n\n<div class=\"block-highlighted-item-listing\">\n\t<h2\t\tclass=\"typography block-highlighted-item-listing__title typography__color--onyxGrey typography__size--regular-body typography__align--left\"\n\t\t\t>\n\t\tMore Insights?\t<\/h2><a\tclass=\"cta-button block-highlighted-item-listing__cta-button cta-button__color--onyxGrey cta-button__style--regular\" href=\"https:\/\/www.deptagency.com\/all-insights\/\" >\n\t\n\t\t\t<span>\n\t\t\tView all Insights\t\t<\/span>\n\t\n<\/a>\n\t<div class=\"block-highlighted-item-listing__cards\">\n\t\t<a\tclass=\"universal-item-card universal-item-card__type--article universal-item-card--has-link-decoration\"\n\tdata-theme=\"white\"\n\t\t\thref=\"https:\/\/www.deptagency.com\/en-in\/insight\/dept-strong-performer-forrester-wave-commerce-services-q1-2026\/\"\n\t\t\t\ttitle=\"DEPT\u00ae named a Strong Performer in The Forrester Wave\u2122: Commerce Services, Q1 2026\"\n\t\t>\n\t\t\t<div class=\"universal-item-card__backplate universal-item-card__backplate--with-image\"><\/div>\n\t\n\t<div\n\t\tclass=\"image-wrap universal-item-card__image-wrap\"\n\t\tdata-align=\"center center\"\n\t\t\t>\n\n\t\t\t<picture\n\t\tclass=\"image__picture\"\n\t\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<img\n\t\t\t\tsrc=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2026\/02\/Forrester-_-2026-_-Insight-_-Phrase-16_9.png\"\n\t\t\t\tclass=\"image universal-item-card__image\"\n\n\t\t\t\t\t\t\t\talt=\"DEPT\u00ae named a Strong Performer in The Forrester Wave\u2122: Commerce Services, Q1 2026\"\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\/>\n\t\t<\/picture>\n\t\n\t<\/div><p\t\tclass=\"typography universal-item-card__meta typography__color--darkGrey typography__size--eyebrow-lc typography__align--left\"\n\t\t\t>\n\t\tCOMMERCE&emsp;\u2022&emsp;Nitin Kediyal\t<\/p><h3\t\tclass=\"typography universal-item-card__title typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\t<span>DEPT\u00ae named a Strong Performer in The Forrester Wave\u2122: Commerce Services, Q1 2026<\/span>\t<\/h3><button\tclass=\"cta-button universal-item-card__btn cta-button__color--onyxGrey cta-button__style--regular has-parent-hover\" >\n\t\n\t\t\t<span>\n\t\t\tRead Article\t\t<\/span>\n\t\n<\/button>\n\t\n\t<\/a><a\tclass=\"universal-item-card universal-item-card__type--article universal-item-card--has-link-decoration\"\n\tdata-theme=\"white\"\n\t\t\thref=\"https:\/\/www.deptagency.com\/en-in\/insight\/dept-brings-its-cannes-style-moments-year-round-with-future-club\/\"\n\t\t\t\ttitle=\"DEPT\u00ae brings its Cannes-Style moments year-round with Future Club\"\n\t\t>\n\t\t\t<div class=\"universal-item-card__backplate universal-item-card__backplate--with-image\"><\/div>\n\t\n\t<div\n\t\tclass=\"image-wrap universal-item-card__image-wrap\"\n\t\tdata-align=\"center center\"\n\t\t\t>\n\n\t\t\t<picture\n\t\tclass=\"image__picture\"\n\t\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<img\n\t\t\t\tsrc=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2026\/02\/DFC-INSIGHT-IMAGE-1-1080X1350.png\"\n\t\t\t\tclass=\"image universal-item-card__image\"\n\n\t\t\t\t\t\t\t\talt=\"DEPT\u00ae brings its Cannes-Style moments year-round with Future Club\"\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\/>\n\t\t<\/picture>\n\t\n\t<\/div><p\t\tclass=\"typography universal-item-card__meta typography__color--darkGrey typography__size--eyebrow-lc typography__align--left\"\n\t\t\t>\n\t\tNEWS&emsp;\u2022&emsp;Marjan Straathof\t<\/p><h3\t\tclass=\"typography universal-item-card__title typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\t<span>DEPT\u00ae brings its Cannes-Style moments year-round with Future Club<\/span>\t<\/h3><button\tclass=\"cta-button universal-item-card__btn cta-button__color--onyxGrey cta-button__style--regular has-parent-hover\" >\n\t\n\t\t\t<span>\n\t\t\tRead Article\t\t<\/span>\n\t\n<\/button>\n\t\n\t<\/a><a\tclass=\"universal-item-card universal-item-card__type--article universal-item-card--has-link-decoration\"\n\tdata-theme=\"white\"\n\t\t\thref=\"https:\/\/www.deptagency.com\/en-in\/insight\/navigating-indias-dpdp-act-with-privacy-by-design\/\"\n\t\t\t\ttitle=\"Navigating India\u2019s DPDP Act with Privacy-by-Design\"\n\t\t>\n\t\t\t<div class=\"universal-item-card__backplate universal-item-card__backplate--with-image\"><\/div>\n\t\n\t<div\n\t\tclass=\"image-wrap universal-item-card__image-wrap\"\n\t\tdata-align=\"center center\"\n\t\t\t>\n\n\t\t\t<picture\n\t\tclass=\"image__picture\"\n\t\t\t\t>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t<img\n\t\t\t\tsrc=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2026\/01\/Navigating-Indias-DPDP-Act-with-Privacy-by-Design-Insight-1920x1080-1.webp\"\n\t\t\t\tclass=\"image universal-item-card__image\"\n\n\t\t\t\t\t\t\t\talt=\"Navigating India\u2019s DPDP Act with Privacy-by-Design\"\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\/>\n\t\t<\/picture>\n\t\n\t<\/div><p\t\tclass=\"typography universal-item-card__meta typography__color--darkGrey typography__size--eyebrow-lc typography__align--left\"\n\t\t\t>\n\t\tTECH &AMP; DATA&emsp;\u2022&emsp;Rohit Shukla\t<\/p><h3\t\tclass=\"typography universal-item-card__title typography__color--onyxGrey typography__size--h6 typography__align--left\"\n\t\t\t>\n\t\t<span>Navigating India\u2019s DPDP Act with Privacy-by-Design<\/span>\t<\/h3><button\tclass=\"cta-button universal-item-card__btn cta-button__color--onyxGrey cta-button__style--regular has-parent-hover\" >\n\t\n\t\t\t<span>\n\t\t\tRead Article\t\t<\/span>\n\t\n<\/button>\n\t\n\t<\/a>\t<\/div>\n<\/div>\n\n<div class=\"block-get-in-touch js-block-get-in-touch\">\n\t<div class=\"block-get-in-touch__column block-get-in-touch__column--left block-get-in-touch__column--richBlack\">\n\t\t<h2 class=\"heading heading__color--white heading__size--xl heading__align--left block-get-in-touch__heading\">\n\t\t\tQuestions?\t<\/h2>\t<\/div>\n\n\t<div class=\"block-get-in-touch__column block-get-in-touch__column--right block-get-in-touch__column--white\">\n\t\t\t\t<div class=\"block-get-in-touch__specialist\">\n\t\t\t\t\t\t\t<\/div>\n\t\t\n\t\t<button\tclass=\"cta-bar block-get-in-touch__cta-bar js-cta-bar\"\n\tid=\"block-get-in-touch-a77c0867b8edd6efde70148876ba1131\"\n\ttitle=\"Get in touch\"\n\taria-label=\"\"\n\t\t>\n\t<div class=\"cta-bar__container cta-bar__container--size--default\">\n\t\t<div class=\"cta-bar__content\">\n\t\t\t<span class=\"cta-bar__label\">\n\t\t\t\tGet in touch\t\t\t<\/span>\n\t\t\t<i class=\"icon icon icon__color--white icon__size--small icon__arrow-right-circle cta-bar__icon cta-bar__icon\">\n\t<svg width='24' height='24' fill='none' viewBox='0 0 24 24' xmlns='http:\/\/www.w3.org\/2000\/svg'><g class='symbol'><path d='M11.5215 17.2609L17.2607 12L11.5215 6.73912' stroke='currentColor' stroke-width='1.5' stroke-miterlimit='10'\/><path d='M16.7827 12L6.26099 12' stroke='currentColor' stroke-width='1.5' stroke-miterlimit='10'\/><circle cx='12' cy='12' r='11' stroke='currentColor' stroke-width='1.5' stroke-miterlimit='10'\/><\/g><path class='symbol-hover' fill-rule='evenodd' clip-rule='evenodd' d='M23 12C23 5.92487 18.0751 0.999999 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23C18.0751 23 23 18.0751 23 12ZM17.7674 11.4471L12.0283 6.18627L11.0147 7.292L15.3326 11.25L6.26099 11.25L6.26099 12.75L15.3326 12.75L11.0147 16.708L12.0283 17.8137L17.7675 12.5529L18.3706 12L17.7674 11.4471Z' fill='currentColor'\/><\/svg><\/i>\t\t<\/div>\n\t<\/div>\n<\/button>\t<\/div>\n<\/div>\n\n<div\n\tclass=\"flyout-drawer js-flyout-drawer flyout-drawer__position--right\"\n\tdata-trigger=\"#block-get-in-touch-a77c0867b8edd6efde70148876ba1131\"\n\tdata-instant-open=\"false\"\n>\n\t<div class=\"flyout-drawer__left-mobile-backplate\"><\/div>\n\t<div class=\"flyout-drawer__left-backplate\"><\/div>\n\n\t\t<div class=\"flyout-drawer__left\"><\/div>\n\n\t<button\tclass=\"cta-button flyout-drawer__close cta-button__color--white cta-button__style--text-and-icon js-drawer-close has-flipped-icon\" aria-label=\"Close\" >\n\t<svg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><circle cx='10.5' cy='10.5' r='9.5' transform='rotate(-90 10.5 10.5)' stroke='var(--dept-button-icon-outline-color)' stroke-width='1.3' stroke-miterlimit='10' fill='none'\/><circle class='icon-backplate' cx='10.5' cy='10.5' r='9.5' transform='rotate(-90 10.5 10.5)' fill='var(--dept-button-icon-backplate-color)' fill-opacity='1'\/><path class='icon-center' d='m14 7-7 7m0-7 7 7' stroke='var(--dept-button-icon-color)' stroke-width='1.5' fill='none'\/><\/svg>\n\t\t\t<span>\n\t\t\tClose\t\t<\/span>\n\t\n<\/button>\n\t<div class=\"flyout-drawer__right\">\n\t\t<div class=\"pardot-forms block-get-in-touch__pardot-forms js-pardot-forms\">\n\t\t<iframe\n\t\tdata-initial-src=\"https:\/\/www2.deptagency.com\/l\/321011\/2018-08-22\/hqqkrl\"\n\t\tclass=\"pardot-forms__embed block-get-in-touch__embed js-pardot-forms-embed\"\n\t\ttype=\"text\/html\"\n\t><\/iframe>\n\t<div class=\"loader pardot-forms__loader loader__color--hanPurple js-pardot-forms-loader\">\n\t<div class=\"loader__first\"><\/div>\n\t<div class=\"loader__second\"><\/div>\n<\/div><\/div>\t<\/div>\n\n\t<button\tclass=\"cta-button flyout-drawer__back cta-button__color--onyxGrey cta-button__style--text-and-icon js-drawer-back has-small-icon\" aria-label=\"Back\" >\n\t<svg width='41' height='41' viewBox='0 0 41 41' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'><circle cx='20.5' cy='20.5' r='19.5' transform='rotate(-90 20.5 20.5)' stroke='var(--dept-button-icon-outline-color)' stroke-width='1.3' stroke-miterlimit='10' fill='none'\/><circle class='icon-backplate' cx='20.5' cy='20.5' r='19.5' transform='rotate(-90 20.5 20.5)' fill='var(--dept-button-icon-backplate-color)' fill-opacity='1'\/><path class='icon-center' d='M21.174 30 11 20.674l10.174-9.326m-9.326 9.328H30.5' stroke='var(--dept-button-icon-color)' stroke-width='1.3' stroke-miterlimit='10' fill='none'\/><\/svg>\n\t\t\t<span>\n\t\t\tBack\t\t<\/span>\n\t\n<\/button><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":40,"featured_media":4384796,"template":"","meta":{"_acf_changed":false,"es_utils_meta_schema":"","member_job_title":"","member_linkedin_url":"","dept_alt_featured_image":[],"dept_algolia_noindex":false,"dept_algolia_featured":false,"footnotes":""},"insight-topics":[42894],"person":[41296],"class_list":["post-4384795","article","type-article","status-publish","has-post-thumbnail","hentry"],"acf":{"dept_is_3q_page":false,"dept_insight_featured":true,"dept_current_cpt_partner":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Binding and unbinding OSGI services in AEM - DEPT\u00ae<\/title>\n<meta name=\"description\" content=\"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Binding and unbinding OSGI services in AEM - DEPT\u00ae\" \/>\n<meta property=\"og:description\" content=\"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&amp;p=4384795\" \/>\n<meta property=\"og:site_name\" content=\"DEPT\u00ae\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T11:47:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795\",\"url\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795\",\"name\":\"Binding and unbinding OSGI services in AEM - DEPT\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/www.deptagency.com\/en-uki\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg\",\"datePublished\":\"2021-04-01T11:12:02+00:00\",\"dateModified\":\"2025-12-08T11:47:51+00:00\",\"description\":\"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#breadcrumb\"},\"inLanguage\":\"en-in\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-in\",\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage\",\"url\":\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg\",\"contentUrl\":\"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.deptagency.com\/en-in\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Binding and unbinding OSGI services in AEM\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.deptagency.com\/en-uki\/#website\",\"url\":\"https:\/\/www.deptagency.com\/en-uki\/\",\"name\":\"DEPT\u00ae\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.deptagency.com\/en-uki\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-in\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.deptagency.com\/en-uki\/#\/schema\/person\/4ec5aa93ed3610c610b5cf5224773b16\",\"name\":\"Alexandra Moorhouse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-in\",\"@id\":\"https:\/\/www.deptagency.com\/en-uki\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e8ce4f04a43020c00db84d54b1c54ed8dba8b0de0b959126c45106f23e6ecb9a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e8ce4f04a43020c00db84d54b1c54ed8dba8b0de0b959126c45106f23e6ecb9a?s=96&d=mm&r=g\",\"caption\":\"Alexandra Moorhouse\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Binding and unbinding OSGI services in AEM - DEPT\u00ae","description":"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795","og_locale":"en_US","og_type":"article","og_title":"Binding and unbinding OSGI services in AEM - DEPT\u00ae","og_description":"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.","og_url":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795","og_site_name":"DEPT\u00ae","article_modified_time":"2025-12-08T11:47:51+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795","url":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795","name":"Binding and unbinding OSGI services in AEM - DEPT\u00ae","isPartOf":{"@id":"https:\/\/www.deptagency.com\/en-uki\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage"},"image":{"@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage"},"thumbnailUrl":"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg","datePublished":"2021-04-01T11:12:02+00:00","dateModified":"2025-12-08T11:47:51+00:00","description":"In Adobe\u2019s Experience Manager we have the ability to create OSGi components and services using only Java classes and Src annotations.","breadcrumb":{"@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#breadcrumb"},"inLanguage":"en-in","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795"]}]},{"@type":"ImageObject","inLanguage":"en-in","@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#primaryimage","url":"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg","contentUrl":"https:\/\/www.deptagency.com\/wp-content\/uploads\/2021\/03\/binding_1.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.deptagency.com\/en-in\/?post_type=article&p=4384795#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.deptagency.com\/en-in\/"},{"@type":"ListItem","position":2,"name":"Binding and unbinding OSGI services in AEM"}]},{"@type":"WebSite","@id":"https:\/\/www.deptagency.com\/en-uki\/#website","url":"https:\/\/www.deptagency.com\/en-uki\/","name":"DEPT\u00ae","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.deptagency.com\/en-uki\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-in"},{"@type":"Person","@id":"https:\/\/www.deptagency.com\/en-uki\/#\/schema\/person\/4ec5aa93ed3610c610b5cf5224773b16","name":"Alexandra Moorhouse","image":{"@type":"ImageObject","inLanguage":"en-in","@id":"https:\/\/www.deptagency.com\/en-uki\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e8ce4f04a43020c00db84d54b1c54ed8dba8b0de0b959126c45106f23e6ecb9a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8ce4f04a43020c00db84d54b1c54ed8dba8b0de0b959126c45106f23e6ecb9a?s=96&d=mm&r=g","caption":"Alexandra Moorhouse"}}]}},"_links":{"self":[{"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/insight\/4384795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/insight"}],"about":[{"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/types\/article"}],"author":[{"embeddable":true,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/users\/40"}],"version-history":[{"count":2,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/insight\/4384795\/revisions"}],"predecessor-version":[{"id":4385172,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/insight\/4384795\/revisions\/4385172"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/media\/4384796"}],"wp:attachment":[{"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/media?parent=4384795"}],"wp:term":[{"taxonomy":"insight-topic","embeddable":true,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/insight-topics?post=4384795"},{"taxonomy":"person","embeddable":true,"href":"https:\/\/www.deptagency.com\/en-in\/wp-json\/wp\/v2\/person?post=4384795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}