У меня есть приложение 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