当前位置: 首页 > 知识库问答 >
问题:

从java访问Karaf cfg文件中的属性?

苏洛城
2023-03-14

我在蓝图中使用cm:property-placeholder来加载配置文件:

<!-- External configuration -->
<cm:property-placeholder persistent-id="mubyndle" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="schemaValidation" value="false"/> 
    </cm:default-properties>
</cm:property-placeholder>

<bean id="myBean" class="com.mybean">
    <property name="abc" value="${abc}" />
</bean>

我可以将值设置为bean,例如${abc}。
如何从java访问配置的任何其他属性?

我计划添加属性列表:prop1=11 prop2=22...propn=nn

由于数量不同,我无法在蓝图中添加所有内容。

谢谢你,维克多

共有3个答案

谭越
2023-03-14

你最好这样做:

a)在blueprint.xml中

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.1.0"
    xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"

...

<cm:property-placeholder persistent-id="<name of cfg file>"
    update-strategy="reload">
    <cm:default-properties>
        <cm:property name="<property name in file>" value="<value>" />
    </cm:default-properties>
</cm:property-placeholder>


<bean id="<name of Bean>" class="<full name of class>" >
    <property name="<property name in file>" value="${<value>}"></property>
</bean>

b) 在“豆子”里面

    < li >定义一个公共构造函数(Spring需要的定义) < li >定义变量及其设置器:
private <Type of> <name of variable>;
public <Constructor> (){} // no parameters
public void  set<property name in file first upper letter>(<Type of> <property name in file>) {
  <name of variable> = <property name A>;
}

c) 将配置文件添加到 '/etc' 文件夹中:

显然,在其中,属性:

金何平
2023-03-14

您可以将org.apache.aries.blueprint.compendium.cm.CmPropertyPlaceholder
设置为

然后在myBean中为cmpp添加setter:
public ululesetProperties(CmProperty tyPlacehold属性){Configuration config=CmUtils.getConfiguration(properties.getConfigAdmin(),properties.getPersistentId()); if(config!=null){Dicpedia props=config.getProperties();System.out.println(props); }

唯一的问题是bundleorg.apache.aries.blueprint.cm不导出包org.apache.aries.blueprint.compendium.cm,因此我无法在java中访问CmProperty tyPlacehold。karaf中是否有任何命令会额外导出包的包?

通过上下文访问配置是可能的,将对此进行研究并发布。

裴英锐
2023-03-14

在blueprint中添加对ConfigurationAdmin服务的引用:

将其设置为bean:

在bean中:
私有配置管理员配置管理员

public void setConfigAdmin(ConfigurationAdmin configAdmin) throws IOException {
    this.configAdmin = configAdmin;

    System.out.println(configAdmin);
    System.out.println(configAdmin.getConfiguration("any-persistent-id").getProperties());
}

 类似资料:
  • 在阅读了关于这个主题的大约50个不同的线程后,我还没有能够有任何解决方案工作。 我正在尝试访问JAR中的config.properties文件。 null null file.jar MyApp 此处的files.class 等… icon.jpg config.properties

  • 我在网络空间自由 17.0.0.4 上运行。部署了位于 目录下的 Web 应用程序和自定义身份验证模块。该jar文件被标记为服务器.xml文件中的。以下是它在服务器中的外观.xml 现在的问题是,我想使用文件位于文件到Web应用程序。 已尝试访问以下代码片段: 但是,两者都不起作用。 知道如何访问位于库jar文件中的属性文件吗?

  • 假设我们有一个简单的Spring条件,它必须与属性文件中的文件属性相匹配: 不幸的是,上面提到的方法调用都没有返回在属性文件中定义的真实属性。相反,当我为另外两个调用getProperty方法和“${my.property}”字符串时,我得到了null(显然,该属性尚未解析)。

  • 我正在尝试从一个java项目运行一个javascript文件。目前,我正在使用Nashorn java脚本引擎运行脚本,并使用maven编译和创建jar文件。 我得到警告: 我使用的是openjdk 11版本。这会是一个很大的问题吗?如果是这样的话,我要做的事情的最佳替代方案是什么? 我得到了一个FileNotFoundException 我有一个javascript文件脚本。js和两个java文

  • 问题内容: 问题: 在我的Java应用程序(不是applet)中,我希望将某些文件操作限制在所有类之外,但不应限制类的列表/组/包。 具体来说,我想限制… 文件读取 文件写入 档案建立 文件删除 …这样它们只能在当前工作目录中对所有非受限类进行处理。 SecurityManager尝试: 我尝试实现实现此行为的SecurityManager类的子类,但是似乎在进行检查时,所提供的 文件 信息所提供

  • 嗨,我是Java泛型的新手,我正在尝试访问泛型类中的属性。到目前为止,我已经找到了C#相关的答案,如果有人能指导我如何在java中做到这一点,那将是非常有帮助的。假设我有Class Car,它有整数型轮子和字符串型模型的属性。现在我有一个方法,比如