जावा 7/बिलाव 7 के साथ
, वहाँ एक समाधान/हैक है कि डेवलपर webapp प्रति एक अनूठा समय क्षेत्र सेट करने की अनुमति देता है। हमें इसे अपने आवेदन में लागू करना था, क्योंकि हमें एक ही JVM में अलग-अलग डिफ़ॉल्ट टाइमज़ोन के साथ चलने वाले एकाधिक वेबैप का समर्थन करना पड़ा था।
स्टैक ओवरफ़्लो पर मैंने जो अन्य समाधान देखा है, वे पूरी तरह से इस मुद्दे को संबोधित नहीं करते हैं।
- टाइमज़ोन.सेटडिफॉल्ट() का उपयोग करना काम नहीं करता है, क्योंकि यह जेवीएम में टाइमज़ोन को बदलता है।
- सर्वलेट फिल्टर का उपयोग पूरी तरह से थ्रेड असुरक्षित है, और बच्चे के धागे
- सुरक्षा प्रबंधक का उपयोग करने से बच्चे के धागे से संबंधित टाइमज़ोन मुद्दों का भी विवरण नहीं है।
मैं भी समयक्षेत्र के लिए जावा स्रोत कोड की जांच की, मैं एक तरह से एक गतिशील समय क्षेत्र के लिए JavaAWTAccess इंटरफ़ेस का एक कस्टम कार्यान्वयन इंजेक्शन लगाने के द्वारा सभी कॉल करने के लिए डिफ़ॉल्ट समय क्षेत्र के रूप में वापस मिल गया। यह थ्रेड क्लास लोडर को देखकर और वास्तविक वेबपैप संदर्भ को निर्धारित करके किया जा सकता है, फिर कुछ वेबपैप नाम के आधार पर उचित रूप से इसे टाइमज़ोन मैपिंग पर संभाला जा सकता है।
एक बार फिर, यह एप्लिकेशन सर्वर विशिष्ट है, और टॉमकैट, जेट्टी, जेबॉस इत्यादि के लिए अलग-अलग किया जाना चाहिए।यह दृष्टिकोण भी JVM कार्यान्वयन विशिष्ट है (केवल ओरेकल/सूर्य पर काम करता है), लेकिन मुझे विश्वास है कि ओपनजेडीके और अन्य तक बढ़ाया जा सकता है।
हमारे पास ओरेकल जेडीके 7 एसई + टोमकैट 7 के लिए एक सत्यापित कार्य समाधान है, जो विंडोज और लिनक्स दोनों पर तैनात है, विभिन्न टाइमज़ोन में एकाधिक वेबएप होस्ट करता है।
अच्छा प्रश्न परिभाषित करने के लिए एक वीएम तर्क का उपयोग कर सकते हैं; मैं अपने सिर को टॉमकैट इंस्टॉलेशन पर खरोंच कर रहा हूं, जहां टॉमकैट लॉग में टाइमस्टैम्प सिस्टम समय के पीछे एक घंटे हैं। –