How I can create web application project which is loading the jndi datasource set in the server configuration? I want to make the web application independent from the server and the database. Is it possible.
Asked
Active
Viewed 407 times
1 Answers
2
You create the DataSource in your web/application server and expose it through JNDI
You configure the following hibernate property:
<property name="hibernate.connection.datasource">java:comp/env/jdbc/MyDataSource</p>
This way the application is decoupled from the JNDI provider. Even the JNDI url can be configured using a Maven property, so switching to an application server (that uses a different JNDI resource pattern) is just a mater of adding a new Maven profile.
One better approach is to set up the DataSource in your application configuration.
@Autowired
private DataSource dataSource;
...
properties.put("hibernate.connection.datasource", dataSource);
This way you can use any connection pooling framework, like the fastest connection pooling framework, HikariCP.
You can even set up DataSource proxies, like:
- datasource-proxy, to log SQL queries with PreparedStatement parameters
- FlexyPool, to monitor connection pooling usage and adjust the pool size using adapting startegies

Glorfindel
- 21,988
- 13
- 81
- 109

Vlad Mihalcea
- 142,745
- 71
- 566
- 911