2010-09-08 15 views

Respuesta

3

Hmm ... De alguna manera, el Javadoc de DataSourceUtils es más "exacta" (quiero decir, el doctor no está mal, pero técnicamente, se obtiene una conexión desde un origen de datos - que se puede obtener a través de JNDI):

clase auxiliar que proporciona métodos estáticos para obtener conexiones JDBC desde DataSource.

Y los métodos siguientes deben ser lo que estás buscando:

Ejemplo básico (de la 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

Según tengo entendido, lo que realmente sería útil para usted es JndiObjectFactoryBean. Este bean Factory de Spring devuelve el objeto publicado en JNDI.

Entonces configuraría como este, y luego que se obtendría utilizando la ConnectionDataSourceUtils en el inyectada DataSource:

<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

Hola, soy nuevo a la primavera, y me gustaría saber si estoy usando el método que se ha mencionado anteriormente, en donde guardo el '' username' y password' de ¿mi conexión? –

0

Para más referencias futuras: la jndi se gestiona en el servidor de aplicaciones es decir: standalone.xml (JBoss) con conductor PostgreSQL:

<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> 
Cuestiones relacionadas