I'm not certain how to get a DataSource
object. I was able to use the DriverManager
method to obtain a connection to a SQL database running on localhost, but every time I try to use the DataSource
method to do so I wind up getting exceptions (mostly for naming).
What I was wondering is:
DataSource
object for local hosted databases? DataSource
class need to be published, or is it like DriverManager
where you just get a connection with no new class creation? A DataSource
allows getting a JDBC connection mostly from a pool of connections. A DataSource
object represents a particular DBMS or some other data source, such as a file. If a company uses more than one data source, it will deploy a separate DataSource
object for each of them. The DataSource
interface is implemented by a driver vendor. You externalize DB connection properties file and fetch the object using JNDI. Using a Datasource
you need to know only the JNDI name. The Application server cares about the details.
It can be implemented in three different ways:
DataSource
implementation produces standard Connection objects that are not pooled or used in a distributed transaction. DataSource
implementation that supports connection pooling produces Connection objects that participate in connection pooling, that is, connections that can be recycled. DataSource
implementation that supports distributed transactions produces Connection objects that can be used in a distributed transaction, that is, a transaction that accesses two or more DBMS servers. Like, in Spring, you can configure the datasource in an XML file and then (1) either inject it into your bean, (2) get it from ApplicationContext
.
DataSource ds = (DataSource) ApplicationContextProvider.
getApplicationContext().getBean("myDataSource");
Connection c = ds.getConnection();
Suggested Reading:
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.