26.4.5. Running as part of the JDBC Driver
A feature of the MySQL Connector/J JDBC driver is the ability to
specify a ''SocketFactory'' as a parameter in the JDBC connection
string. MySQL Connector/MXJ includes a custom SocketFactory. The SocketFactory
will, upon the first connection, deploy and launch the MySQL
database. The SocketFactory also exposes a ''shutdown'' method.
To try it specify the ''socketFactory'' parameter on the JDBC
connection string with a value equal to
''com.mysql.management.driverlaunched.ServerLauncherSocketFactory''
In the following example, we have a program which creates a
connection, executes a query, and prints the result to the
System.out. The MySQL database will be deployed and started as
part of the connection process, and shutdown as part of the
finally block.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.management.driverlaunched.ServerLauncherSocketFactory;
public class ConnectorMXJTestExample {
public static void main(String[] args) throws Exception {
String hostColonPort = "localhost:3336";
String driver = com.mysql.jdbc.Driver.class.getName();
String url = "jdbc:mysql://" + hostColonPort + "/" + "?"
+ "socketFactory="
+ ServerLauncherSocketFactory.class.getName();
String userName = "root";
String password = "";
Class.forName(driver);
Connection conn = null;
try {
conn = DriverManager.getConnection(url, userName, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT VERSION()");
rs.next();
String version = rs.getString(1);
rs.close();
stmt.close();
System.out.println("------------------------");
System.out.println(version);
System.out.println("------------------------");
} finally {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
ServerLauncherSocketFactory.shutdown(hostColonPort);
}
}
}
To run the above program, be sure to have connector-mxj.jar and
Connector/J in the CLASSPATH. Then type:
java ConnectorMXJTestExample
Of course there are many options we may wish to set for a MySQL
database. These options may be specified as part of the JDBC
connection string simply by prefixing each server option with
''server.''. In the following example we set three driver
parameters and two server parameters:
String url = "jdbc:mysql://" + hostColonPort + "/"
+ "?"
+ "socketFactory="
+ ServerLauncherSocketFactory.class.getName();
+ "&"
+ "cacheServerConfiguration=true"
+ "&"
+ "useLocalSessionState=true"
+ "&"
+ "server.basedir=/opt/myapp/db"
+ "&"
+ "server.datadir=/mnt/bigdisk/myapp/data";