我是java,osgi,bundles,cq5 console等的新手。
有人可以指点我一个教程或起点,从那里我可以学习如何做我想要实现的目标。
基本上我们在3-4个CQ5网站中有共同的搜索功能,所有这些网站都驻留在一个cq实例上。这个功能在所有网站中作为servlet实现,并使用javascript从客户端调用。冗余代码.... 我们想要: a)从现在重复使用的所有websiteName-core包中取出这个servlet的代码。 b)创建一个单独的独立可安装OSGI包,它只包含一个servlet。 然后我们想从我们所有CQ5网站的客户端调用这个单独的分离包。
来自代码冗余的Aprt,我们希望这个通用搜索包可以发送,以便其他开发团队可以在他们的项目中使用它,只需将它安装在他们的控制台中并调用servlet。
长话短说。我想创建一个具有servlet的OSGI包。
我希望在这里了解整个游戏,并希望获得一个从头到尾解释它的教程链接。
答案 0 :(得分:1)
您可以首先将搜索代码转换为单独的maven多模块项目。可以在adobe的文档站点(link)上找到原型和创建原型的说明
maven multimodule项目将包含两个模块的Bundle和内容。 Bundle将包含所有servlet,OSGI服务和后端内容。内容模块将包含所有与UI和创作相关的内容,例如模板和组件。它映射到CQ服务器上的存储库。 UI节点被序列化并作为XML文档存储在平面文件系统上。
由于它是一个独立的maven项目,它的依赖关系将是自包含的。在bundle模块中添加搜索servlet和所有必需的类。该项目的编译包将可以发送。
只要包安装在服务器中,任何其他网站都可以拨打电话。
吊索中的Servlet实现为javax.servlet.Servlet
类的OSGI服务。 Servlet类的任何导出服务都将被吊索servlet解析器识别,您可以在此link
答案 1 :(得分:0)
如果你想创建一组相关的包并将它们作为CQ内容包分发,Sharath Madappa的答案是正确的。
如果您只想创建一个包来封装一些OSGi服务(包括servlet),您只需要使用所需的元数据构建bundle jar。 Apache Sling GET servlets bundle就是一个很好的例子。