2012-03-03 12 views
8

This article सुझाव देता है कि टॉमकैट 7 ऐप्स को कॉमन्स-डीबीसीपी कनेक्शन पूल के बजाय जेडीबीसी कनेक्शन पूल का उपयोग करना चाहिए। हालांकि, उत्तरार्द्ध Grails ऐप के लिए डिफ़ॉल्ट है, और यह स्पष्ट नहीं है कि इसे कैसे बदला जाए।जेडीबीसी कनेक्शन पूल का उपयोग करने के लिए Grails ऐप को कॉन्फ़िगर करें

मेरा अनुमान है कि मुझे resources.groovy में एक वसंत बीन को परिभाषित करने की आवश्यकता है जो सामान्य रूप से डिफ़ॉल्ट रूप से बनाई गई बीन को ओवरराइड करता है, लेकिन मुझे नहीं पता कि इस बीन का नाम क्या होना चाहिए या मुझे किन संपत्तियों को सेट करने की आवश्यकता है।

उत्तर

12

jdbc-pool प्लगइन का उपयोग करने के लिए सबसे आसान काम संभवतः किसी भी डेटा स्रोत बीन को परिभाषित करने की आवश्यकता नहीं है। चूंकि इस पूल के लिए कॉन्फ़िगरेशन विकल्प जानबूझकर कॉमन्स डीबीसीपी के समान हैं (वे here दस्तावेज हैं) आप जार निर्भरता को परिभाषित करने और आपके लिए कक्षा को स्विच करने के लिए प्लगइन का उपयोग कर सकते हैं। प्लगइन को एक वर्ष में अपडेट नहीं किया गया है, इसलिए यह बहुत पुराना है (प्लगइन संस्करण 1.0.9.0 का उपयोग करता है लेकिन latest is 1.0.9.3) ताकि आप जार को छोड़कर प्लगइन निर्भरता को परिभाषित करना चाहें और नए संस्करण के लिए एक जोड़ सकें। यह रेपो में है, इसलिए आपको इसे अपने BuildConfig.groovy में जोड़ना होगा (plugin's version देखें कि उसने यह कैसे किया)।

पूल here पूल के लिए कॉन्फ़िगरेशन नोट्स और लेखक here द्वारा ब्लॉग पोस्ट की एक श्रृंखला है।

आप प्लगइन का उपयोग किए बिना इस कॉन्फ़िगर करने के लिए चाहते हैं, तो BuildConfig.groovy को रेपो और जार निर्भरता जोड़ें:

repositories { 
    inherits true 
    ... 
    ebr() 
} 

dependencies { 
    runtime('org.apache.tomcat:com.springsource.org.apache.tomcat.jdbc:1.0.9.3') { 
     transitive = false 
    } 
} 

और resources.groovy में dataSource सेम के लिए एक ओवरराइड बनाने के लिए:

import org.apache.tomcat.jdbc.pool.DataSource 

beans = { 

    dataSource(DataSource) { 
     // mandatory 
     driverClassName = '${dataSource.driverClassName}' 
     username = '${dataSource.username}' 
     password = '${dataSource.password}' 
     url = '${dataSource.url}' 
     // optional 
     minEvictableIdleTimeMillis=1800000 
     timeBetweenEvictionRunsMillis=1800000 
     numTestsPerEvictionRun=3 
     testOnBorrow=true 
     testWhileIdle=true 
     testOnReturn=true 
     validationQuery="SELECT 1" 
    } 
} 

स्प्रिंग की संपत्ति प्लेसहोल्डर कार्यक्षमता का लाभ उठाने के लिए ${} प्लेसहोल्डर्स के साथ एकल-उद्धृत तारों का उपयोग करना सुविधाजनक है और चीजें DRY को पहले से ही रखना चाहिए ड्राइवर को सेट करें और DataSource.groovy में जानकारी कनेक्ट करें।

+0

आश्चर्य की संभावना को कम करने के लिए उत्पादन के लिए जितना संभव हो सके, मुझे लगता है कि मैं सिर्फ प्लगइन का उपयोग करूंगा। मैं इसकी एक नई रिलीज करूंगा, जो जेडीबीसी कनेक्शन पूल lib के नवीनतम संस्करण में अपग्रेड करेगा। –

3

DataSource.groovy में मैं निम्नलिखित का उपयोग करें:

environments { 
    integration { 
     dataSource { 
      pooled = false 
      jndiName = "java:/comp/env/jdbc/myJndiName" 
     } 
    } 
} 

और बाकी सब बिलाव द्वारा परिभाषित किया गया है - यह सिर्फ यह मेल खाना चाहिए। resources.groovy

+1

विकास मोड में ऐप चलाने पर यह काम नहीं करेगा –

+0

आह, आपके प्रश्न में विकास मोड का उल्लेख नहीं किया गया है। – doelleri

+0

मैं चाहता हूं कि मेरा विकास एनवी आश्चर्यजनक –

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