2009-05-04 14 views
7

मैं jboss के लिए नया हूं और मुझे मौजूदा वेब एप्लिकेशन के साथ जेबॉस कनेक्शन पूलिंग तंत्र को शामिल करने के लिए कहा गया है। यह ध्यान में रखते हुए कि एक वेब अनुप्रयोग डेटाबेस परत ठीक से लिखा गया है यानी सभी परिणामों, बयानों और कनेक्शनों को ठीक से बंद होने पर बंद होने पर, मेरे वेब ऐप में सभी कोड परिवर्तन करने के बाद मुझे जेबॉस डेटासोर्स को ठीक से कॉन्फ़िगर करने के बाद क्या करना होगा।जेबॉस डाटाबेस कनेक्शन पूल

क्या कोई मुझे ट्यूटोरियल या कोड नमूना पर इंगित कर सकता है जो वेब ऐप में जेबॉस डेटासोर्स का उपयोग करता है।

+0

का विन्यास JBoss सौदा का एक हिस्सा है में एक ही होना चाहिए, वहाँ काफी हैं ऑनलाइन उपलब्ध कुछ नमूने और ट्यूटोरियल। जो मैं चिंतित हूं वह वह परिवर्तन है जो कोड बेस में आवश्यक हो सकता है। क्या कोई मुझे एक नमूना या ट्यूटोरियल पर इंगित कर सकता है जहां मैं देख सकता हूं कि हम जेबॉस डार्ससोर्स से कनेक्शन कैसे प्राप्त करते हैं और इसे बाद में कैसे संभाला जाना चाहिए यानी कनेक्शन बंद या मुक्त करें। धन्यवाद। –

उत्तर

8

जेबॉस में पूल सभी डेटासोर्स कॉन्फ़िगरेशन में संभाला जाता है। Here हाउटो है। वेब ऐप को सीधे जेडीबीसी यूआरएल करने के बजाए डेटाबेस कनेक्शन प्राप्त करने के लिए डेटासोर्स के लिए जेएनडीआई लुकअप करना होगा, और फिर आपके पास पूलिंग होगी।

लेनदेन एक और कहानी है, हालांकि।

संपादित करें: 4.2.2 वैसे भी

String jndiPath = "java:DataSourceJNDIName"; //The exact prefix here has a lot to do with clustering, etc., but if you are using one JBoss instance standalone, this works. 
Context ctx = new InitialContext(); 
DataSource ds = (DataSource) PortableRemoteObject.narrow(ctx.lookup(jndiPath), DataSource.class); 
Connection c = ds.getConnection(); 

तकनीकी तौर पर PortableRemoteObject.narrow से कहा जाये तो JBoss में आवश्यक नहीं है (: कैसे इस कोड को प्रभावित करता है के बारे में अपनी टिप्पणी के जवाब में, यह है कि क्या ऐसा लगता है कि है) निश्चित रूप से एकल सर्वर कॉन्फ़िगरेशन, लेकिन यह जे 2 ईई मानक कोड अधिक उचित है, क्योंकि सामान्य अनुप्रयोग सर्वर को Context.lookup करने के लिए सही प्रकार के ऑब्जेक्ट को वापस करने की आवश्यकता नहीं होती है।

उपरोक्त संसाधन उपयोग और त्रुटि प्रबंधन समस्याओं को शामिल नहीं करता है। जब आप इसके साथ काम करते हैं, और निश्चित रूप से डेटाबेस कनेक्शन को बंद करना चाहते हैं, तो यदि आप डेटाबेस कनेक्शन बंद करना भूल जाते हैं और लेनदेन समाप्त होता है, तो JBoss आपको चिल्लाएगा, और इसे आपके लिए बंद कर देगा।

वैसे भी, यह कनेक्शन ऑब्जेक्ट जितना ही DriverManager.getConnection (url) के रूप में उपयोग करने योग्य है;

1

आपको कुछ भी बदलने की ज़रूरत नहीं है। जब आप सही प्रकार के डेटा स्रोत (स्थानीय-टीएक्स-डेटासोर्स/एक्सए-डेटासोर्स) का चयन करते हैं, तो कनेक्शन हैंडलिंग और TX आपके लिए किया जाता है। $ जेबॉस/डॉक्स/उदाहरण/जेसीए में आपको लगभग हर डेटाबेस के लिए टेम्पलेट मिलेगा, जिन्हें आप अभी पुन: उपयोग कर सकते हैं।

यदि आप एक्सए का उपयोग कर रहे हैं, तो आपको टीएक्स-वसूली को कॉन्फ़िगर करने की आवश्यकता है। इस पोस्टिंग को कैसे करें: http://management-platform.blogspot.com/2008/11/transaction-recovery-in-jbossas.html (ठीक है, शायद स्टैंडअलोन मोड में कैसे नहीं, बल्कि जोपर स्रोत कोड के साथ)।

9

पहला नाम xxx-ds.xml से एक xml फ़ाइल बना सकते हैं और server/default/deploy/xxx-ds.xml

<datasources> 
<local-tx-datasource> 
<jndi-name>/jdbc/Exp</jndi-name> 
<type-mapping>SQL</type-mapping> 
<connection-url>jdbc:microsoft:sqlserver://   </connection-url> 
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class> 
<user-name></user-name> 
<password></password> 
<min-pool-size>5</min-pool-size> 
<max-pool-size>1000</max-pool-size> 
</local-tx-datasource> 
</datasources> 

jboss-web.xml

<jboss-web> 
<!-- <security-domain flushOnSessionInvalidation="false"/>--> 
<!-- <context-root>/BSI</context-root>--> 
    <resource-ref> 
     <description>Database connection resource</description> 
     <res-ref-name>jdbc/Exp</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <jndi-name>java:/jdbc/Exp</jndi-name> 
     <res-auth>Container</res-auth> 
    </resource-ref> 
</jboss-web> 

web.xml

में इस फ़ाइल को जगह

है और अब अपने .java फ़ाइल में

javax.naming.Context ctx1 = new javax.naming.InitialContext(); 
javax.sql.DataSource ds = (javax.sql.DataSource) ctx1.lookup("java:comp/env/jdbc/Exp"); 
con = ds.getConnection(); 

***** सुनिश्चित करें कि कि संसाधन रेफरी नाम सभी जगह

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