Как получить доступ к файлу cfg в KARAF/etc с помощью PAX-CDI

Как получить доступ к файлу cfg в KARAF/etc с помощью PAX-CDI

eg:

KARAF_HOME\etc\import.cfg

Как использовать его с помощью @OsgiServiceProvider


person athish sreeram    schedule 15.06.2017    source источник
comment
Эти файлы *.cfg обычно рассматриваются как конфигурации для администратора конфигурации. Поскольку вы уже работаете в среде OSGi, лучше придерживаться того способа, который работает, поэтому просто позвольте администратору конфигурации выполнить настройку вашего объекта CDI. Также лучше спросить в одном из вовлеченных сообществ, таких как karaf и ops4j. У обоих есть списки рассылки, вы получите там надлежащую обратную связь.   -  person Achim Nierbeck    schedule 16.06.2017
comment
Спасибо за ваше предложение, но я пытаюсь не пытаться изменить существующую конфигурацию, я пытаюсь получить доступ к новому cfg, добавленному специально для моего пакета.   -  person athish sreeram    schedule 17.06.2017
comment
То же самое относится и к этому :)   -  person Achim Nierbeck    schedule 23.06.2017


Ответы (1)


Обойти вас можно с помощью DOSGI, чтобы загрузить и поместить свойство в Util, и вы получите доступ к своему коду Pax-CDI.

ДОСГИ:

@Component(immediate = true, configurationPolicy = ConfigurationPolicy.REQUIRE, configurationPid = "ca.esc.pbm.frontend.security")
public class SecurityConfig{

public static final String TOKEN_SIG_SECRET = "signatureSecret";

@Activate
    private void activate(BundleContext bundleContext, Map<String, ?> properties) throws Exception {

        logger.info("Security Config Activated");

        Properties props = new Properties();

        if (properties.isEmpty()) {
            throw new ComponentException("Config Properties is Empty ");
        }

        logger.info("Property loaded " + properties.size());

        props.putAll(properties);

        PropertiesUtil.setProperty(props);

        System.out.println(properties);

    }
}

Свойство Util

/**
 * Property Util to load the *.properties form class path
 * 
 * @version 1.0
 */
public class PropertiesUtil {

private static Map<String, String> propertiesMap;

/**
 * Get the property value for the given key from the loaded property
 * 
 * @param name
 * @return String
 */
public static String getProperty(String name) {
    return (String) propertiesMap.get(name);
}

/**
 * Set the property value for the given key from the loaded property
 * 
 * @param props
 */
public static void setProperty(Properties props) {
    Map<String, String> propertiesMapLocal = new HashMap<String, String>();

    for (Object key : props.keySet()) {
        String keyStr = key.toString();
        propertiesMapLocal.put(keyStr, props.getProperty(keyStr));
    }

    propertiesMap = propertiesMapLocal;
}

}

pax-cdi

@ApplicationScoped
@Named
public class DefaultApiImpl implements DefaultApi {

@Override
    public Response login(String userAgent, String username, String password, UriInfo uriInfo) {

PropertiesUtil.getProperty(SecurityConfig.TOKEN_SIG_SECRET);

}

файл конфигурации

у вас может быть karaf_home/etc/ca.esc.pbm.frontend.security.cfg со значением signalSecret=my-secret

person athish sreeram    schedule 16.06.2017