001/** 002 * Copyright (C) 2006-2023 Talend Inc. - www.talend.com 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.talend.sdk.component.server.configuration; 017 018import java.io.File; 019import java.util.Properties; 020 021import org.apache.logging.log4j.LogManager; 022import org.apache.logging.log4j.core.LoggerContext; 023import org.apache.meecrowave.Meecrowave; 024import org.apache.meecrowave.configuration.Configuration; 025 026public class PropertiesSetup implements Meecrowave.ConfigurationCustomizer { 027 028 @Override 029 public void accept(final Configuration configuration) { 030 checkOrSetProperty("jdk.serialFilter", System.getenv("TALEND_JDK_SERIAL_FILTER")); 031 checkOrSetProperty("java.io.tmpdir", System.getenv("JAVA_IO_TMPDIR")); 032 checkOrSetProperty("java.security.egd", "file:/dev/./urandom"); 033 checkOrSetProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager"); 034 checkOrSetProperty("log4j.configurationFile", System.getenv("LOG4J_CONFIGURATIONFILE")); 035 checkOrSetProperty("http", System.getenv("BOUND_PORT")); 036 checkOrSetProperty("meecrowave-properties", System.getenv("MEECROWAVE-PROPERTIES")); 037 checkOrSetProperty("meecrowave.home", System.getenv("MEECROWAVE_HOME")); 038 checkOrSetProperty("meecrowave.base", System.getenv("MEECROWAVE_BASE")); 039 checkOrSetProperty("geronimo.metrics.sigar.refreshInterval", "0"); 040 checkOrSetProperty("talend.component.exit-on-destroy", "true"); 041 checkOrSetProperty("talend.component.manager.services.cache.eviction.defaultEvictionTimeout", "30000"); 042 checkOrSetProperty("talend.component.manager.services.cache.eviction.defaultMaxSize", "5000"); 043 checkOrSetProperty("talend.component.manager.services.cache.eviction.maxDeletionPerEvictionRun", "-1"); 044 // By default we want to skip vault calls zipkin logs, we can still override it... 045 System.setProperty("geronimo.opentracing.client.filter.request.skip", "true"); 046 System.setProperty("geronimo.opentracing.filter.skippedTracing.urls", ".*/login$,.*/decrypt/.*"); 047 System.setProperty("geronimo.opentracing.filter.skippedTracing.matcherType", "regex"); 048 // environment dft ordinal 400 049 final String httpPort = System.getenv("TALEND_COMPONENT_SERVER_PORT"); 050 if (httpPort != null) { 051 System.setProperty("http", httpPort); 052 configuration.setHttpPort(Integer.parseInt(httpPort)); 053 } 054 final String log4jLayout = System.getenv("LOGGING_LAYOUT"); 055 final String appHome = System.getenv("TALEND_APP_HOME"); 056 if (log4jLayout != null && appHome != null) { 057 final String initialConfig = System.getProperty("log4j.configurationFile", "default.properties"); 058 final String newConfig = String.format("%s/conf/log4j2-component-server-%s.xml", appHome, log4jLayout); 059 if (!newConfig.equals(initialConfig)) { 060 System.setProperty("log4j.configurationFile", newConfig); 061 LoggerContext ctx = (LoggerContext) LogManager.getContext(false); 062 ctx.setConfigLocation(new File(newConfig).toURI()); 063 ctx.reconfigure(); 064 ctx.updateLoggers(); 065 } 066 } 067 // 068 configuration.loadFromProperties(System.getProperties()); 069 if (configuration.getProperties() == null) { 070 configuration.setProperties(new Properties()); 071 } 072 configuration.getProperties().putAll(System.getProperties()); 073 configuration 074 .getProperties() 075 .stringPropertyNames() 076 .stream() 077 .filter(k -> System.getProperty(k) == null) 078 .forEach(k -> System.setProperty(k, configuration.getProperties().getProperty(k))); 079 } 080 081 private void checkOrSetProperty(final String key, final String defaultValue) { 082 if (System.getProperty(key) == null && defaultValue != null) { 083 System.setProperty(key, defaultValue); 084 } 085 } 086}