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

AEM6.1 create servlet bundle in crxde lite - NullPointerException

Avatar

Level 1

I've got logs..

Please check bus in java.

=========================================================

07.12.2017 14:19:36.544 *ERROR* [0:0:0:0:0:0:0:1 [1512623976471] POST /libs/crxde/build HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Uncaught Throwable

javax.servlet.ServletException: java.lang.NullPointerException

at com.day.crx.ide.AbstractCRXDEServlet.throwError(AbstractCRXDEServlet.java:139)

at com.day.crx.ide.CRXDEBuildServlet.handleAuthenticatedRequest(CRXDEBuildServlet.java:178)

at com.day.crx.ide.AbstractCRXDEServlet.processRequest(AbstractCRXDEServlet.java:98)

at com.day.crx.ide.AbstractCRXDEServlet.doPost(AbstractCRXDEServlet.java:79)

at org.apache.sling.api.servlets.SlingAllMethodsServlet.mayService(SlingAllMethodsServlet.java:148)

at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:344)

at org.apache.sling.api.servlets.SlingSafeMethodsServlet.service(SlingSafeMethodsServlet.java:375)

at org.apache.sling.engine.impl.request.RequestData.service(RequestData.java:511)

at org.apache.sling.engine.impl.filter.SlingComponentFilterChain.render(SlingComponentFilterChain.java:45)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:64)

at com.day.cq.wcm.core.impl.WCMDebugFilter.doFilter(WCMDebugFilter.java:146)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.core.impl.WCMComponentFilter.filterRootInclude(WCMComponentFilter.java:357)

at com.day.cq.wcm.core.impl.WCMComponentFilter.doFilter(WCMComponentFilter.java:166)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.personalization.impl.TargetComponentFilter.doFilter(TargetComponentFilter.java:96)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.engine.impl.SlingRequestProcessorImpl.processComponent(SlingRequestProcessorImpl.java:284)

at org.apache.sling.engine.impl.filter.RequestSlingFilterChain.render(RequestSlingFilterChain.java:49)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:64)

at com.adobe.granite.requests.logging.impl.RequestLoggerImpl.doFilter(RequestLoggerImpl.java:124)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.cq.social.commons.security.SaferSlingPostServlet.doFilter(SaferSlingPostServlet.java:133)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.core.impl.AuthoringUIModeServiceImpl.doFilter(AuthoringUIModeServiceImpl.java:349)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.core.impl.warp.TimeWarpFilter.doFilter(TimeWarpFilter.java:106)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.mobile.core.impl.redirect.RedirectFilter.doFilter(RedirectFilter.java:295)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.engine.impl.debug.RequestProgressTrackerLogFilter.doFilter(RequestProgressTrackerLogFilter.java:64)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.cq.social.commons.cors.CORSAuthenticationFilter.doFilter(CORSAuthenticationFilter.java:91)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.foundation.forms.impl.FormsHandlingServlet.doFilter(FormsHandlingServlet.java:251)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.theme.impl.ThemeResolverFilter.doFilter(ThemeResolverFilter.java:76)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.granite.optout.impl.OptOutFilter.doFilter(OptOutFilter.java:74)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.core.impl.WCMRequestFilter.doFilter(WCMRequestFilter.java:90)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.cq.history.impl.HistoryRequestFilter.doFilter(HistoryRequestFilter.java:107)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.day.cq.wcm.designimporter.CanvasPageDeleteRequestFilter.doFilter(CanvasPageDeleteRequestFilter.java:88)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.rewriter.impl.RewriterFilter.doFilter(RewriterFilter.java:83)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:77)

at com.adobe.granite.httpcache.impl.InnerCacheFilter.doFilter(InnerCacheFilter.java:56)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:128)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.cq.dam.s7imaging.impl.auth.MemoryTokenAuthHandler.doFilter(MemoryTokenAuthHandler.java:156)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter.doFilter(BackgroundServletStarterFilter.java:135)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at com.adobe.granite.resourceresolverhelper.impl.ResourceResolverHelperImpl.doFilter(ResourceResolverHelperImpl.java:81)

at org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)

at org.apache.sling.engine.impl.SlingRequestProcessorImpl.doProcessRequest(SlingRequestProcessorImpl.java:153)

at org.apache.sling.engine.impl.SlingMainServlet.service(SlingMainServlet.java:205)

at org.apache.felix.http.base.internal.handler.ServletHandler.doHandle(ServletHandler.java:339)

at org.apache.felix.http.base.internal.handler.ServletHandler.handle(ServletHandler.java:300)

at org.apache.felix.http.base.internal.dispatch.ServletPipeline.handle(ServletPipeline.java:93)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:50)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.sling.i18n.impl.I18NFilter.doFilter(I18NFilter.java:128)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.felix.http.sslfilter.internal.SslFilter.doFilter(SslFilter.java:55)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.sling.security.impl.ReferrerFilter.doFilter(ReferrerFilter.java:290)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at com.adobe.granite.license.impl.LicenseCheckFilter.doFilter(LicenseCheckFilter.java:298)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.sling.featureflags.impl.FeatureManager.doFilter(FeatureManager.java:115)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.sling.engine.impl.log.RequestLoggerFilter.doFilter(RequestLoggerFilter.java:75)

at org.apache.felix.http.base.internal.handler.FilterHandler.doHandle(FilterHandler.java:108)

at org.apache.felix.http.base.internal.handler.FilterHandler.handle(FilterHandler.java:80)

