【问题标题】:Get current domain name in an OSGi service component in AEM on activation激活时在 AEM 中的 OSGi 服务组件中获取当前域名
【发布时间】:2020-11-02 08:52:05
【问题描述】:

我正在 AEM 中编写一个 OSGI 服务组件。 我想在服务组件的activate方法中获取当前域名。

目前,我正在编写一个构造方法,从引用类/服务/模型/servlet 获取请求以初始化“请求”类对象并使用此请求对象获取服务器名称

private SlingHttpServletRequest request;
private String domainName;

@Override
public void construct(final SlingHttpServletRequest request) {
    this.request = request;
}

@Override
public void setDomainName(){
     this.domainName = request.getServerName();
}

this.domainName用于多种服务方法实现。

所以,我必须调用 2 个额外的服务方法,

  1. 构造——初始化全局request对象
  2. setDomainName - 初始化 domainName 全局对象以供所有其他服务方法使用

是否有办法在activate方法中获取domainName,这样我就不用调用以上两个方法来使用服务了。

注意:- 我无法为域名创建 OSGI 配置,因为该域名已被用作 关键属性 来识别给定工厂的 OSGI 配置

【问题讨论】:

    标签: java service osgi aem


    【解决方案1】:

    由于 AEM 发布服务器可能用于多个域,因此无法在没有收到请求的情况下“知道”正确的域。甚至在请求到达 AEM 之前,Web 服务器和 CDN 也可能会发挥一些作用。

    最重要的是,每次使用服务时都不会调用 activate 方法,因为这些组件会被多次使用。

    所以我认为没有,没有办法猜测激活组件时下一个传入请求的域。

    BR, 奥利弗

    【讨论】:

      【解决方案2】:

      要添加到@OliverGeberts 答案,可以将此信息添加到内容(即语言根的页面属性)或某种租户配置中。

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        • 2019-08-31
        • 2011-08-08
        • 1970-01-01
        • 1970-01-01
        • 2018-06-24
        • 2019-05-08
        相关资源
        最近更新 更多