2012-09-12 5 views
7

से एक वातावरण चर मैंने अपने applicationContext.xmlapplicationContext.xml

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location" value="${PATH_ENV}/myprop.properties" /> 
</bean> 

मैं यह कैसे कर सकते हैं एक वातावरण चर मेरी web.xml

<env-entry> 
    <description>Path Repositorio NFS</description> 
    <env-entry-name>PATH_ENV</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>C:/V3</env-entry-value> 
</env-entry> 

में परिभाषित पढ़ जरूरत है पढ़ें?


अंत में मैं अगले किया है:

1 context.xml में वातावरण चर को परिभाषित करें:

<Environment name="PATH_ENV" type="java.lang.String"/> 

2 परिभाषित web.xml

<env-entry> 
    <description>Path Repositorio NFS</description> 
    <env-entry-name>PATH_ENV</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>/WEB-INF/</env-entry-value> 
    </env-entry> 

में env-एंट्री 3 applicationContext.xml

में परिभाषित करें 210
<bean id="configurationPath" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>java:comp/env/PATH_ENV</value> 
    </property> 
</bean> 

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location"> 
      <bean factory-bean="configurationPath" factory-method="concat"> 
       <constructor-arg value="myprop.properties"/> 
      </bean> 
     </property> 
    </bean> 

यह सही ढंग से चलाया जाता है, लेकिन अगर मैं एक पूर्ण पथ को परिभाषित:

<env-entry-value>C:/V3/</env-entry-value> 

मैं अगले समस्या है:

java.io.FileNotFoundException: Could not open ServletContext resource [/C:/V3/aesantasa.properties] 

मैं नहीं कर सकते में एक पूर्ण पथ को परिभाषित env-entry- मूल्य क्यों?

+0

यदि कोई इस प्रश्न से आता है, तो यह ' फ़ाइल होना चाहिए: सी:/वी 3/' – Jamie

उत्तर

0

आप context-param का उपयोग कर सकते हैं, जो काम करेगा।

<context-param> 
    <param-name>PATH_ENV</param-name> 
    <param-value>C:/V3</param-value> 
</context-param> 
4

आप JNDI प्रविष्टियों JndiObjectFactoryBean या <jee:jndi-lookup> साथ (दोनों पर्यावरण प्रविष्टियों और संसाधन) देखने के कर सकते हैं:

<jee:jndi-lookup id="PATH_ENV" jndi-name="PATH_ENV"/> 

(जेईई-नाम स्थान का उपयोग करने के लिए, आप इसे declare चाहिए)।

जो "PATH_ENV" नामक एक वसंत बीन को परिभाषित करता है जिसमें (स्ट्रिंग के रूप में) पथ को पर्यावरण प्रविष्टि में कॉन्फ़िगर किया गया पथ होता है। अब आप इसे अन्य बीन्स में इंजेक्ट कर सकते हैं:

<bean class="xy.Foo"> 
    <property name="path" ref="PATH_ENV"/> 
</bean> 

शेष कठिनाई तारों को जोड़ रही है। (दुर्भाग्य से, वहाँ कोई JndiPlaceholderConfigurer कि JNDI पर्यावरण प्रविष्टियों के साथ प्लेसहोल्डर की जगह लेंगे है, तो आप ${property}/foo सिंटैक्स का उपयोग नहीं कर सकते श्रेणीबद्ध करने के लिए, और अभी तक एक और सेम परिभाषा प्रदान करना होगा:

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
     <bean factory-bean="PATH_ENV" factory-method="concat"> 
      <constructor-arg>/myprop.properties</constructor-arg> 
     </bean> 
    </property> 
</bean> 

(कोड अपरीक्षित के रूप में मैं डॉन ' टी हाथ में एक स्प्रिंग परियोजना निम्नलिखित?

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="file:C:/V3/myprop.properties"/> 
</bean> 
+0

मैं संदर्भ-पार पढ़ नहीं सकता am. क्या यह applicationContext.xml में संदर्भ-param पढ़ने के लिए सही तरीका है? मूल्य = "$ {PATH_ENV} /myprop.properties" – Geme

+0

एक संदर्भ पैराम पर्यावरण प्रविष्टि के समान नहीं है। आपका प्रश्न पर्यावरण प्रविष्टि ('') कहता है, तो अब आप संदर्भ पैरामीटर ('') के बारे में क्यों बात कर रहे हैं? इसका संदर्भ कैसे लें, मैं नमूना शामिल करने के लिए संपादित करूंगा। – meriton

+0

org.springframework.beans.factory.BeanCreationException: नाम 'PATH_ENV' के साथ बीन बनाने में त्रुटि: init विधि का आमंत्रण विफल हुआ; नेस्टेड अपवाद javax.naming.NameNotFoundException: El nombre PATH_ENV कोई अनुमान नहीं है – Geme

0

बस का उपयोग क्यों नहीं किया है।

my computer --> advanced options --> environment options --> Systeme Variable 

और फिर इस के साथ मैं इस तरह स्प्रिंग AppContext पर पथ को पूरा करें::

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 

    <property name="locations"> 
     <list> 
       <value>file:${PARENT_PATH}/conf/dev/jdbc.properties</value> 
     <list>   
    </property> 
</bean> 

मैं नहीं

मैं पथ की बदलती भाग के साथ एक Windows सिस्टम चर बनाने पता है कि वास्तव में मदद करता है, लेकिन मेरे लिए काम करता है

+0

से शुरू होता है, गुण फ़ाइलों को एक फ़ाइल की आवश्यकता होती है समान चर – Geme

+0

पर आधारित सापेक्ष पथ आप संसाधनों में प्रोप्रर्टीज फ़ाइलों या क्लासपाथ में मौजूद प्रोजेक्ट में समान फ़ोल्डर क्यों नहीं डालते हैं? –

-1

मैं कुछ, मुझे लगता है, इसी तरह हल यह परीक्षण करने के लिए)

+0

मेरी समस्या यह है कि परिवर्तनीय सिस्टम परिवर्तनीय नहीं हो सकता है – Geme

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