Tuesday 10 June 2014

AEM OSGi Bundles:


OSGi Bundles:

Open Services Gateway Initiative (OSGi) helps developing and deploying modular applications and libraries in Java.Some of the major OSGi container implementations are Equinox, Knopflerfish, and Apache Felix. OSGi works on a set of services that an OSGi container must implement and a contract between the container and your application.
Resource folder can be used to put resource files like configuration files, xml files properties files etc.
Meta data of bundles:
·         Export-Package: *
Tells to export all packages to cq - makes available to cq
If we mention,
Export-Package: com.cq.test; it just makes this package available

·         Import-Package: *
Tells to import all packages from other bundles to our bundle - makes available to use those clases.

·         Private-Package:
Packages that should not be exposed to the OSGi container

·         Include-Resource:
used to include resource files like properties files available to our bundle.

Bundle-Activator Class:


Start() and stop() are the lifecycle of bundle activator class.
stop() can be implemented if any resource to be stopped, if our bundle failure happens abruptly.
public void stop(BundleContext context) throws Exception

-------Similar Posts---------------
Mapping of requests in AEM
Interact With AEM
Run Modes
AEM
Apache Sling in AEM

-------------------------------------

OSGi Vs JAR
-------------------
OSGi can be told as an advanced version of JAR. It uses more metadata to show/hide the visibility of classes in bundle. JAR is a private collection of classes where OSGI provides a safe way to make the classes available across.
Sample to create anAEM /Adobe CQ bundle and use it in a page
-------------------------------------------------------
Create the folder structure as below.





Create a bundle by right clicking on src folder. Enter the details as required.





Now the new bundle will have below structure.





Now under the test folder create an impl folder. This is used to write our custom Java class.
Now add TestService.class with a common output as below.

-------------
packagecom.cq.adobe.test.impl;


public class TestService{

public String getTestService(){

return "CQ developer training sessions";
    }

}
--------------

Right click com.adobe.test.bnd and build bundle (Tools>Build Bundle)

This creates jar file under install folder which is automatically placed to OSGi packages.

AEM/CQ Internalization


Internalization for content authoring

-----------------------------------------------------------------------
Assists author in his own language preference. Use i18n to specify the internationalization. iso code(fr,de,enetc) of the langue to be used for each node specific to each language
How to create internationalization for a project in AEM?
Follow below steps to create internationalization.
·         Create language folder using sling:Folder,
·         add property jcr:language with iso specification (jcr:language : en)
·         Add mixing

Translator: http://localhost:4505/libs/cq/i18n/translator.html
By Above tool/URL we can add new language internationalization messages. Click on 'Add' and enter fields and submit.
Admin/User language settings in AEM
Changing admin level language can be done through Administrator (right top) -> preferences->Language




Backups & restore CQ files

-------------------------------------
AEM provide online & offline backups.
Online:Online method creates a backup of the entire repository, including CQ5. We can perform this method while the repository is in use.
Offline:Creates a backup of the CRX repository files including all of the information stored in CRX, so you can restore the exact state of the repository during backup.
Also incremental so it updates only next day components to backup.

-------Similar Posts---------------
Mapping of requests in AEM
Interact With AEM
Run Modes
AEM
Apache Sling in AEM

-------------------------------------

Search, Persistance Manager in AEM/CQ


Search:
There are two supported query languages in AEM
  • SQL2
  • XPATH
Accessing query browser
Tools>Query open query browser



Readable: http://helpx.adobe.com/experience-manager/using/querying-experience-manager-data-using1.html

To read on integrating CQ with Solr search, visit blog: Integrating AEM/ CQ with Solr search

Persistence manager:
Persistence manager helps to save the repository content to a permanent storage solution, such as the file system or a database.
All content is stored in file system in form of tar file at below location.
Location of persistence manager
AEM/CQ install directory-> Author->crx-quickstart->repository->workspaces->crx.default->data_00000.tar
Configuring/modifying the persistence manager location/type
Default tar is <PersistenceManager class="com.day.crx.persistence.tar.TarPersistenceManager"/>
AEM/CQ install directory-> Author->crx-quickstart->repository->repository.xml
MySQL Persistence Manager: Stores the workspace content in a MySQL database.       
Configuration:

<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost:3306/crx"/>
<param name="user" value="userid"/>
<param name="password" value="password"/>
</PersistenceManager>

Backups & restore CQ files

-------------------------------------
AEM provide online & offline backups.
Online:Online method creates a backup of the entire repository, including CQ5. We can perform this method while the repository is in use.
Offline:Creates a backup of the CRX repository files including all of the information stored in CRX, so you can restore the exact state of the repository during backup.
Also incremental so it updates only next day components to backup.

Read More: 
Solr and AEM
JSON for Solr
AEM INTERNALIZATION
Search Persistance
Navigation in AEM
Website design steps in AEM