📄 xapooldriver.java
字号:
/* * Licensed under the X license (see http://www.x.org/terms.htm) */package org.ofbiz.minerva.pool.jdbc.xa;import java.sql.Connection;import java.sql.Driver;import java.sql.DriverManager;import java.sql.DriverPropertyInfo;import java.sql.SQLException;import java.util.Properties;import javax.sql.DataSource;import org.apache.log4j.Logger;/** * JDBC Driver to access pooled JDBC connections. Supports JDBC 2.0 * transactional XAConnections. You will get a java.sql.Connection back * in any case (the transactional-ness is handled under the covers). You * must create the pools ahead of time by creating and initializing the * appropriate DataSource. * <P>You should use a URL of the form * <B>jdbc:minerva:xa:<I>PoolName</I></B> to get a connection from the * pool.</P> * <P>This driver will be loaded automatically whenever an XA Pool is * created, but you can also use the standard <CODE>Class.forName</CODE> * call to load it.</P> * @see org.ofbiz.minerva.pool.jdbc.xa.XAPoolDataSource * * @author Aaron Mulder (ammulder@alumni.princeton.edu) */public class XAPoolDriver implements Driver { private final static Logger log = Logger.getLogger(XAPoolDriver.class); private final static String URL_START = "jdbc:minerva:xa:"; private final static XAPoolDriver instance; static { instance = new XAPoolDriver(); try { DriverManager.registerDriver(XAPoolDriver.instance()); } catch (SQLException e) { log.error("Unable to register Minerva XA DB pool driver!", e); } } /** * Gets the singleton driver instance. */ public static XAPoolDriver instance() { return instance; } private XAPoolDriver() { } /** * Tells which URLs this driver can handle. */ public boolean acceptsURL(String url) throws java.sql.SQLException { return url.startsWith(URL_START); } /** * Retrieves a connection from a connection pool. */ public Connection connect(String url, Properties props) throws java.sql.SQLException { if (url.startsWith(URL_START)) { return getXAConnection(url.substring(URL_START.length())); } return null; // No SQL Exception here! } private Connection getXAConnection(String name) { Connection con = null; try { DataSource source = XAPoolDataSource.getDataSource(name); if (source != null) con = source.getConnection(); } catch (Exception e) { log.error("Can't get DataSource from XAPool", e); } return con; } /** * Returns the driver version. */ public int getMajorVersion() { return 2; } /** * Returns the driver version. */ public int getMinorVersion() { return 0; } /** * Returns no properties. You do not need properties to connect to the * pool, and the properties for the underlying driver are not managed here. */ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException { return new DriverPropertyInfo[0]; } /** * Returns <B>false</B> since it is not known which underlying driver will * be used and what its capabilities are. */ public boolean jdbcCompliant() { return false; }}/*vim:tabstop=3:et:shiftwidth=3*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -