?? mysqldatasource.java
字號(hào):
/*
Copyright (C) 2002 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.mysql.jdbc.jdbc2.optional;
import java.io.PrintWriter;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Properties;
import javax.naming.NamingException;
import javax.naming.Reference;
import javax.naming.Referenceable;
import javax.naming.StringRefAddr;
import javax.sql.DataSource;
/**
* A JNDI DataSource for a Mysql JDBC connection
*
* @author Mark Matthews
*/
public class MysqlDataSource implements DataSource, Referenceable, Serializable {
/** The driver to create connections with */
protected static com.mysql.jdbc.Driver mysqlDriver = null;
static {
try {
mysqlDriver = (com.mysql.jdbc.Driver) Class.forName(
"com.mysql.jdbc.Driver").newInstance();
} catch (Exception E) {
throw new RuntimeException(
"Can not load Driver class com.mysql.jdbc.Driver");
}
}
/** Log stream */
protected PrintWriter logWriter = null;
/** Database Name */
protected String databaseName = null;
/** Character Encoding */
protected String encoding = null;
/** Hostname */
protected String hostName = null;
/** Password */
protected String password = null;
/** The profileSql property */
protected String profileSql = "false";
/** The JDBC URL */
protected String url = null;
/** User name */
protected String user = null;
/** Should we construct the URL, or has it been set explicitly */
protected boolean explicitUrl = false;
/** Port number */
protected int port = 3306;
/**
* Default no-arg constructor for Serialization
*/
public MysqlDataSource() {
}
/**
* Creates a new connection using the already configured username and
* password.
*
* @return a connection to the database
*
* @throws SQLException if an error occurs
*/
public java.sql.Connection getConnection() throws SQLException {
return getConnection(user, password);
}
/**
* Creates a new connection with the given username and password
*
* @param userID the user id to connect with
* @param password the password to connect with
*
* @return a connection to the database
*
* @throws SQLException if an error occurs
*/
public java.sql.Connection getConnection(String userID, String password)
throws SQLException {
Properties props = new Properties();
if (userID == null) {
userID = "";
}
if (password == null) {
password = "";
}
props.put("user", userID);
props.put("password", password);
props.put("profileSql", getProfileSql());
return getConnection(props);
}
/**
* Sets the database name.
*
* @param dbName the name of the database
*/
public void setDatabaseName(String dbName) {
databaseName = dbName;
}
/**
* Gets the name of the database
*
* @return the name of the database for this data source
*/
public String getDatabaseName() {
return (databaseName != null) ? databaseName : "";
}
/**
* Sets the log writer for this data source.
*
* @see javax.sql.DataSource#setLogWriter(PrintWriter)
*/
public void setLogWriter(PrintWriter output) throws SQLException {
logWriter = output;
}
/**
* Returns the log writer for this data source
*
* @return the log writer for this data source
*/
public java.io.PrintWriter getLogWriter() {
return logWriter;
}
/**
* DOCUMENT ME!
*
* @param seconds DOCUMENT ME!
*
* @throws SQLException DOCUMENT ME!
*/
public void setLoginTimeout(int seconds) throws SQLException {
}
/**
* Returns the login timeout
*
* @return the login timeout
*/
public int getLoginTimeout() {
return 0;
}
/**
* Sets the password
*
* @param pass the password
*/
public void setPassword(String pass) {
password = pass;
}
/**
* Sets the database port.
*
* @param p the port
*/
public void setPort(int p) {
port = p;
}
/**
* Returns the port number
*
* @return the port number
*/
public int getPort() {
return port;
}
/**
* Sets the port number
*
* @param p the port
*
* @see #setPort
*/
public void setPortNumber(int p) {
setPort(p);
}
/**
* Returns the port number
*
* @return the port number
*/
public int getPortNumber() {
return getPort();
}
/**
* Sets the profileSql property
*
* @param flag true/false
*/
public void setProfileSql(String flag) {
profileSql = flag;
}
/**
* Returns the value for the profileSql property
*
* @return the value for the profileSql property
*/
public String getProfileSql() {
return profileSql;
}
/**
* Required method to support this class as a <CODE>Referenceable</CODE>.
*
* @return a Reference to this data source
*
* @throws NamingException if a JNDI error occurs
*/
public Reference getReference() throws NamingException {
String factoryName = "com.mysql.jdbc.jdbc2.optional.MysqlDataSourceFactory";
Reference ref = new Reference(getClass().getName(), factoryName, null);
ref.add(new StringRefAddr("user", getUser()));
ref.add(new StringRefAddr("password", password));
ref.add(new StringRefAddr("serverName", getServerName()));
ref.add(new StringRefAddr("port", "" + getPort()));
ref.add(new StringRefAddr("databaseName", getDatabaseName()));
ref.add(new StringRefAddr("profileSql", getProfileSql()));
return ref;
}
/**
* Sets the server name.
*
* @param serverName the server name
*/
public void setServerName(String serverName) {
hostName = serverName;
}
/**
* Returns the name of the database server
*
* @return the name of the database server
*/
public String getServerName() {
return (hostName != null) ? hostName : "";
}
//
// I've seen application servers use both formats
// URL or url (doh)
//
/**
* Sets the URL for this connection
*
* @param url the URL for this connection
*/
public void setURL(String url) {
setUrl(url);
}
/**
* Returns the URL for this connection
*
* @return the URL for this connection
*/
public String getURL() {
return getUrl();
}
/**
* This method is used by the app server to set the url string specified
* within the datasource deployment descriptor. It is discovered using
* introspection and matches if property name in descriptor is "url".
*
* @param url url to be used within driver.connect
*/
public void setUrl(String url) {
this.url = url;
explicitUrl = true;
}
/**
* Returns the JDBC URL that will be used to create the database
* connection.
*
* @return the URL for this connection
*/
public String getUrl() {
if (!explicitUrl) {
String builtUrl = "jdbc:mysql://";
builtUrl = builtUrl + getServerName() + ":" + getPort() + "/"
+ getDatabaseName();
return builtUrl;
} else {
return this.url;
}
}
/**
* Sets the user ID.
*
* @param userID the User ID
*/
public void setUser(String userID) {
user = userID;
}
/**
* Returns the configured user for this connection
*
* @return the user for this connection
*/
public String getUser() {
return user;
}
/**
* Creates a connection using the specified properties.
*
* @param props the properties to connect with
*
* @return a connection to the database
*
* @throws SQLException if an error occurs
*/
protected java.sql.Connection getConnection(Properties props)
throws SQLException {
String jdbcUrlToUse = null;
if (!explicitUrl) {
StringBuffer jdbcUrl = new StringBuffer("jdbc:mysql://");
if (hostName != null) {
jdbcUrl.append(hostName);
}
jdbcUrl.append(":");
jdbcUrl.append(port);
jdbcUrl.append("/");
if (databaseName != null) {
jdbcUrl.append(databaseName);
}
jdbcUrlToUse = jdbcUrl.toString();
} else {
jdbcUrlToUse = this.url;
}
return mysqlDriver.connect(jdbcUrlToUse, props);
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -