在激活时获取AEM中OSGi服务组件中的当前域名



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

目前,我正在编写一个构造方法,从引用class/service/model/servlet获得请求,以初始化"request"类对象,并使用该请求对象获得服务器名称

private SlingHttpServletRequest request;
private String domainName;
@Override
public void construct(final SlingHttpServletRequest request) {
this.request = request;
}
@Override
public void setDomainName(){
this.domainName = request.getServerName();
}

并且CCD_ 1被用于多种服务方法的实现中。

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

  1. 构造-初始化全局request对象
  2. setDomainName-初始化要在所有其他服务方法中使用的domainName全局对象

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

注意:-我无法为域名创建OSGI配置,因为此域名已被用作密钥属性,以识别给定工厂的OSGI配置

由于AEM发布服务器可能用于多个域,因此无法"知道";正确的域而没有得到请求。在请求到达AEM之前,web服务器和CDN可能也会发挥一些作用。

除此之外,activate方法不会在每次使用服务时调用,因为这些组件会被多次使用。

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

BR,Oliver

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

最新更新