为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 aem groovy 控制台中获取服务?

如何在 aem groovy 控制台中获取服务?

哈士奇WWW 2023-06-14 15:43:14
我需要创建一个 Java 服务,并从 aem groovy 控制台请求该服务。我创建了一个作为 Java 类的服务,构建并部署到本地 aem 实例,当我尝试使用 getService 函数询问它时,它不起作用,并且出现错误。我正在尝试以这种方式获得服务:def jcrService = getService(TestService.class)out.println(jcrService.test())并以这种方式:import example.core.services.TestService;TestService testService = new TestService();out.println(testService.test())当我导入我的服务类时,它正在工作。但是当我实现与 jcr.Session 和 jcr.Nodes 一起工作的基本接口时,它不起作用。
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

提供 FQCN(完全合格的类名)对我来说很好。请找到以下示例。


常规脚本:


def testService = getService("com.project.services.TestService")


println "title is: " + testService.getTitle();

print "url is: " + testService.getUrl();

结果:


title is: Test Service Title

url is: http://localhost:4502

测试服务:


package com.project.services;


public interface TestService {

    public String getTitle();

    public String getUrl();

}

测试服务实现


package com.project.services.impl;


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

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

import org.osgi.service.metatype.annotations.Designate;


import com.project.services.configuration.TestServiceConfig;

import com.project.services.TestService;


@Component(service = TestService.class, name = "TestService", immediate = true)

@Designate(ocd = TestServiceConfig.class)

public class TestServiceImpl implements TestService {


    private String url;


    @Override

    public String getTitle() {

        return "Test Service Title";

    }


    @Override

    public String getUrl() {

        return url;

    }


    @Activate

    protected void activate(TestServiceConfig testServiceConfig) {

        url = testServiceConfig.url();

    }


}


测试服务配置


package com.project.services.configuration;


import org.osgi.service.metatype.annotations.AttributeDefinition;

import org.osgi.service.metatype.annotations.ObjectClassDefinition;


@ObjectClassDefinition(name = "Test Service Config", description = "Test Service Configuration.")

public @interface TestServiceConfig {


    @AttributeDefinition(name = "url", description = "Provide URL for localhost")

    String url() default "http://localhost:4502";

}


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信