2011-08-08 17 views
8

के साथ जावा में एक पर्यावरण परिवर्तनीय पढ़ें मुझे वेबस्पेयर एप्लिकेशन सर्वर 7.0 (WAS7) और पर्यावरण Varaibles के पढ़ने के साथ एक छोटी सी समस्या है।वेबस्पेयर

बिलाव के साथ

, मैं

<Environment name="myVar" type="java.lang.String" value="myVarOnServeur" 

के रूप में एक चर परिभाषित किया है और मैं InitialContext पर एक देखने के साथ इसे पढ़ा:

Context ctx = new InitialContext(); 
String myVar = (String) ctx.lookup("java:comp/env/myVar"); 

और यह काम करता है!

लेकिन वेबस्पेयर के साथ, मैं जीयूआई पर एक पर्यावरण चर परिभाषित करता हूं लेकिन मैं इसे अपने जावा कोड में नहीं पढ़ सकता। मेरे पास नामकरण अपवाद है।

http://fullahead.org/work/stackoverflow/was-environment-variables.png

मैं अपने इस समस्या को ठीक करने के लिए कर सकते हैं?

उत्तर

-3

मुझे वहां कुछ भी दिखाई नहीं देता है जो कहता है कि उन प्रविष्टियों को ctx.lookup ("जावा: comp/env/...") के माध्यम से पढ़ा जा सकता है;

+7

दिखाएगा यह एक सार्थक टिप्पणी है, लेकिन शायद ही कोई जवाब है। –

+0

@ निकोल मुसाट्टी मैं असहमत हूं। यह दिखाता है कि ओपी शायद गलत पेड़ को पूरी तरह से भौंकने वाला है। – EJP

+5

मैं सहमत हो सकता था कि मूल समस्या का कोई समाधान नहीं था, लेकिन कम से कम दो समाधान प्रस्तावित किए गए हैं, जिनमें से एक प्रश्न में प्रस्तावित दृष्टिकोण को लागू करता है। फिर, यह एक जवाब नहीं है। –

4

आप जो अपने आवेदन की WEB-INF निर्देशिका में होना चाहिए अपने web.xml फ़ाइल में निम्न, की तरह कुछ रख सकते हैं:

<env-entry> 
    <env-entry-name>myVar</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>myVarOnServeur</env-entry-value> 
</env-entry> 

वैसे यह एक मानक वाक्य रचना है और सभी आवेदन सर्वर पर काम करना चाहिए। मैं इसे वेबस्पेयर, जेबॉस और वेबलॉगिक के साथ उपयोग कर रहा हूं। जैसा कि आप अपने उदाहरण में करते हैं, वही पूछताछ की जा सकती है। Creating, editing and deleting WebSphere variables

//sample code from WAS 7 Infocenter 
private String expandVariable(String s) throws 
         javax.management.JMException { 
    com.ibm.websphere.management.AdminService as = 
    com.ibm.websphere.management.AdminServiceFactory.getAdminService(); 

    String server = as.getProcessName(); 
    String mBeanName = "*:*,type=AdminOperations,process=" + server; 

    java.util.Set result = as.queryNames(
    new javax.management.ObjectName(mBeanName) , null); 

    return (String) as.invoke((javax.management.ObjectName) 
          result.iterator().next(), 
          "expandVariable", 
          new Object[]{"${"+s+"}"}, 
          new String[]{"java.lang.String"}); 
} 

देखें:

3

आप के माध्यम से WebSphere के AdminOperationsMBean इन को हल करने में सक्षम होना चाहिए।

+2

मैं वेबस्पेयर के लिए एक विशिष्ट कोड नहीं चाहता हूं। मेरा वेब एप्लिकेशन टॉमकैट और वेबस्पेयर पर काम करना चाहिए। – lookfire

4

यदि आप अपनी इच्छाओं को परिभाषित और प्रबंधित करना चाहते हैं, तो पर्यावरण-> नामकरण-> नाम स्थान बाइंडिंग पर एक नज़र डालें। आप वहां स्ट्रिंग स्थिरांक में jndi नाम बांध सकते हैं। String binding settings

+0

तो इस और क्या अल्ज़ोबैयर का उल्लेख है इसके बीच क्या अंतर है! - आईबीएम को नोट करें, आप मुझे xml की 1 पंक्ति में टॉमकैट करने के लिए 100 कदम क्यों करना चाहते हैं? –

+0

मैंने जिस विधि का उल्लेख किया है वह एक jndi प्रविष्टि में स्ट्रिंग मानों को बांधने का एक तरीका है। अल्ज़ोबैयर के उल्लेख आपको अधिक जटिल वस्तुओं के लिए क्षमता प्रदान करते हैं जिन्हें व्यवस्थापक कंसोल के माध्यम से कॉन्फ़िगर किया जा सकता है, एक स्ट्रिंग के लिए ओवरकिल। – svachon

+0

@ कालपेशोनी हा! आपको लगता है कि वे इसे पढ़ लेंगे? –

6

जावा के साथ देखने के लिए

Context envEntryContext = (Context) new InitialContext().lookup("java:comp/env"); 
String mydata = (String)envEntryContext.lookup("varName"); 
+0

यह मेरे लिए सबसे सही उत्तर है जो अधिकतर काम करेगा यदि सभी कंटेनर नहीं – Kirby

3

आप गलत जगह पर देख रहे हैं अंदर web.xml

<env-entry> 
    <env-entry-name>varName</env-entry-name> 
    <env-entry-value>56</env-entry-value> 
    <env-entry-type>java.lang.String</env-entry-type> 
</env-entry> 

परिभाषित करने के लिए देखते हैं।

आपको पर्यावरण-> नामकरण-> नाम स्थान बाइंडिंग-> नया में चर जोड़ना चाहिए। - 8

Context ctx = new InitialContext(); 
String myVar = (String) ctx.lookup("cell/persistent/myVar"); 
3

Websphere 7.0:

आप बाध्यकारी प्रकार स्ट्रिंग चुनते हैं, तो "बाइंडिंग पहचानकर्ता" और "नाम नाम स्थान में ..." myVar, आप के साथ वेरिएबल का मान प्राप्त कर सकते हैं।5

सेट चर , व्यवस्थापन कंसोल ---> WebSphere अनुप्रयोग सर्वर -----> Your_sever_name ---> जावा और प्रक्रिया प्रबंधन ---> प्रक्रिया परिभाषा -> जावा वर्चुअल मशीन -> कस्टम गुण जावा System.getProperty ("Your_Variable") में

प्राप्त मूल्य

4

On WebSphere follow this settings

पर ऊपर सेटिंग में जहां नाम की कुंजी है और मूल्य अपनी संपत्ति मूल्य है का पालन था। मेरे उदाहरण में मैंने नाम का उपयोग किया: टेस्ट वैल्यू: यह परीक्षण मूल्य है। यह मान सेट करने के बाद अपने एप्लिकेशन सर्वर को पुनरारंभ करें। आपके जावा कोड कॉल System.getProperty ("टेस्ट") पर जहां परीक्षण आपकी संपत्ति का नाम है और मान

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