2010-06-14 10 views
7

के बिना डेटास्रोत के लिए जेएनडीआई लुकअप को कैसे खराब कर सकता हूं, मैं कुछ नई कार्यक्षमता का परीक्षण करना चाहता हूं जो आंतरिक वेब ऐप का हिस्सा है। यह नया कोड आमतौर पर एक ऐप सर्वर (टोमकैट) द्वारा प्रदान किए गए डेटाबेस कनेक्शन का उपयोग करता है।मैं ऐप सर्वर

मैं नए कोड का परीक्षण करने के लिए अपनी स्थानीय मशीन पर पूरे वेब ऐप को फिर से बनाना नहीं चाहता, क्योंकि मुझे केवल एक फ़ंक्शन चलाने की आवश्यकता है।

क्या किसी को पता है कि मैं किसी सर्वर पर वेब ऐप इंस्टेंस किए बिना डेटाबेस कॉन्फ़िगरेशन पुनर्प्राप्त करने के लिए कॉन्टेक्स्ट, या डेटासोर्स को कैसे खराब कर सकता हूं?

उत्तर

4
स्प्रिंग SimpleNamingContextBuilder और अपाचे BasicDataSource की मदद से

, तो आप कुछ इस तरह कर सकते हैं (मैं आमतौर पर इस परीक्षण की कक्षाओं में एक स्थिर ब्लॉक में JNDI की आवश्यकता है):

BasicDataSource dataSource = new BasicDataSource(); 
dataSource.setDriverClassName(db_driver_name); 
dataSource.setUrl(db_connection_url); 
dataSource.setUsername(db_username); 
dataSource.setPassword(db_password); 
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder(); 
builder.bind(jndi_name, dataSource); 
builder.activate(); 

jndi_name का मूल्य लग सकता है इस तरह: java:comp/env/jdbc/my-db

एक बार यह सेट हो जाने के बाद, जेएनडीआई के माध्यम से सामान्य रूप से डेटाबेस कनेक्शन को देखने वाला कोड काम करना चाहिए। उदाहरण के लिए ऊपर कोड इस वसंत config के साथ काम करेगा:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/my-db"/> 
</bean> 
+0

यह मैं के लिए, धन्यवाद बस क्या देख रहा था। – Wiszh

+0

लॉरी, 'JndiObjectFactoryBean' स्प्रिंग निर्देशिका में' my-db' को देखने के लिए कैसे पता चलता है? क्या आपको संदर्भ पर्यावरण प्रदान नहीं करना है? विशेष रूप से, इस माहौल में, आप किस संपत्ति के लिए 'java.naming.factory.initial' संपत्ति सेट करेंगे? –

+0

लॉरी, कृपया मेरा प्रश्न http://stackoverflow.com/questions/5682732/what-value-should-property-java-naming-factory-initial-have-when-using-springs पर देखें। –

1

यहाँ सूचीबद्ध समाधानों में एक सा है कि मैं क्या लगभग एक वर्ष पहले के साथ आया था जब मैं एक ही बात करना ही था से अधिक आसान लग रहे हो। मैंने मूल रूप से अपना खुद का सरल डेटासोर्स कार्यान्वयन किया और इसे एक नए प्रारंभिक संदर्भ में जोड़ दिया।

http://penguindreams.org/blog/running-beans-that-use-application-server-datasources-locally/

0

TomcatJNDI के साथ आप हर JNDI संसाधन के रूप में अपने वेब अनुप्रयोग में करते थे आप बिलाव में कॉन्फिगर पहुँच सकते हैं। इसे प्राप्त करने के कोड सरल है और लग रहा है

तरह
TomcatJNDI tomcatJNDI = new TomcatJNDI(); 
tomcatJNDI.processContextXml(contextXmlFile); 
tomcatJNDI.start(); 

DataSource ds = (DataSource) InitialContext.doLookup("java:comp/env/path/to/datasource") 

Go here to read more about it.

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