【记录三】使用Maven原型项目创建第一个Adobe Experience Manager服务

一、介绍

在某些业务用例中,您在创建Adobe Experience Manager(AEM)应用程序时会创建OSGi捆绑软件。 尽管创建OSGi捆绑包的方法有很多,但是推荐的方法是使用Maven和Adobe Maven Archetype。 本开发文章将引导您创建一个基本的OSGi捆绑软件,其中包含一个名为KeyService的简单服务。 该服务所要做的就是接受输入值并设置键值。 它还公开了一种返回键值的方法,该值可以显示在AEM网页中。
在这里插入图片描述

名为KeyService的自定义AEM服务将更新数据值

表示KeyService的应用程序逻辑通过放置在OSGi捆绑软件中的Java代码实现。

二、创建应用程序文件夹结构

使用CRXDE Lite创建包含模板,组件和页面的应用程序文件夹结构
在这里插入图片描述

CQ应用程序文件夹结构

下面介绍每个应用程序文件夹:

application name:包含应用程序使用的所有资源。 资源可以是模板,页面,组件等。
components:包含您的应用程序使用的组件。
page:包含页面组件。 页面组件是脚本,例如JSP文件。
global:包含您的应用程序使用的全局组件。
template:包含您作为页面组件基础的模板。
src:包含组成OSGi组件的源代码(此开发文章不使用此文件夹创建OSGi捆绑包)。
install:包含一个已编译的OSGi捆绑包容器。

创建应用程序文件夹结构:
1、要查看CQ欢迎页面,请在Web浏览器中输入URL http://[host name]:[port] 。 例如,http://localhost:4502.
2、转到 http://localhost:4502/crx/de/index.jsp.
3、右键单击apps文件夹(或父文件夹),依次选择“创建”,“创建文件夹”。
4、在“创建文件夹”对话框中输入文件夹名称。 输入firstOSGI
5、对上图中指定的每个文件夹重复步骤1-4。
6、单击全部保存按钮。
在这里插入图片描述

注意:
在CRXDELite中工作时,必须单击全部保存按钮才能进行更改。

三、创建一个模板

您可以使用CRXDE Lite创建模板。 CQ模板使您可以为应用程序中的页面定义一致的样式。 模板包含指定页面结构的节点。

1、在以下位置选择Select CRXDE Lite
http://localhost:4502/crx/de/index.jsp.

2、右键单击模板文件夹(/apps/firstOSGI/template),依次选择“创建”,“创建”模板。
在这里插入图片描述

3、在“创建模板”对话框中输入以下信息
Label:要创建的模板的名称。 输入keyTemplate。
Title:分配给模板的标题。
Description:分配给模板的描述。
Resource Type:分配给模板并复制到实现页面的组件路径。 输入firstOSGI / components / page / keyTemplate。
Ranking:此模板相对于其他模板的出现顺序(升序)。 将此值设置为1可确保模板在列表中首先出现。
在这里插入图片描述

4、单击Next到下一步。 单击加号并输入以下值:
在这里插入图片描述
5、单击Next到下一步
在这里插入图片描述
6、单击Next到下一步
在这里插入图片描述
7、单击OK,创建完成
在这里插入图片描述

四、创建页面渲染组件

组件是可重用的模块,它们实现特定的应用程序逻辑以呈现网站的内容。 您可以将组件视为完全实现特定功能的脚本的集合(例如,JSP,Java servlet等)。 为了实现此功能,作为CQ开发人员,您有责任创建执行特定功能的脚本。
默认情况下,一个组件至少具有一个默认脚本,该脚本与该组件的名称相同。

创建渲染组件,请执行以下任务:
1、转到选择CRXDE Lite at http://localhost:4502/crx/de/index.jsp.
2、右键点击 /apps/firstOSGI/components/page, 然后选择Create, Create Component.
3、在“创建组件”对话框中输入以下信息:
Label:要创建的组件的名称。 输入keyTemplate。
Title:分配给组件的标题。
Description:分配给模板的描述。
Super Type:foundation/components/page(在AEM 6中,您为页面组件指定此值。在AEM的早期版本中,不需要此值。)
在这里插入图片描述
4、单击Next到下一步
在这里插入图片描述
5、单击OK,创建完成
6、打开slingTemplateJCR.jsp 位置:
/apps/firstOSGI/components/page/keyTemplate/keyTemplate.jsp.

