2015-07-18 11 views
12

मैं इस तरह एक नमूना कोड है:javax.naming.NameNotFoundException जेटी में नहीं, लेकिन टॉमकैट में नहीं। कैसे हल करें?

ConnectionPool.dataSource = (DataSource) initialContext.lookup("java:comp/env/jdbc/murach"); 

और webapp में/META-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
<Resource name="jdbc/murach" 
      auth="Container" 
      type="javax.sql.DataSource" 
      username="root" 
      --- Rest of the text ---/> 
</Context> 

जब मैं बिलाव के लिए इस वेब ऐप्लिकेशन को तैनात, डीबी कनेक्शन ठीक है , लेकिन जब मैं जेट्टी के साथ में जेट्टी प्लगइन का उपयोग कर के साथ प्रयास करें: घाट: रन-युद्ध

<plugin> 
    <groupId>org.eclipse.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>9.2.1.v20140609</version> 
    <configuration> 
     <scanIntervalSeconds>2</scanIntervalSeconds> 
     <httpConnector> 
      <port>8082</port> 
     </httpConnector> 
     <webApp> 
      <contextPath>/</contextPath> 
     </webApp> 
    </configuration> 
</plugin> 

मैं हो रही है:

javax.naming.NameNotFoundException; remaining name 'jdbc/murach' 

कैसे मैं भी जेटी के साथ इस काम कर सकते हैं?

मैं भी

<resource-ref> 
    <description>murach</description> 
    <res-ref-name>jdbc/murach</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
web.xml को

जोड़ने की कोशिश की, लेकिन अब मैं हो रही है:

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

क्या यह डेटा स्रोत आपके जेटी सर्वर के लिए परिभाषित किया गया है? [https://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource ](https://wiki.eclipse.org/Jetty/Howto/Configure_JNDI_Datasource) –

+0

@ कोरे तुगेय नीचे m.hassaballah का उत्तर देखें। आप अपने वेबसार्म को अपने web.xml फ़ाइल में संसाधन के रूप में परिभाषित कर रहे हैं, न केवल Context.xml में। –

+0

बस जानना चाहते हैं ...क्या मेरा उत्तर सहायक था या क्या सुझाए गए दृष्टिकोण का उपयोग करने में कुछ समस्याएं हैं? – svaor

उत्तर

7

जेटी को जेएनडीआई का उपयोग करने और जेएनडीआई संसाधन को तैनात करने के लिए कॉन्फ़िगर किया जाना चाहिए। प्लगइन विन्यास maven में जोड़ने के लिए

प्रयास करें:

<configuration> 
    <!-- ... --> 
    <jettyEnvXml>src/main/dev-path-to-jetty-env-xml/jetty-env.xml</jettyEnvXml> 
    <webXml>src/main/dev-path-to-web-xml/web.xml</webXml> 
</configuration> 

फ़ाइल jetty-env.xml तरह लग रहा है (केवल उदाहरण के रूप में, bonecp इस्तेमाल किया डेटा स्रोत):

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="murachDataSource" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg>jdbc/murach</Arg> 

     <Arg> 
      <New class="com.jolbox.bonecp.BoneCPDataSource"> 
       <Set name="driverClass">org.h2.Driver</Set> 
       <Set name="jdbcUrl">jdbc:h2:~/murach/test</Set> 
       <Set name="username">sa</Set> 
       <Set name="password"/> 

       <Set name="partitionCount">4</Set> 
       <Set name="minConnectionsPerPartition">5</Set> 
       <Set name="acquireIncrement">5</Set> 
       <Set name="closeConnectionWatch">false</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

फ़ाइल web.xml शामिल करना चाहिए लाइनों:

<resource-ref> 
    <description>My DataSource Reference</description> 
    <res-ref-name>jdbc/murach</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
3

आप संसाधन रेफरी web.xml लिए चयन किया है?

<resource-ref> 
    <description>XX</description> 
    <res-ref-name>jdbc/murach</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
    </resource-ref> 
+0

उत्तर के लिए धन्यवाद, लेकिन मुझे मिल रहा है: java.lang.IllegalStateException: नाम javax.sql.DataSource/डिफ़ॉल्ट के लिए बाध्य करने के लिए कुछ नहीं –

4

मैं इसे एक टिप्पणी के रूप में जोड़ना चाहता था, यह नहीं है अभी तक मुझे अनुमति दी।
svaor का उत्तर सही है, क्योंकि J2EE विनिर्देश में जेएनडीआई संसाधनों को रखने के लिए परिभाषित मानक स्थान नहीं है।
तो, context.xml फ़ाइल टोमकैट विशिष्ट है, और जेटी इसके बारे में कुछ भी नहीं जानता है।

http://docs.jboss.org/jbossweb/3.0.x/jndi-resources-howto.html

J2EE मानक संसाधनों को संदर्भित करने के /WEB-INF/web.xml फ़ाइल में तत्वों की एक मानक सेट प्रदान करता है; में संदर्भित संसाधनों को इन तत्वों को एक अनुप्रयोग-सर्वर-विशिष्ट कॉन्फ़िगरेशन में परिभाषित किया जाना चाहिए।

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