2013-04-25 7 views
8

मैंने अपने वेबलॉगिक कंसोल का उपयोग करके एक जेएनडीआई डेटा-स्रोत बनाया है, लेकिन मैं अपने वेब एप्लिकेशन से ऑब्जेक्ट तक पहुंच नहीं पा रहा हूं। नीचे दिए गए विवरणवेबलॉगिक में परिभाषित जेएनडीआई डेटा स्रोत का उपयोग कैसे करें 10.3.6

weblogic 10.3.6 में कर रहे हैं, मैं डेटा स्रोत के लिए JNDI नाम दे दिया है के रूप में:

: jdbc/mydb

अपने वेब आवेदन से डीबी कनेक्शन प्राप्त करने के लिए मैं अपने वेब आवेदन में इस कोड लिखा है

Context initContext = new InitialContext(); 
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb"); 
jndiConnection = ds.getConnection(); 

इससे पहले मैं सर्वर के रूप में बिलाव का उपयोग कर रहा था और मैं जब मैं फ़ाइल tomcat/conf/server.xml में संसाधन विवरण के लिए कॉन्फ़िगर डीबी कनेक्शन लेने के लिए सक्षम था, लेकिन जब मैं उपयोग कर रहा हूँ WebLogic सर्वर मैं त्रुटि नीचे हो रही है का उपयोग कर शुरू कर दिया:

Cannot establish DB connection to JNDI:java:/comp/env/jdbc/mydb While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702. caused by: javax.naming.NameNotFoundException: While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702.; remaining name '/comp/env/jdbc/mydb' 

मैंने इस लिंक में उल्लिखित विकल्पों का प्रयास किया है: How to lookup JNDI resources on WebLogic? लेकिन फिर भी मुझे समस्याएं आ रही हैं।

कृपया मुझे बताएं कि मैं कहां गलती कर रहा हूं, जेएनडीआई ऑब्जेक्ट तक पहुंचने की प्रक्रिया क्या है।

+1

आप इसे नाम के लिए "JDBC/mydb" "जावा/mydb" के बजाय मतलब है? –

+0

@better_use_mkstemp हाँ, मैंने अपना प्रश्न अपडेट किया है, इसे इंगित करने के लिए धन्यवाद। – chaitanya

+2

क्या आपने अपने प्रश्न में दिए गए लिंक में दूसरा समाधान भी किया है? पहला जवाब टॉमकैट पर लागू होता है लेकिन मुझे यकीन नहीं है कि हमेशा वेबलॉगिक में काम करता है। जावा निकालें: comp/env/और initContext.lookup ("jdbc/mydb") आज़माएं? –

उत्तर

9

पोस्ट का जिक्र करने के बाद: Tomcat vs Weblogic JNDI Lookup मैंने अपना कोड संशोधित किया है।

वेब अनुप्रयोग के अपने जावा कार्यक्रम में नीचे दिए गए कोड का उपयोग कर अपनी समस्या को हल किया है:

Context initContext = new InitialContext(); 
DataSource ds = (DataSource)initContext.lookup("jdbc/mydb"); 
jndiConnection = ds.getConnection(); 

इसके अलावा weblogic कंसोल में मैं (के तहत सर्वर विकल्प) मेरी व्यवस्थापक सर्वर से मेरी JNDI वस्तु को शामिल किया है, जहां मेरे वेब अनुप्रयोग है को तैनात किया।

+1

तो आपने मेरी टिप्पणी में जो कुछ किया है, वही किया है और यह काम किया है ... derp। आ जाओ भाई! –

+1

@better_use_mkstemp: सोचें कि आपको उत्तर में अपनी टिप्पणियों को सारांशित करना चाहिए था। – wmorrison365

+0

मुझे एक ही समस्या थी कि जेएनडीआई संसाधन नहीं मिला, हालांकि मैंने इसे पहले बनाया था। कुंजी एक विशिष्ट सर्वर को संसाधन असाइन करना है। – Spindizzy

2

वेबलॉगिक 12c में अपना उत्तर आजमाया लेकिन काम नहीं किया ..!

जब मैंने केवल डेटा स्रोत myDB (jdbc/ हटा दिया) का उपयोग करके कोशिश की तो यह ठीक काम करता था।

Context initContext = new InitialContext(); 
DataSource ds = (DataSource)initContext.lookup("myDB"); 
jndiConnection = ds.getConnection(); 
+0

जेएनडीआई नाम जिसे मैंने स्वयं बनाया है, "jdbc/mydb" के रूप में मूल्य है, इसलिए मैं इसे हटा नहीं सकता। – chaitanya

2

Weblogic 12C के लिए एक ही समाधान किया जाएगा

अपने pom.xml करने के लिए नीचे निर्भरता को जोड़ने .. वर्तमान मिडलवेयर घर मूल्य $ {oracleMiddlewareHome}, तो साथ एक चर बनाने ...

<dependency> 
     <groupId>weblogic</groupId> 
     <artifactId>webservices</artifactId> 
     <version>12.1.3</version> 
     <scope>system</scope> 
     <systemPath> 
      ${oracleMiddlewareHome}/wlserver/server/lib/weblogic.jar 
     </systemPath> 
    </dependency> 

अब नीचे दिए गए कोड का उपयोग करें:

Hashtable<String, String> h = new Hashtable<String, String>(7); 
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
h.put(Context.PROVIDER_URL, "t3://localhost:7001");//add ur url 
h.put(Context.SECURITY_PRINCIPAL, "weblogic");//add username 
h.put(Context.SECURITY_CREDENTIALS, "welcome1");//add password 

    Bundle bundle; 
    try { 
     InitialContext ctx = new InitialContext(h); 
     DataSource dataSource = ((DataSource) ctx.lookup("jdbc/ContextBindingDS")); 
     bundle = (Bundle) ctx.lookup(BUNDLE_JNDI_NAME); 


    } catch (NamingException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
संबंधित मुद्दे