【问题标题】:CQ5 - Separate out a servlet's business logic into a standalone bundleCQ5 - 将 servlet 的业务逻辑分离成一个独立的包
【发布时间】:2014-10-21 13:14:36
【问题描述】:

我是 java、osgi、bundle、cq5 控制台等的新手。

有人可以指点我一个教程或一个起点,我可以从中学习如何做我想要实现的目标。

基本上我们在 3-4 个 CQ5 网站中都有通用的搜索功能,所有这些网站都驻留在单个 cq 实例上。同样的功能在所有网站中都作为 servlet 实现,并使用 javascript 从客户端调用。冗余代码.... 我们想要: a) 从到目前为止它重复驻留的所有 websiteName-core 包中取出这个 servlet 的代码。 b) 创建一个单独的独立可安装 OSGI 包,它只包含一个 servlet。 然后我们想从我们所有 CQ5 网站的客户端调用这个单独的分离包。

由于代码冗余,我们希望使这个通用搜索包可交付,以便其他开发团队只需将其安装在他们的控制台中并调用 servlet 就可以在他们的项目中使用它。

长话短说。我想创建一个包含 servlet 的 OSGI 包。

我希望在这里了解整个游戏,并希望获得一个从头到尾解释它的教程链接。

【问题讨论】:

    标签: aem osgi-bundle


    【解决方案1】:

    您可以先将搜索代码转换为单独的 maven 多模块项目。原型和创建说明可以在 adobe 的文档站点 (link) 上找到

    maven 多模块项目将有两个模块的 Bundle 和内容。 Bundle 将包含所有的 servlet、OSGI 服务和后端的东西。内容模块将包含所有 UI 和创作相关的东西,如模板和组件。它映射到 CQ 服务器上的存储库。 UI 节点被序列化并作为 XML 文档存储在平面文件系统中。

    由于它是一个独立的 maven 项目,它的依赖项将是自包含的。在 bundle 模块中添加搜索 servlet 和所有必需的类。这个项目的编译包将是可交付的。

    只要包安装在服务器上,任何其他网站都可以调用它。

    sling 中的 Servlet 实现为 javax.servlet.Servlet 类的 OSGI 服务。 Servlet 类的任何导出服务都将被 sling servlet 解析器识别,您可以在此link 获得更多详细信息

    【讨论】:

      【解决方案2】:

      如果您想创建一组相关的捆绑包并将它们作为 CQ 内容包分发,Sharath Madappa 的回答是正确的。

      如果您只想创建一个捆绑包来打包一些 OSGi 服务(包括 servlet),您只需要使用所需的元数据构建捆绑包 jar。 Apache Sling GET servlets bundle 就是一个很好的例子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多