बायरन के उत्तर के अनुसार, आप ध्वज का उपयोग करके networkaddress.cache.ttlया networkaddress.cache.negative.ttlसिस्टम गुण के रूप में सेट -Dया कॉल System.setPropertyनहीं कर सकते क्योंकि ये सिस्टम गुण नहीं हैं - वे सुरक्षा गुण हैं।
यदि आप इस व्यवहार को ट्रिगर करने के लिए सिस्टम गुण का उपयोग करना चाहते हैं (ताकि आप -Dध्वज या कॉल का उपयोग कर सकें System.setProperty), तो आप निम्न सिस्टम सिस्टम सेट करना चाहेंगे :
-Dsun.net.inetaddr.ttl=0
यह सिस्टम गुण वांछित प्रभाव को सक्षम करेगा।
लेकिन ध्यान रखें: यदि आप -DJVM प्रक्रिया को शुरू करते समय ध्वज का उपयोग नहीं करते हैं और इसके बजाय कोड से कॉल करने का चुनाव करते हैं:
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
यह कोड नेटवर्किंग संचालन करने के लिए JVM के किसी अन्य कोड से पहले निष्पादित होना चाहिए ।
यह महत्वपूर्ण है क्योंकि, उदाहरण के लिए, यदि आप Security.setPropertyएक .war फ़ाइल में कॉल करते हैं और उस .war को Tomcat पर तैनात करते हैं, तो यह काम नहीं करेगा: Tomcat जावा नेटवर्किंग स्टैक का उपयोग खुद को आपके .war के कोड को निष्पादित करने से पहले शुरू करने के लिए करता है। इस 'रेस कंडीशन' की वजह से, -Dजेवीएम प्रक्रिया शुरू करते समय आमतौर पर ध्वज का उपयोग करना अधिक सुविधाजनक होता है।
यदि आप उपयोग -Dsun.net.inetaddr.ttl=0या कॉल नहीं करते हैं Security.setProperty, तो आपको $JRE_HOME/lib/security/java.securityउस फ़ाइल में उन सुरक्षा गुणों को संपादित और सेट करना होगा, जैसे
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
लेकिन उन संपत्तियों के बारे में टिप्पणियों में सुरक्षा चेतावनी पर ध्यान दें। ऐसा केवल तभी करें जब आप उचित रूप से आश्वस्त हों कि आप डीएनएस स्पूफिंग हमलों के लिए अतिसंवेदनशील नहीं हैं ।
java.security.Security(कम से कम jdk7 में)