7、输入以下JSP代码
在这里插入图片描述

五、使用模板创建页面

1、转到 http://localhost:4502/
2、选择sites
在这里插入图片描述

3、单击create 选择 page 选择前面创建的模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4、选择模板单击Next
在这里插入图片描述
5、输入页面属性信息
Title:指定页面的标题
Name:指定页面的名称
在这里插入图片描述
6、单击create,在弹窗点击Open
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、创建一个Experience Manager原型项目

您可以使用Maven原型插件创建一个Experience Manager原型项目。 在此示例中,假定工作目录为C:\ AdobeCQ

Adobe Maven原型创建的默认文件
要创建一个Experience Manager原型项目,请执行以下步骤:
1、打开命令提示符,然后转到您的工作目录(例如F:\01_WORKCODE\00_Workspace\01.IDEA_Workspace)。
2、运行以下Maven命令
mvn archetype:generate -DarchetypeRepository=http://repo.adobe.com/nexus/content/groups/public/ -DarchetypeGroupId=com.day.jcr.vault -DarchetypeArtifactId=multimodule-content-package-archetype -DarchetypeVersion=1.0.2 -DgroupId=com.adobe.cq -DartifactId=key61 -Dversion=1.0-SNAPSHOT -Dpackage=com.adobe.cq -DappsFolderName=myproject -DartifactName=“My Project” -DcqVersion=“5.6.1” -DpackageGroup=“My Company”

3、出现提示时,指定Y
4、完成后,您将看到以下消息:
在这里插入图片描述

5、将命令提示符更改为生成的项目。 例如:F:\01_WORKCODE\00_Workspace\01.IDEA_Workspace\key61。 运行以下Maven命令:mvn idea:idea
在这里插入图片描述
6、Maven项目导入到IDEA中(只需要导入bundle模块)
在这里插入图片描述
在这里插入图片描述
7、下一步是将名为KeyService的Java接口添加到com.adobe.cq包中。 此界面定义您的自定义AEM服务公开的操作。 以下Java代码代表KeyService Java接口。 注意,该接口公开了两个名为setKey和getKey的方法。
在这里插入图片描述
8、KeyServiceImpl类使用以下Apache Felix SCR注释创建OSGi组件:
@Component –将类定义为组件
@Service-定义组件提供的服务接口
在这里插入图片描述
9、修改POM文件
修改Maven POM文件
修改POM文件以成功构建OSGi捆绑软件。 添加以下依赖项(存在则无需添加):
org.apache.felix.scr
org.apache.felix.scr.annotations
org.apache.sling
在这里插入图片描述

10、将项目进行打包安装
执行:mvn clean install
在这里插入图片描述
在这里插入图片描述

七、将捆绑软件部署到Experience Manager

1、登录到Apache Felix Web控制台,网址为:http://server:port/system/console/bundles (default admin user = admin with password= admin).
2、单击捆绑包选项卡,按ID对捆绑包列表进行排序,并记下最后一个捆绑包的ID。
在这里插入图片描述
3、单击Install/Update按钮,上传捆绑包。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、单击Refresh Packages即可看到上传的文件
在这里插入图片描述

5、如果没启动点击右边的启动
在这里插入图片描述

八、创建一个调用KeyService的AEM应用程序

1、修改keyTemplate.JSP以调用KeyService。 要调用KeyService,请使用sling.getService方法,如此代码示例所示。
com.adobe.cq.KeyService keyService = sling.getService(com.adobe.cq.KeyService.class);

2、确保传递Java接口的标准名称,而不传递实现类。 以下代码表示keyTemplate.JSP文件。
在这里插入图片描述

将/apps/firstOSGI/components/page/keyTemplate/keyTemplate.jsp中的代码替换为上面代码示例中显示的代码。

3、创建一个页面,显示从KeyService检索的数据(同第五点步骤)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值