2010-09-08 5 views
6

Это page on Spring JDBC говоритПолучение соединения JDBC с помощью JNDI в Spring JDBC

Класс DataSourceUtils ... предоставляет статические методы для получения соединений из JNDI

Однако the API doc for DataSourceUtils не включает указанные статические методы, а насколько я вижу.

Что мне не хватает?

ответ

3

Хм ... Так или иначе, Javadoc из DataSourceUtils более «точной» (я имею в виду, документ не является неправильным, но технически, вы получаете соединение из DataSource - который может быть получен с помощью JNDI):

Класс помощника, который предоставляет статические методы для получения соединений JDBC от 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. Этот заводской завод Spring возвращает объект, опубликованный в JNDI.

Вы должны настроить его так, и тогда вы получите Connection используя DataSourceUtils на нагнетаемой 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

привет, я новичок в весной, и я хотел бы знать, если я использую метод, который вы упомянули выше, где я хранить '' username' и password' для моя связь? –

0

Для дальнейших будущих ссылок: JNDI управляется на то есть сервер приложений: standalone.xml (Wildfly) с водителем 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> 
Смежные вопросы