2012-07-04 9 views
9

मैं jetty-env.xml फ़ाइल का उपयोग करके अपने वेब एप्लिकेशन में दो डेटा स्रोतों को परिभाषित करने की कोशिश कर रहा हूं। यह सिर्फ एक डेटा स्रोत के साथ ठीक काम करता है, फिर भी मैं इस अपवाद है जब दूसरे डेटा स्रोत जोड़ दिया जाता है मिलती है:जेट्टी (जेटटी-एनवी.एक्सएमएल) में दो डेटा स्रोतों को परिभाषित करना

घाट-env.xml

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="ds" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg>jdbc/mybd1</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set> 
       <Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd1</Set> 
       <Set name="user">xx</Set> 
       <Set name="password">yy</Set> 
      </New> 
     </Arg> 
    </New> 

    <New id="ds2" class="org.eclipse.jetty.plus.jndi.Resource" > 
     <Arg>jdbc/mybd2</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set> 
       <Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd2</Set> 
       <Set name="user">xx</Set> 
       <Set name="password">yy</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 
:

java.lang.IllegalStateException: Nothing to bind for name javax.sql.DataSource/default 

यहाँ मेरी विन्यास है

web.xml

<resource-ref> 
    <res-ref-name>jdbc/mybd1</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
<resource-ref> 
    <res-ref-name>jdbc/mybd2</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

hibernate.cfg.xml

<session-factory> 
    <property name="connection.datasource">jdbc/mybd1</property> 
    <!-- ... --> 

कोई सुराग (वहाँ दूसरे डेटा स्रोत कॉन्फ़िगर करने के लिए एक और hibernate.cfb.xml है)?

उत्तर

4

मुझे इसका परीक्षण करने का मौका नहीं मिला है, लेकिन मुझे लगता है कि आपकी समस्या यह है कि आप दायरे के लिए <Arg /> खो रहे हैं।

आपका डी एस होना चाहिए:

<New id="ds" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/mybd1</Arg> 
    <Arg> 
     <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 

आदि

यह पहला "Arg" गुंजाइश है, और यह बिना, अपने तर्क के बाकी स्थिति से बाहर हैं, और शायद अपने उत्पन्न कर रहे हैं मुद्दा।

+1

धन्यवाद में से मेल खाना चाहिए , लेकिन मुझे एक ही त्रुटि मिलती है :( – polypiel

+1

मुझे एक ही समस्या थी, और यह मेरे लिए काम करता था। लेकिन अब मुझे एक और समस्या है मी ... – Raedwald

+0

हेहे ... कभी भी jndi के लिए निर्माण को देखा। संसाधन? संसाधन (ऑब्जेक्ट स्कोप, स्ट्रिंग jndiName, ऑब्जेक्ट objToBind) संसाधन (स्ट्रिंग jndiName, ऑब्जेक्ट objToBind) ... ताकि आप मूल्यों के साथ तीन पैरामीटर का उपयोग कर सकें, दो अन्य पैराम के साथ खाली 1 पैरा स्कोप या केवल दो पैरा – Striker

1

जेटी में लॉगिंग सक्षम करने का प्रयास करें। सावधान रहें लॉगर नाम "jndi" है। जेटी डेवलपर्स कक्षा-नाम का उपयोग जेएनडीआई के लिए लॉगर-नाम के रूप में नहीं करते हैं।

मैंने web.xml और jetty-env.xml में परिभाषित नाम के बीच अंतर खोजने के लिए 2 दिन बिताए।

1

आईडी पैरामीटर मान घाट-env.xml और web.xml

घाट-env.xml

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="DS1" class="org.eclipse.jetty.plus.jndi.Resource">...</New> 
    <New id="DS2" class="org.eclipse.jetty.plus.jndi.Resource">...</New> 
</Configure> 

web.xml

<resource-ref id="DS1">...</resource-ref> 
<resource-ref id="DS2">...</resource-ref> 
+0

यह एक अच्छा जवाब लगता है .. लेकिन मैं वर्षों से उस समस्या से जुड़ा नहीं हूं: पीआई इसका परीक्षण नहीं कर सकता है – polypiel

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