2008-09-23 9 views
5

जब मैं अपने कोड में निम्नलिखित देखने का प्रयास करें:सहायता बिलाव 5.5.x में एम्बेडेड JBoss साथ JNDI को विन्यस्त

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
return (DataSource) envCtx.lookup("jdbc/mydb"); 

मैं निम्न अपवाद प्राप्त करें:

java.sql.SQLException: QueryResults: Unable to initialize naming context: 
    Name java:comp is not bound in this Context at 
    com.onsitemanager.database.ThreadLocalConnection.getConnection 
    (ThreadLocalConnection.java:130) at  
    ... 

मैं JBoss निम्नलिखित एम्बेडेड स्थापित जेबॉस wiki instructions। और मैंने configuration wiki page में निर्दिष्ट अनुसार "डिफ़ॉल्ट रूप से प्रत्येक WAR स्कैनिंग" परिनियोजन का उपयोग करके टोमकैट को कॉन्फ़िगर किया।

config पेज का हवाला देते हुए:

JNDI

एंबेडेड JBoss घटक कनेक्शन पूलिंग, EJB, जेपीए की तरह, और लेन-देन सेवाओं को प्रकाशित करने JNDI का व्यापक उपयोग किया जाता है। एम्बेडेड जेबॉस टॉमकैट के जेएनडीआई कार्यान्वयन को टॉमकैट के जेएनडीआई तत्काल के शीर्ष पर लेयर करके कार्यान्वित करता है। इस के लिए कुछ> कारण हैं:

  1. server.xml
  2. भीतर इन सेवाओं में से हर एक को घोषित करने के लिए जावा का seemeless एकीकरण अनुमति देने के लिए होने से बचने के लिए: वेब ऐप्लिकेशन और EJBs के बीच कंप्यूटर अनुप्रयोग नाम स्थान ।
  3. बिलाव के JNDI कार्यान्वयन उस में कुछ महत्वपूर्ण कीड़े कि काम करने के लिए
  4. हम EJBs और अन्य सेवाओं को दूरस्थ बनाने की आपको लगता है कि कर सकते हैं> दूर
देखा जा के लिए विकल्प प्रदान करना चाहते हैं कुछ JBoss घटकों क्षमता बाधित है

किसी को कैसे मैं जो उपर्युक्त उद्धरण के अनुसार JBoss नामकरण सेवा कॉन्फ़िगर कर सकते हैं पर कोई विचार बिलाव के JNDI कार्यान्वयन अधिभावी है ताकि मैं जावा पर एक देखने कर सकते हैं: कंप्यूटर अनुप्रयोग/env?

FYI करें

- मेरी पर्यावरण बिलाव 5.5.9, सीवन 2.0.2sp, एंबेडेड JBoss (बीटा 3),

नोट: मैं पर मेरे डेटाबेस कनेक्शन ठीक से सेट के लिए एक -ds.xml फ़ाइल और सुलभ है निर्देशों के अनुसार वर्ग पथ।

यह भी ध्यान दें: मैंने इस प्रश्न को एम्बेडेड जेबॉस मंच और सीम उपयोगकर्ता मंच में पोस्ट किया है।

उत्तर

2

प्रतिक्रिया टूलकिट के लिए धन्यवाद .... हाँ, मैं सीधे जावा पर जाकर अपने डेटास्रोत तक पहुंच सकता हूं: jdbc/mydb, लेकिन मैं मौजूदा कोड बेस का उपयोग कर रहा हूं जो ईएनसी के माध्यम से जुड़ता है। यहाँ कुछ दिलचस्प जानकारी है कि मुझे पता चला गया है ....

  1. ऊपर कोड JBoss 4.2.2 के साथ काम करता है।जीए और यहाँ JNDI ctx मापदंडों इस्तेमाल किया जा रहा है:
    java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs = org.jboss.naming: org.jnp.interfaces : org.jboss.naming: org.jnp.interfaces

  2. ऊपर कोड बिलाव 5.5.x साथ काम करता है और यहाँ JNDI ctx मापदंडों इस्तेमाल किया जा रहा है:
    java.naming.factory.initial = ऑर्ग। apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming

  3. उपरोक्त त्रुटि संदेश के साथ उपरोक्त कोड एम्बेडेड जेबॉस (बीटा 3) में टॉमकैट 5.5.x में विफल रहता है।
    java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming उपरोक्त कोड टोमकैट 5.5.x में एम्बेडेड जेबॉस का उपयोग कर उपरोक्त त्रुटि के साथ विफल रहता है

कोई भी किसी भी विचार है कि मैं क्या मैं एम्बेडेड JBoss JNDI विन्यास कॉन्फ़िगर करने में क्या करने की जरूरत है?

+0

आप एक समाधान मिला आशा के साथ overrided था? मुझे यह समस्या भी है। आवेदन देशी टोमकैट के साथ ठीक काम करता है, डेटा स्रोतों की अपेक्षा की जाती है, लेकिन जब जेबॉस एम्बेडेड होता है तो मुझे "नाम जावा: कंप इस संदर्भ में बाध्य नहीं है" त्रुटि मिलती है। –

1

जावा: comp/env एंटरप्राइज़ नामकरण संदर्भ (ईएनसी) के रूप में जाना जाता है और यह वैश्विक स्तर पर दिखाई नहीं देता है। अधिक जानकारी के लिए here देखें। आपको वैश्विक जेएनडीआई नाम का पता लगाने की आवश्यकता होगी जिसे आपके डेटासोर्स पर रेजीसाइट किया गया है।

ऐसा करने का सबसे आसान तरीका जेबॉस के वेब-आधारित जेएमएक्स कंसोल पर नेविगेट करना है और 'JNDIView' (बिल्कुल नाम - बिल्कुल घर पर नहीं) के लिए खोजना है। इस मेबीन में एक सूची विधि होनी चाहिए जिसे आप बुला सकते हैं, जो सभी जेएनडीआई-बाध्य वस्तुओं के लिए संदर्भ पथ प्रदर्शित करेगा।

1

मैं एंबेडेड Jboss साथ कुछ इसी तरह की समस्या हुई और मैं अंत में फ़ाइल में खेल ठीक करें:

उपसर्ग जावा जोड़ने

<mbean code="org.jboss.naming.NamingAlias" name="jboss.jmx:alias=testDatasource"> 
    <attribute name="FromName">jdbc/Example DataSource</attribute> 
    <attribute name="ToName">java:/testDatasource</attribute> 
</mbean> 

जोड़ने समस्या jboss था परीक्षण डेटा स्रोत-ds.xml:/सभी डेटा स्रोत घोषित करने के लिए। तो अंत में मैं testDatasource नाम के एक डेटा स्रोत, कि निर्देश JDBC करने के लिए/उदाहरण डेटा स्रोत

यह काम करता है

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