gpt4 book ai didi

java - CQ5 - 吊带 :OsgiConfig service in Java class

转载 作者:行者123 更新时间:2023-12-02 21:50:57 25 4
gpt4 key购买 nike

我创建了一个 sling:OsgiConfig 节点,它具有 String[] 类型的属性路径。我需要在 java 类中访问此属性。我想在 java 类中创建一个从 JSP 调用的方法。我正在使用 taglib 执行此操作。我知道我们可以使用下面的代码在 JSP 中实现相同的目的:

    Configuration conf = sling.getService(org.osgi.service.cm.ConfigurationAdmin.class).getConfiguration("Name of the config");
String[] myProp = (String[]) conf.getProperties().get("propertyPath");

如何在 Java 类中执行此操作。

最佳答案

您没有说明您希望在哪种类型的 Java 类中获取配置。让我们看一下选项:

<强>1。任何 OSGi 服务(例如 servlet、过滤器或事件监听器)

将以下字段添加到 OSGi 组件类:

@Reference
private ConfigurationAdmin configurationAdmin;

并以与 JSP 中相同的方式使用它。

<强>2。 sling:OsgiConfig所属的OSGi服务

如果您添加了 sling:OsgiConfig 节点来配置您自己的 OSGi 组件,请遵循 Chris 的建议:

@Component
@Properties({
@Property(name = "propertyPath")
})
public class MyComponent {

private String[] propertyPath;

@Activate
public void activate(ComponentContext ctx) {
propertyPath = PropertiesUtil.toStringArray(context.getProperties().get("propertyPath"));
}

public void myMethod() {
// do something with the propertyPath field
}
}

activate 方法由 OSGi 自动调用。 ComponentContext 的限定名称是 org.osgi.service.component.ComponentContext

<强>3。普通旧 Java 对象

如果您的类不是 OSGi 组件,则您至少需要有权访问 SlingHttpServletRequest 对象。如果这样做,您可以从中提取 SlingScriptHelper 并使用它来获取 ConfigurationAdmin:

SlingHttpServletRequest request = ...;
SlingBindings bindings = (SlingBindings) request.getAttribute(SlingBindings.class.getName());
SlingScriptHelper sling = bindings.getSling();
// here you can use your JSP code

关于java - CQ5 - 吊带 :OsgiConfig service in Java class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com