2011-07-12 17 views
7

के साथ बाहरी गुण फ़ाइल मैं वेबलॉगिक 10.3 सर्वर पर तैनात होने वाले एप्लिकेशन के साथ बाहरी गुण फ़ाइल का उपयोग करने का सबसे अच्छा तरीका ढूंढ रहा हूं। मैंने साइट पर कई लेख पढ़े हैं लेकिन मैं गुण फ़ाइल के पथ को हार्ड-कोड नहीं करना चाहता हूं या फ़ाइल को डोमेन/mydomain फ़ोल्डर में रखना नहीं चाहता हूं।वेबलॉगिक

क्या ऐसा करने का एक गतिशील तरीका है, इसलिए जब एप्लिकेशन को तैनात किया जाता है तो गुण फ़ाइल को तैनाती फ़ोल्डर के तहत उदाहरण के लिए भी स्थापित किया जाता है और वहां से पढ़ा जाता है?

बहुत धन्यवाद

उत्तर

5

एक अन्य विकल्प के अतिरिक्त किसी स्थान में फ़ाइल डाल की आवश्यकता नहीं है कि आवेदन पत्र पढ़ा जाएगा यह सामान्य फ़ाइल लोड हो रहा है ओवरराइड उपयोग करने के लिए है: http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493

यह एक निर्देशिका है कि अपने तैनाती के रूट निर्देशिका हो जाएगा बनाने शामिल है, के लिए यह FooApplication कि FooApplication.ear और FooWeb.war है फोन करते हैं। इसे एप्लिकेशन स्थापना निर्देशिका कहा जाता है। आपका आवेदन FooAplication/ऐप उप-निर्देशिका में जाता है चाहे वह एक संग्रह है (जैसे .ear, .war, jar) या यह उन अभिलेखागारों में से एक का विस्फोटित संस्करण है या नहीं। आपकी वैकल्पिक परिनियोजन योजना (आपके पास इस सुविधा का उपयोग करने के लिए एक होना चाहिए, यह ऐसी योजना हो सकती है जो कॉन्फ़िगरेशन-रूट तत्व और दस्तावेजों में वर्णित मान निर्दिष्ट करने से परे बहुत कुछ नहीं करती) FooAplication/Plan में जाती है। आप अपनी प्रॉपर्टी डाल सकते हैं जिन्हें आप FooAplication/Plan/AppFileOverrides निर्देशिका संरचना में एप्लिकेशन में ओवरराइड करना चाहते हैं। http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#sthref9

एक बार तैनाती की है कि शैली में किया जाता है, तो आप अपने आवेदन से इस तरह कोड लिखने और myApp.properties की सामग्री FooApplication/योजना से पढ़ पाने/AppFileOverrides/FooWeb.war/myApp.properties वास्तविक हो जाएगा फ़ाइल जो पढ़ी जाती है।

Properties myAppProps = new Properties(); 
InputStream iostream = 
Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties"); 
myAppProps.load(iostream); 

यह दस्तावेज़ों में बताए गए अनुसार आपके आवेदन में क्लासलोडर जोड़कर पूरा किया जाता है।प्रारंभ में कॉन्फ़िगर करने के लिए यह कठिन लग सकता है, लेकिन यह एक ऐसी सुविधा है जो मूल प्रश्न को सीधे संतुष्ट करती है और केवल उस विशेष एप्लिकेशन के लिए।

1

कार्य # 1

अद्यतन आपके सर्वर स्टार्टअप स्क्रिप्ट JVM करने के लिए सिस्टम चर नीचे पारित करने के लिए

call "%DOMAIN_HOME%\bin\startWebLogic.cmd" "-Dcom.mycompany.myapp.EXTERNAL_CONFIG_PATH=/mycompany/myapp/config" %* 

इस चर का उपयोग करना (नीचे विंडोज ओएस पर उदाहरण है) जो आपकी कॉन्फ़िगरेशन निर्देशिकाओं को इंगित करता है, वहां से कॉन्फ़िगरेशन पढ़ें। आपको यह सेटिंग प्रत्येक सर्वर पर बनाना होगा जहां आप अपना आवेदन तैनात करना चाहते हैं।

0

कार्य # 2

उपयोग Weblogic साझा लाइब्रेरी

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/libraries.html

