2016-11-08 3 views
1

Я могу использовать только привязку строк здесь, enableRequestValidation всегда должен быть строкой, поместить в мой компонент, я хочу использовать логическое значение, как я могу достичь этого, используя привязки свойств-заполнителя?Osgi Property Placeholder

<property-placeholder 
    persistent-id="JsonValidator" 
    update-strategy="reload" placeholder-prefix="$[" placeholder-suffix="]"> 
    <default-properties> 
     <property name="enableRequestValidation" value="false"></property> 
    </default-properties> 
</property-placeholder> 

<bean id="jsonSchemaRegistration"  class="rest.service.impl.jsonschema.JsonSchemaDynamicFeatureImpl"> 
    <property name="enableRequestValidation" value="$[enabledRequestValidation]"></property> 
</bean> 

Сложение исключение составляет, как показано ниже

2016-11-08 11:25:34,944 | ERROR | Thread-74  | BlueprintContainerImpl 
     | 15 - org.apache.aries.blueprint.core - 1.4.4 | Unable to start blueprint 
container for bundle core.rest.service.impl/0.6.0.SNAP 
SHOT 
org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting 
property: PropertyDescriptor <name: enableRequestValidation, getter: class core.rest.service.impl.jsonschema.JsonSchemaDynamicFeatureI 
mpl.isEnableRequestValidation(), setter: [class JsonSchemaDynamicFeatureImpl.setEnableRequestValidati 
on(boolean)] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecip 
e.java:939)[15:org.apache.aries.blueprint.core:1.4.4] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRec 
ipe.java:905)[15:org.apache.aries.blueprint.core:1.4.4] 
     at org.apache.aries.blueprint.container.BeanRecipe.setProperties(BeanRec 
ipe.java:886)[15:org.apache.aries.blueprint.core:1.4.4] 
+0

Какая ошибка у вас? Я ожидал бы, что это будет работать в качестве чертежа, автоматически преобразует значение. –

+0

Добавлена ​​трассировка стека на вопрос –

ответ

-1

Blueprint не поддерживает заполнители собственности.

+0

Не знаете, почему downvote. Спецификация Blueprint не включает поддержку заполнителя свойств, как я уже сказал. –

1

Можете ли вы использовать конфигурацию конфигурации управления Овном? Вы не предоставляете никакой информации о своей среде, но, используя ServiceMix, я делаю это все время. Например:

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

    <!-- OSGi blueprint property placeholder binding to a configuration file --> 
    <config:property-placeholder id="myProps.props" persistent-id="myProps" update-strategy="reload"> 
    <config:default-properties> 
     <config:property name="my.setting" value="true" /> 
    </config:default-properties> 
    </config:property-placeholder> 

    <bean id="myBean" class="org.me.MyClass"> 
    <property name="setting" value="${my.setting}" /> 
    </bean> 
</blueprint> 

Примечание включение Verion 1.1.0 пространства имен чертеж см, который поддерживает установку на обновление-стратегии. Инъекция свойств найдет метод setSetting (boolean setting) и попытается преобразовать строку в логическое значение. Здесь указано значение по умолчанию «true», но это может быть переопределено с помощью изменений в etc/myProps.cfg.

Смежные вопросы