Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

How to call sling servlet directly using it's path?

Avatar

Level 9

Hi All,

I have written sling servlet and i want to check if it's working propelrly.

Before including in component and i want to check whether it's returning data properly.

I heard we can call from browser and check the same.

Can some one help how to execute like this

Thanks,

Kishore

1 Accepted Solution

Avatar

Correct answer by
Employee

Hi Kishore,

Why are you declaring it as a service and a component? Try and create a simple servlet and see if that works.

I don't see the declaration for it being a servlet e.g.

@SlingServlet(paths="/bin/mySearchServlet", methods = "GET", metatype=true)

Regards,

Opkar

[1https://helpx.adobe.com/experience-manager/using/custom-sling-servlets.html

View solution in original post

5 Replies

Avatar

Level 9

i am calling in the same way but 404 is coming.

My Servlet code looks as below.


@Component(name = "com.symantec.elibrary.core.servlets.ProductManagementServlet", label = "Product Management servlet", description = "This servlet filters the doctypes", specVersion = "1.1", metatype = true, immediate = true, policy = ConfigurationPolicy.REQUIRE)
@Service
@Properties({
        @Property(name = "service.description", value = "Symantec ProductManagementServlet Service"),
        @Property(name = "service.vendor", value = "Symantec Corporation."),
        @Property(name = "sling.servlet.paths", value = "/c/symantec/servlets/ConnectToSABA", propertyPrivate = true),
        @Property(name = "sling.servlet.methods", value = "GET", propertyPrivate = true)})

 

public class ProductManagementServlet extends SlingAllMethodsServlet{
    private static final long serialVersionUID = 1L;
    
    /** Default log. */
    protected final Logger log = LoggerFactory.getLogger(ProductManagementServlet.class);
    /**
     * The set of argument type classes for the reflection method calls.
     */

    @SuppressWarnings("rawtypes")
    protected static final Class[] parameterTypes = { SlingHttpServletRequest.class, SlingHttpServletResponse.class };
    
    public void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException,
                IOException {
        
        try {
            response.setContentType("application/json");
            JSONObject jsonObj = new JSONObject();
            jsonObj.put("Key1", "Value1");
            
            response.getWriter().print(jsonObj.toString());
            
        }catch (Exception e) {
            log.error("Exception in doGdet() method", e);
            return;
        }
        
    }
    

    /**
     * This method is called the OSGI framework when the bundle is activated. It
     * reads the properties from the component context.
     * 
     * @param componentContext
     */

    @SuppressWarnings("rawtypes")
    public void activate(ComponentContext componentContext) {
        log.debug("Entering activate method.");
        Dictionary properties = componentContext.getProperties();
        if (null != properties) {
            // /
        }
        log.debug("Exiting activate method.");
    }

    /**
     * 
     * @param componentContext
     * @throws RepositoryException
     */

    protected void deactivate(ComponentContext componentContext) {
        log.debug("Entering deactivate method.");
        log.debug("Exiting deactivate method.");
    }


}

Thanks.

Kishore

Avatar

Correct answer by
Employee

Hi Kishore,

Why are you declaring it as a service and a component? Try and create a simple servlet and see if that works.

I don't see the declaration for it being a servlet e.g.

@SlingServlet(paths="/bin/mySearchServlet", methods = "GET", metatype=true)

Regards,

Opkar

[1https://helpx.adobe.com/experience-manager/using/custom-sling-servlets.html

Avatar

Level 4

@Opkar_Gill Links on this page are no longer available. Please refresh for AEM 6.5 content or retire/remove/deactivate page. (Saves us a little time in the field when searching for solutions.)