我创建了一个组件,使用他们的免费API显示第三方来源(openweathermap.org/api)的天气信息。为此,我创建了一个servlet并通过maven build将其上传到AEM。组件工作正常,并根据需要获取详细信息。
由于您使用的是APIKey,因此您的站点应允许在不更改代码的情况下更改/更新密钥,并在不重新启动CQ的情况下立即激活。 - 只有管理员才能做到这一点,作者不应该看到或担心密钥。
参考链接:system/console permissions
我经历过很多论坛但没有帮助。我确信我们必须在http://localhost:4502/system/console/configMgr工作 - 但是哪个部分和哪些变化不确定。还有如何使用更改的API密钥触发servlet。 提前致谢
答案 0 :(得分:0)
您可以创建可配置的OSGI服务。然后,API密钥将成为该服务的属性,管理员可以从Felix控制台修改该属性。
要创建OSGI服务,您应该使用Felix SCR注释并在maven构建过程中处理这些注释,以生成适当的部署描述符。这是一个简单的例子。
@Component(immediate=true, label="Weather Service", description="My weather service", metatype=true)
@Service(value=WeatherService.class)
public class WeatherServiceImpl implements WeatherService {
@Override
public String getWeatherInfo() {
return null; // call the weather api here
}
}
使用@Property
注释定义您的可配置属性,如下所示,并在服务的activate方法中将其分配给在bundle install上激活服务时调用的方法。
@Property(value="123456789")
static final String WEATHER_API_KEY = "weather.api.key";
private String weatherAPIKey;
@Activate
public void activate(final Map<String, Object> props) {
this.weatherAPIKey = (String)props.get(WEATHER_API_KEY);
}
在此之后,您应该在Felix控制台中看到您的可配置服务。
即将获得权限,作者根本不应该拥有Felix控制台的权限。只有管理员才能访问它。