如何通过CQ5中的osgi bundle调用sling servlet

时间:2014-10-21 10:07:03

标签: servlets osgi bundle cq5 sling

我刚刚通过maven.packaging创建了一个Sling servlet as - " bundle"然后我将它安装在CQ5的系统控制台内。

我的捆绑包向我显示活动状态和所有必需的包..已成功导出。

但是当我调用这个bundle来使用servlet时......没有任何反应。 它没有给我回应。 有没有更好的方法..创建一个sling servlet并创建一个OSGI包,这样我就可以在CQ5中将它作为一个包安装,从组件中调用servlet。

2 个答案:

答案 0 :(得分:0)

您可以像这样创建SlingSerlvet。

@SlingServlet(
        paths={"/services/myapp/LoginController/validateUser","/services/myapp/LoginController/logout"})
        @Properties({
            @Property(name="service.pid", value="com.xxx.xxx.controller.LoginController",propertyPrivate=false),
            @Property(name="service.description",value="Validates the user", propertyPrivate=false),
            @Property(name="service.vendor",value="xxx Tech", propertyPrivate=false)
        })

        public class LoginController extends SlingAllMethodsServlet{


    private static final long serialVersionUID = 1L;

    @Override
    protected void doPost(SlingHttpServletRequest request,
            SlingHttpServletResponse response) throws ServletException,
            IOException {



    }

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




    }
}

要在浏览器中调用此servlet,只需键入URL“/ services / myapp / LoginController / validateUser” 和“/ services / myapp / LoginController / logout”你可能已经知道serlvet可以有多个URL。

这是Code的一部分工作。  确保您的网址映射,即路径(在Sling / CQ5中)以/ services

开头

您也可以使用专用的Eclipse for CQ5 CRXDE Eclipse而不是Maven bundle创建bundle。 它使用起来要容易得多,但速度有点慢。下载Here

答案 1 :(得分:0)

Bingo ..最后我能够调用捆绑为OSGI捆绑的sling sevlet并部署在CQ的系统控制台中。 后来我打电话给这个OSGI包发了一个帖请求,这次能够得到响应。 这是斯科特的一个非常好的,非常具有说明性的教程,解释了我的问题的每一步。

http://scottsdigitalcommunity.blogspot.in/2013/06/posting-form-data-to-adobe-cq-using.html

可以从这里找到示例代码或示例应用程序链接 -

http://helpx.adobe.com/experience-manager/using/custom-sling-servlets.html

一步一步地按照上面的链接,你最终获得了胜利。 我按照每个步骤,通过CRXDE中的组件成功调用了OSGI bundle的servlet。 最后不要忘记感谢斯科特....感谢斯科特的解释!!!