2014-05-05 7 views
12

के साथ env चर के साथ सर्वर कनेक्टर कॉन्फ़िगरेशन ओवरराइड करना मैंने इस प्रश्न को मेलिंग सूची पर पोस्ट किया है लेकिन उत्तर नहीं मिला।ड्रॉपविज़ार्ड

क्या मुझे लगता है कि नीचे दिए गए वाईएमएल प्रारूप अब डीडब्ल्यू 0.7.0 के लिए काम नहीं करते हैं? (@ चार के उपयोग env var डालने के लिए)

server: 
    applicationConnectors: 
    - type: http 
     bindHost: @[email protected] 
     port: @[email protected] 

त्रुटि:

Malformed YAML at line: 28, column: 17; while scanning for the next token; found character @ '@' that cannot start any token. (Do not use @ for indentation); in 'reader', line 28, column 17: bindHost: @[email protected]

तो मैं इस स्वरूप का उपयोग करने का फैसला किया:

server: 
    type: simple 
    applicationContextPath:/
    adminContextPath: /admin 
    connector: 
     type: http 
     bindHost: localhost 
     port: 8080 

और JVM विकल्पों के माध्यम से इसे ओवरराइड करने की कोशिश की :

java -Ddw.server.connector.bindHost=$OPENSHIFT_DIY_IP -Ddw.server.connector.port=$OPENSHIFT_DIY_PORT -jar target/myapp.jar server myapp.yml 

मेरा स्थानीय एन v चर:

OPENSHIFT_DIY_IP=localhost 
OPENSHIFT_DIY_PORT=8080 

त्रुटि मैं इस स्थापना से मिला:

Exception in thread "main" java.lang.RuntimeException: java.net.SocketException: Unresolved address at org.eclipse.jetty.setuid.SetUIDListener.lifeCycleStarting(SetUIDListener.java:213) ... Caused by: java.net.SocketException: Unresolved address at sun.nio.ch.Net.translateToSocketException(Net.java:157) ... WARN [2014-05-03 20:11:19,412] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED [email protected]: java.lang.RuntimeException: java.net.SocketException: Unresolved address

क्या मैं गलत कर रहा हूँ?

उत्तर

5

किसी DW के लिए एक bundle बनाया env एम्बेड करने के लिए सक्षम होने के लिए

25

वार्स Dropwizard संस्करण 0.8.0 से शुरू, आप विन्यास YML फ़ाइल से वातावरण चर का उपयोग कर सकते हैं। यह पर्यावरण चर उपलब्ध नहीं होने पर डिफ़ॉल्ट मान सेट करने का भी समर्थन करता है। See the docs here.

उदाहरण

// put environment variable inside ${} 
// use :- operator to provide default value 

dbHost: ${DB_HOST} 
dbPort: ${DB_PORT:-1234} 
// dbPort = 1234, if DB_PORT environment variable has no value 

महत्वपूर्ण नोट: यह आप एक EnvironmentVariableSubstitutor के साथ एक SubstitutingSourceProvider सेट करने की आवश्यकता काम करने के लिए।

// Enable variable substitution with environment variables 
bootstrap.setConfigurationSourceProvider(
    new SubstitutingSourceProvider(
     bootstrap.getConfigurationSourceProvider(), 
     new EnvironmentVariableSubstitutor()) 
); 

अद्यतन: 15/नवम्बर/2017 टिप्पणी अनुभाग में @EFreak से उल्लेख किया है, new EnvironmentVariableSubstitutor()UndefinedEnvironmentVariableException फेंक देंगे अगर वातावरण चर परिभाषित नहीं है, जब तक आप new EnvironmentVariableSubstitutor(false) का उपयोग करके false करने के लिए strict मोड सेट https://github.com/dropwizard/dropwizard/blob/master/dropwizard-configuration/src/main/java/io/dropwizard/configuration/EnvironmentVariableSubstitutor.java

+3

इस @StephenNYC के रूप में यह dropwizard – davnicwil

+1

@Warfox में, dropwizard '1.1.4' के रूप में, काम करने के लिए डिफ़ॉल्ट मान प्राप्त करने के लिए बनाया गया है स्वीकार किए जाते हैं जवाब अब, होना चाहिए, आप उपयोग कर' नए सख्त मोड अक्षम करने की जरूरत है EnvironmentVa riableSubstitutor (गलत) '। अन्यथा यह 'अपरिभाषित पर्यावरण' अक्षम करने योग्य 'स्रोत को फेंक देगा: https://github.com/dropwizard/dropwizard/blob/master/dropwizard-configuration/src/main/java/io/dropwizard/configuration/EnvironmentVariableSubstitutor.java – EFreak

+0

धन्यवाद @EFreak, I मेरा जवाब अपडेट कर दिया है – WarFox

संबंधित मुद्दे