नीचे का पालन करें निर्माण प्रक्रिया

  • तैनात दौरान कदम

    • पैकेज अलग जार के रूप में अपने सभी विन्यास विन्यास जे साझा लाइब्रेरी के रूप में एआर
    • अपने कान/युद्ध से साझा लाइब्रेरी ऊपर
    • संदर्भ
    • तैनात कान/युद्ध (विन्यास classpath में उपलब्ध हो जाएगा)
  • +0

    wlst/jython में गुण बनाने के द्वारा आप कॉन्फ़िगरेशन JAR को साझा लाइब्रेरी ऑफ़लाइन के रूप में कैसे तैनात करते हैं? – sloven

    1

    जब आप कहते हैं, "मैंने साइट पर कई लेख पढ़े हैं लेकिन मैं गुण फ़ाइल के पथ को हार्ड-कोड नहीं करना चाहता हूं" मुझे लगता है कि आप कह रहे हैं कि आप इसे कठिन कोड नहीं करना चाहते हैं जावा कोड अगर ऐसा इसलिए है, तो नीचे दिए गए

    देख कृपया यहाँ उत्तर दिया:

    वहाँ गुण weblogic classpath से जावा में फ़ाइल को पढ़ने के लिए तरीके हैं

    एक (गुण weblogic डोमेन स्थित फ़ाइल): गुण ड्रॉप डोमेन निर्देशिका के अंदर फ़ाइल। इस प्रकार गुण फ़ाइल स्वचालित रूप से वेबलॉगिक क्लासपाथ में जोड़ दी जाती है और हम resourceAsStream का उपयोग कर जावा से पढ़ सकते हैं।

    दो (उपयोगकर्ता परिभाषित स्थान से गुण फ़ाइल): इस दृष्टिकोण के साथ लाभ यह है कि संपत्ति फ़ाइल JAR या EAR फ़ाइल के बाहर रह सकती है और इसे आसानी से संशोधित किया जा सकता है।

    package com.test; 
    
    import java.io.FileNotFoundException; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.util.Properties; 
    
    public class PropertyFileExample { 
    
    private static Properties prop; 
    
    public static void myMethod() { 
    
    InputStream is = null; 
    
    try { 
    
    prop = new Properties(); 
    
    String propFilePath = System.getProperty(“propFileLocation“); 
    
    InputStream iStream = PropertyFileExample.class.getClassLoader().getResourceAsStream(propFilePath); 
    
    prop.load(iStream); 
    prop.getProperty(“dbuser”); 
    
    } catch (FileNotFoundException e) { 
    
    e.printStackTrace(); 
    
    } catch (IOException e) { 
    
    e.printStackTrace(); 
    
    } 
    
    } 
    } 
    

    weblogic setDomainEnv में (बिन के तहत) हम JAVA_OPTIONS

    करने के लिए एक-डी तर्क के रूप में संपत्ति फ़ाइल का स्थान उत्तीर्ण करने की आवश्यकता

    सेट JAVA_OPTIONS =% JAVA_OPTIONS% -DpropFileLocation =/dev/फ़ाइल/गुण/some.properties

    उम्मीद है कि यह मदद करता है!

    3

    आप कक्षापथ पर एक निर्देशिका सेट कर सकते हैं और उस फ़ोल्डर/निर्देशिका में अपनी कस्टम गुण फ़ाइल डाल सकते हैं। इसलिए, संपत्ति फ़ाइल के साथ पूरी निर्देशिका क्लासपाथ पर होगी। weblogic 10.3.x

    • में classpath पर निर्देशिका सेट करने के लिए %DOMAIN_HOME%\config\ फ़ोल्डर में एक फ़ोल्डर बनाएँ। उदाहरण appConfig
    • appConfig निर्देशिका/फ़ोल्डर में अपनी कस्टम प्रॉपर्टी फ़ाइल रखें (मान लें config.properties)।
    • संशोधित setDomainEnv.cmd (विंडोज़) classpath में appConfig शामिल करने के लिए EXT_POST_CLASSPATH के मूल्य के रूप में स्थापित करने %DOMAIN_HOME%\config\appConfig (इस चर पहले से ही setDomainEnv.cmd फ़ाइल में परिभाषित किया गया है) से नीचे के रूप में चर:

      set EXT_POST_CLASSPATH=%EXT_POST_CLASSPATH%;%DOMAIN_HOME%\config\appConfig 
      

    आप कर सकते हैं नीचे दिए गए जावा कोड में उस फ़ाइल तक पहुंचें:

    InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream ("config.properties"); 
        Properties prop = new Properties(); 
        prop.load(inputStream); 
        String value = prop.getProperty("key"); 
    

    आशा है कि इससे मदद मिलती है।

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