Файл конфигурации Camel не может читать переменные окружения в macos - PullRequest
0 голосов
/ 21 июня 2019

У меня есть приложение Apache Camel, в котором в файле camel-config есть заполнитель.Он отлично работает в Windows, если я установил переменную окружения.Но это не работает в mac

Это для промежуточного Java-приложения, имеющего Apache Camel версии 2.16 и Spring 4. Я попытался включить переменную окружения в .bash_profile.Когда я делаю printenv, отображается значение, соответствующее ключу

Это заполнитель в моем файле camel-config.xml

<bean id = "ICM_HIERARCHY_PROCESSOR" class="p4p.processors.ICMHierarchyProcessor"/>
<bean id = "ICM_PAYMENT_FILE_PROCESSOR" class="p4p.processors.ICMPaymentFileProcessor"/>
<bean id = "INCENTIVE_PROCESSOR" class="p4p.processors.PerformanceProcessor"/>
<bean id = "EMAIL_ALERT_PROCESSOR" class="p4p.processors.EmailAlertProcessor" />
<bean id = "ADM_PROCESSOR" class="p4p.processors.ADMProcessor"/>
<bean id = "ADP_PROCESSOR" class="p4p.processors.ADPProcessor"/>
<bean id = "ADP_CONTROL_PROCESSOR" class="p4p.processors.ADPControlProcessor"/>
<bean id = "HR_PROCESSOR" class="p4p.processors.HRProcessor"/>

<context:property-placeholder location="classpath*:application-${EPAAS_ENV}.properties" ignore-unresolvable="true" order="0"/>

<bean id="loginInfo" class="java.util.HashMap">
    <constructor-arg>
        <map key-type="java.lang.String" value-type="java.lang.String">
            <entry key = "username" value="${p4p.admin.username}"/>
            <entry key = "password" value="${p4p.admin.password}"/>
            <entry key = "encryptKey" value="${p4p.juice.key}"/>
        </map>
    </constructor-arg>
</bean>

application.properties:

camel.springboot.name = p4p-central-dispatch-camel

# properties used in the Camel route and beans
# --------------------------------------------

p4p.envName = ${EPAAS_ENV}

Пример файла, в котором он используется:

@Component
public class EmailAlertProcessor implements Processor {

    @Value("${p4p.envName}")
    private String envString;

    @Override
    public void process(Exchange exchange) throws Exception {
        String fileName = exchange.getIn().getHeader("CamelFileName", String.class);

        exchange.getIn().setHeader("subject", "[ePaaS:POA] File Uploaded from " + envString);
        exchange.getIn().setBody("[ePaaS]File Uploaded: " + fileName + "\nUpload Time:" + new Date());
    }
}

При запуске сервера я получаю эту ошибку

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'JAVA_HOME' in string value "classpath*:application-${EPAAS_ENV}.properties"
    at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:174) [spring-core-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:126) [spring-core-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:204) [spring-core-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:178) [spring-core-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.context.support.PropertySourcesPlaceholderConfigurer$2.resolveStringValue(PropertySourcesPlaceholderConfigurer.java:172) [spring-context-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveStringValue(BeanDefinitionVisitor.java:282) [spring-beans-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:209) [spring-beans-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitArray(BeanDefinitionVisitor.java:217) [spring-beans-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.resolveValue(BeanDefinitionVisitor.java:189) [spring-beans-4.2.7.RELEASE.jar:4.2.7.RELEASE]
    at org.springframework.beans.factory.config.BeanDefinitionVisitor.visitPropertyValues(BeanDefinitionVisitor.java:141) [spring-beans-4.2.7

Но значение epaas_env - E1, которое печатается после выполнения командыprintenv

...