2013-02-14 21 views
10

मैं एक जावा ईई आवेदन JBoss में तैनात में PostgreSQL 9.1 JDBC4 ड्राइवर (PostgreSQL-9.1-902.jdbc4.jar) का उपयोग कर रहा 7.javax.sql.DataSource थ्रेड सुरक्षित है?

मैं मान सकते हैं कि javax.sql.DataSource धागा सुरक्षित है ताकि एकाधिक धागे समवर्ती रूप से getConnection() विधि को कॉल कर सकें?

उत्तर

10

javax.sql.DataSource स्वयं एक इंटरफ़ेस है, इसलिए यह थ्रेड-सुरक्षित होने पर इम्प्लांटेशन के लिए विशिष्ट है।

postgres एसक्यूएल ड्राइवर के लिए, मैं सुझाव है कि आप आधिकारिक दस्तावेज से Chapter 10. Using the Driver in a Multithreaded or a Servlet Environment पढ़ें:

PostgreSQL JDBC ड्राइवर धागा सुरक्षित है। [...]

8

आमतौर DataSource कार्यान्वयन आप एक जावा ईई कंटेनर से मिल अंतर्निहित JDBC कनेक्शन की एक धागा सुरक्षित वस्तु एक कनेक्शन पूल द्वारा समर्थित है, और धागे की सुरक्षा (या अन्यथा) हो जाएगा नहीं है वास्तव में प्रासंगिक है। जब आपको डेटाबेस से बात करने की आवश्यकता होती है तो सामान्य पैटर्न को कनेक्शन ऑब्जेक्ट प्राप्त करने के लिए डेटा स्रोत पर getConnection() पर कॉल करना आवश्यक डेटाबेस कॉल करना और फिर close() कनेक्शन बनाना है। कवर के तहत यह वास्तव में अंतर्निहित कनेक्शन को बंद नहीं करेगा, लेकिन भविष्य में उपयोग के लिए इसे कनेक्शन पूल पर वापस कर देगा। किसी भी व्यक्तिगत कनेक्शन का उपयोग केवल एक थ्रेड द्वारा एक समय में किया जाएगा।

यह वसंत JdbcTemplate जैसी चीजों द्वारा उपयोग किया जाने वाला मुहावरे है।

0

यदि यह 'कनेक्शन पूलिंग कार्यान्वयन' है, तो यह थ्रेड सुरक्षित होना चाहिए।

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