at org.apache.felix.http.base.internal.dispatch.InvocationFilterChain.doFilter(InvocationFilterChain.java:46)

at org.apache.felix.http.base.internal.dispatch.HttpFilterChain.doFilter(HttpFilterChain.java:31)

at org.apache.felix.http.base.internal.dispatch.FilterPipeline.dispatch(FilterPipeline.java:76)

at org.apache.felix.http.base.internal.dispatch.Dispatcher.dispatch(Dispatcher.java:49)

at org.apache.felix.http.base.internal.DispatcherServlet.service(DispatcherServlet.java:67)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)

at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)

at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:229)

at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)

at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)

at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)

at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)

at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)

at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)

at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)

at org.eclipse.jetty.server.Server.handle(Server.java:370)

at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:494)

at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:982)

at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1043)

at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)

at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)

at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)

at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)

at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)

at java.lang.Thread.run(Unknown Source)

Caused by: java.lang.NullPointerException: null

at org.apache.felix.scrplugin.helper.ClassScanner.getComponentDescriptors(ClassScanner.java:465)

at org.apache.felix.scrplugin.helper.ClassScanner.getDescription(ClassScanner.java:433)

at org.apache.felix.scrplugin.SCRDescriptorGenerator.createComponent(SCRDescriptorGenerator.java:398)

at org.apache.felix.scrplugin.SCRDescriptorGenerator.execute(SCRDescriptorGenerator.java:161)

at com.day.crx.ide.BundleBuilder.generateScrDescriptors(BundleBuilder.java:624)

at com.day.crx.ide.BundleBuilder.build(BundleBuilder.java:245)

at com.day.crx.ide.CRXDEBuildServlet.handleAuthenticatedRequest(CRXDEBuildServlet.java:165)

... 120 common frames omitted

======================================================================

package com.kjm.simple.example;

import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.OptingServlet;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;

import javax.servlet.ServletException;
import java.io.IOException;

@SlingServlet(

    resourceTypes={"/bin/test/MyServlet"},

    extensions={"json"},

    generateService = true,

    generateComponent = true,

    label="Sample servlet",

    methods={"GET"},

    metatype=true,

    name="com.kjm.simple.example.MyServlet"

)
public class MyServlet extends SlingSafeMethodsServlet {

    @Override
    protected void doGet(SlingHttpServletRequest req, SlingHttpServletResponse res) throws ServerException, IOException {

        res.setContentType("application/json");

        try{
            JSONObject obj = new JSONObject();
         obj.put("success", true);
         obj.put("test", "test");

            res.getWriter().println(obj.toString());
        }catch(JSONException e){
            System.out.println(e);
        }

    }

}

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi,

I agree with Scott. Please never use CRXDE to create OSGi Bundles. Here is the best example to create OSGI Bundle using maven.

Adobe Experience Manager Help | Creating your first Adobe Experience Manager Service using an Maven ...

Thanks,

Ratna.

View solution in original post

8 Replies

Avatar

Level 1

thanks reply ^^

however, json is not problem now.

i've tried below it. still not working.

===================================================

@Override

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {

        PrintWriter responseWriter = response.getWriter();

        responseWriter.append("This is my TestServlet");

        responseWriter.flush();

    }

Avatar

Level 6

Hi can you pls try this out

@Override

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {

       

response.setContentType("text/html");

response.getWriter().write("This is my TestServlet");

        response.setStatus(SlingHttpServletResponse.SC_OK);

    }

Avatar

Level 1

i've tried it. but not working.

still  java.lang.NullPointerException

thanks

Avatar

Level 8

Hi,

I tried the below in my local and it works perfectly fine

import java.io.IOException;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import org.apache.sling.api.SlingHttpServletRequest;

import org.apache.sling.api.SlingHttpServletResponse;

import org.apache.sling.api.servlets.SlingAllMethodsServlet;

import org.osgi.service.component.annotations.Component;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

/**

* Servlet that returns back mock json, based on the parameters passed.

*/

@Component(immediate = true, service = Servlet.class, property = { "sling.servlet.paths=/bin/testservlet",

"sling.servlet.methods=get" })

public class TestServlet extends SlingAllMethodsServlet {

/**

*

*/

private static final long serialVersionUID = 1L;

/**

* Logger.

*/

private static final Logger LOG = LoggerFactory.getLogger(TestServlet.class);

/**

* The method called by the get. {@inheritDoc}

*/

@Override

protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response)

throws ServletException, IOException {

response.getWriter().println("TEST SERVLET");

}

}

Avatar

Level 10

Also - creating OSGi bundles in CRXDE lite is not best practice - please create them in a Maven project.

Adobe Experience Manager Help | Creating your first Adobe Experience Manager Service using an Maven ...

That is an older Archetype - see this for creating a servlet in a more recent archetype -- Creating a Mail List Sign Up Component for the Experience Manager Toy Store Site

Avatar

Level 10

Here is a article that will show you how to create a servlet using Maven:

Scott's Digital Community: Submitting Adobe Experience Manager form data to custom Sling Servlets

You can watch the video too.

Avatar

Correct answer by
Level 10

Hi,

I agree with Scott. Please never use CRXDE to create OSGi Bundles. Here is the best example to create OSGI Bundle using maven.

Adobe Experience Manager Help | Creating your first Adobe Experience Manager Service using an Maven ...

Thanks,

Ratna.