Hi Arun,
Thanks for you help. I have my servlet code in place as you suggested already. For your reference I have placed the Felix annotation Servlet and OSGi DS annotations Servlet code below. Request you to help me if I missed anything here.
Felix Annoattions:
import ch.sample.aem.core.constants.AemConstants;
import ch.sample.aem.core.dto.SystemStatusBean;
import ch.sample.aem.core.helper.SystemStatusHelper;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.jackrabbit.vault.packaging.Packaging;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Component;
@Service
@SuppressWarnings("serial")
@SlingServlet(paths = "/bin/custom/samplesystemstatus")
public class SampleSystemStatus extends SlingSafeMethodsServlet {
/**
* This is created to invoke the sample bundle, package and server details in AEM.
*
* @return jsonString
*/
@Reference
private Packaging packaging;
SystemStatusHelper systemStatusHelper;
SystemStatusBean systemStatus;
protected void activate(ComponentContext ctx) {
systemStatusHelper = new SystemStatusHelper();
systemStatus = new SystemStatusBean();
systemStatus = new SystemStatusBean();
systemStatusHelper.getBundlesList(ctx, systemStatus);
}
@Override
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp)
throws ServletException, IOException {
systemStatusHelper.getHostDetails(req, systemStatus);
systemStatus.setAlive(Boolean.TRUE);
systemStatusHelper.getPackageList(req, systemStatus, packaging);
String systemStatusJsonStr = new Gson().toJson(systemStatus);
resp.setContentType(AemConstants.CONTENTTYPE);
PrintWriter out = resp.getWriter();
out.println(systemStatusJsonStr);
}
}
After changed to OSGi Annotations:
package ch.sample.aem.core.servlet;
import ch.sample.aem.core.constants.AemConstants;
import ch.sample.aem.core.dto.SystemStatusBean;
import ch.sample.aem.core.helper.SystemStatusHelper;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.jackrabbit.vault.packaging.Packaging;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
@SuppressWarnings("serial")
@Component(service = Servlet.class, immediate = true,
property = {
"sling.servlet.paths = /bin/custom/samplesystemstatus",
"sling.servlet.methods=GET"
})
public class SampleSystemStatus extends SlingSafeMethodsServlet {
/**
* This is created to invoke the sample bundle, package and server details in AEM.
*
* @return jsonString
*/
@Reference
private Packaging packaging;
SystemStatusHelper systemStatusHelper;
SystemStatusBean systemStatus;
protected void activate(ComponentContext ctx) {
systemStatusHelper = new SystemStatusHelper();
systemStatus = new SystemStatusBean();
systemStatusHelper.getBundlesList(ctx, systemStatus);
}
@Override
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp)
throws ServletException, IOException {
systemStatusHelper.getHostDetails(req, systemStatus);
systemStatus.setAlive(Boolean.TRUE);
systemStatusHelper.getPackageList(req, systemStatus, packaging);
String systemStatusJsonStr = new Gson().toJson(systemStatus);
resp.setContentType(AemConstants.CONTENTTYPE);
PrintWriter out = resp.getWriter();
out.println(systemStatusJsonStr);
}
}
Since I'm unable to replace the @Reference annotation directly as recommend here https://blog.osoco.de/2016/05/migrating-from-the-apache-felix-scr-annotations-to-the-osgi-declarative-services-annotatio… so I have still used Felix @Refernce. Appreciate your help.
smacdonald2008 Ratna Kumar dgordon86
Regards,
Vijay