Получить текущее доменное имя в компоненте службы OSGi в AEM при активации - PullRequest
1 голос
/ 13 июля 2020

Я пишу компонент службы OSGI в AEM. Я хочу получить текущее доменное имя в методе активации компонента службы.

В настоящее время я пишу метод построения, чтобы получить запрос от ссылающегося класса / службы / модели / сервлета для инициализации «запроса» class и использование этого объекта запроса для получения имени сервера

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. Construct - для инициализации глобального request объекта
  2. setDomainName - для инициализации domainName глобального объекта, который будет использоваться во всех других методах обслуживания

Есть ли способ получить имя домена в методе активации, чтобы мне не пришлось вызывать два вышеуказанных метода для использования службы.

Примечание: - Я не могу создать конфигурацию OSGI для имени домена, поскольку это доменное имя уже используется как ключевое свойство для идентификации конфигурации OSGI данной фабрики

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Поскольку серверы AEM publi sh могут использоваться для нескольких доменов, невозможно «узнать» нужный домен, не получив запроса. Также может быть какая-то магия c, выполняемая веб-сервером и CDN до того, как запрос даже достигнет AEM.

Вдобавок к этому метод активации не вызывается каждый раз, когда используется служба, поскольку эти компоненты используются несколько раз.

Так что я думаю, что нет, невозможно угадать, каким будет домен следующего входящего запроса, когда компонент будет активирован.

BR, Оливер

0 голосов
/ 13 июля 2020

Чтобы добавить к ответу @OliverGeberts, эту информацию можно добавить к содержимому (то есть к свойствам страницы на языке root) или к какой-то конфигурации клиента.

...