2010-09-08 12 views
6

यह page on Spring JDBC कहतेस्प्रिंग JDBC में JNDI द्वारा एक JDBC कनेक्शन हो रही

DataSourceUtils वर्ग ... JNDI से कनेक्शन प्राप्त करने के लिए

हालांकि the API doc for DataSourceUtils कहा स्थिर तरीकों को शामिल नहीं करता प्रदान करता है स्थिर तरीकों, के रूप में जहां तक ​​मैं देख सकता हूँ।

मुझे क्या याद आ रही है?

उत्तर

3

हम्म ... किसी भी तरह, DataSourceUtils की जावाडोक अधिक "सही" है (मेरा मतलब है, डॉक नहीं गलत है लेकिन तकनीकी रूप से, आप एक डेटास्रोत से कनेक्शन प्राप्त - JNDI के माध्यम से प्राप्त किया जा सकता है कि):

सहायक वर्ग जो DataSource से जेडीबीसी कनेक्शन प्राप्त करने के लिए स्थिर तरीके प्रदान करता है।

और निम्न विधियों में होना चाहिए कि आप क्या देख रहे हैं:

बेसिक उदाहरण (MySQL documentation से):

// Create a new application context. this processes the Spring config 
ApplicationContext ctx = new ClassPathXmlApplicationContext("ex1appContext.xml"); 
// Retrieve the data source from the application context 
DataSource ds = (DataSource) ctx.getBean("dataSource"); 
// Open a database connection using Spring's DataSourceUtils 
Connection c = DataSourceUtils.getConnection(ds); 
try { 
    // retrieve a list of three random cities 
    PreparedStatement ps = c.prepareStatement(
     "select City.Name as 'City', Country.Name as 'Country' " + 
     "from City inner join Country on City.CountryCode = Country.Code " + 
     "order by rand() limit 3"); 
    ResultSet rs = ps.executeQuery(); 
    while(rs.next()) { 
     String city = rs.getString("City"); 
     String country = rs.getString("Country"); 
     System.out.printf("The city %s is in %s%n", city, country); 
    } 
} catch (SQLException ex) { 
    // something has failed and we print a stack trace to analyse the error 
    ex.printStackTrace(); 
    // ignore failure closing connection 
    try { c.close(); } catch (SQLException e) { } 
} finally { 
    // properly release our connection 
    DataSourceUtils.releaseConnection(c, ds); 
} 
10

जैसा कि मैं समझता हूं, आपके लिए वास्तव में उपयोगी क्या होगा JndiObjectFactoryBean। जेएनडीआई में प्रकाशित इस स्प्रिंग फैक्ट्री बीन रिटर्न ऑब्जेक्ट।

आप इस तरह कॉन्फ़िगर हैं, और फिर आप Connection पर इंजेक्शन DataSourceDataSourceUtils का उपयोग कर मिलेगा:

<bean name="myDataSourceInJndi" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName"> 
     <value>java:comp/env/jdbc/MyDataSource</value> 
    </property> 
</bean> 

<bean name="myBean" class="MyClass"> 
... 
    <property name="dataSource" ref="myDataSourceInJndi">   
... 
</bean> 
+0

हाय, मैं वसंत के लिए नया हूँ, और मैं अगर मैं विधि आप ऊपर बताए उपयोग कर रहा हूँ जानना चाहते हैं, जहां मैं 'username' और' के लिए password' स्टोर करते हैं मेरे कनेक्शन? –

0

आगे भविष्य में संदर्भ के लिए: JNDI आवेदन सर्वर यानी पर प्रबंधित किया जाता है standalone.xml Postgresql ड्राइवर के साथ (Wildfly):

<datasource jta="true" jndi-name="java:comp/env/jdbc/MyDataSource" pool-name="myDS" enabled="true"> 
       <connection-url>jdbc:postgresql:[<//host>[:<5432>/]]<database></connection-url> 
       <driver>postgresql</driver> 
       <security> 
        <user-name>$USER</user-name> 
        <password>$PWD</password> 
       </security> 
      </datasource> 
संबंधित मुद्दे