Modified:
trunk/connector-mxj/.classpath
trunk/connector-mxj/CHANGES
trunk/connector-mxj/commercial/platform-map.properties
trunk/connector-mxj/resources/platform-map.properties
trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
Log:
added groundwork for URL re-connection optimization
Modified: trunk/connector-mxj/.classpath
===================================================================
--- trunk/connector-mxj/.classpath 2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/.classpath 2007-06-21 09:33:45 UTC (rev 99)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" excluding="**/.svn|**/.svn/*|.svn|**/*.aj" path="src"/>
<classpathentry kind="src" path="resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="JUNIT_HOME/junit.jar"
sourcepath="ECLIPSE_HOME/plugins/org.eclipse.jdt.source_3.0.0/src/org.junit_3.8.1/junitsrc.zip"/>
Modified: trunk/connector-mxj/CHANGES
===================================================================
--- trunk/connector-mxj/CHANGES 2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/CHANGES 2007-06-21 09:33:45 UTC (rev 99)
@@ -1,6 +1,8 @@
# Changelog
# $Id: CHANGES,v 1.14 2005/10/25 19:11:16 eherman Exp $
+2007-06-21 - added groundwork for URL re-connection optimization
+
5-0-7-beta
2007-05-27 - swapped out gpl binaries for v5.0.41
Modified: trunk/connector-mxj/commercial/platform-map.properties
===================================================================
--- trunk/connector-mxj/commercial/platform-map.properties 2007-05-27 17:11:51 UTC (rev
98)
+++ trunk/connector-mxj/commercial/platform-map.properties 2007-06-21 09:33:45 UTC (rev
99)
@@ -5,6 +5,7 @@
Linux-x86=Linux-i386
Linux-i686=Linux-i386
Linux-x86_64=Linux-i386
+Linux-ia64=Linux-i386
#Linux-ppc=Linux-ppc
#Linux-ppc64=Linux-ppc
Modified: trunk/connector-mxj/resources/platform-map.properties
===================================================================
--- trunk/connector-mxj/resources/platform-map.properties 2007-05-27 17:11:51 UTC (rev 98)
+++ trunk/connector-mxj/resources/platform-map.properties 2007-06-21 09:33:45 UTC (rev 99)
@@ -5,6 +5,7 @@
Linux-x86=Linux-i386
Linux-i686=Linux-i386
Linux-x86_64=Linux-i386
+Linux-ia64=Linux-i386
#Linux-ppc=Linux-ppc
#Linux-ppc64=Linux-ppc
Modified: trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java
===================================================================
--- trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java 2007-05-27 17:11:51 UTC (rev
98)
+++ trunk/connector-mxj/src/ConnectorMXJUrlTestExample.java 2007-06-21 09:33:45 UTC (rev
99)
@@ -42,8 +42,8 @@
System.out.println(url);
- String userName = "root";
- String password = "";
+ String userName = "alice";
+ String password = "q93uti0opwhkd";
Class.forName(DRIVER);
Connection conn = null;
Modified:
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java
===================================================================
---
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java 2007-05-27
17:11:51 UTC (rev 98)
+++
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactory.java 2007-06-21
09:33:45 UTC (rev 99)
@@ -21,11 +21,16 @@
import java.io.IOException;
import java.net.Socket;
import java.net.SocketException;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
+import com.mysql.jdbc.Driver;
+import com.mysql.jdbc.MysqlErrorNumbers;
import com.mysql.jdbc.NonRegisteringDriver;
import com.mysql.jdbc.SocketFactory;
import com.mysql.jdbc.StandardSocketFactory;
@@ -34,6 +39,8 @@
import com.mysql.management.MysqldResourceI;
import com.mysql.management.util.Exceptions;
import com.mysql.management.util.Files;
+import com.mysql.management.util.SQLRuntimeException;
+import com.mysql.management.util.Str;
/**
* This class is final simply as a hint to the compiler, it may be un-finalized
@@ -50,10 +57,13 @@
private MysqldFactory resourceFactory;
private SocketFactory socketFactory;
+
+ private boolean throwOnBadPassword;
public ServerLauncherSocketFactory() {
setResourceFactory(new MysqldFactory.Default());
setSocketFactory(new StandardSocketFactory());
+ throwOnBadPassword = true;
}
public Socket connect(String host, int portNumber, Properties props)
@@ -64,6 +74,18 @@
}
private void ensureMysqlStarted(int port, Properties props) {
+ String user = props.getProperty(NonRegisteringDriver.USER_PROPERTY_KEY);
+ String pass = props
+ .getProperty(NonRegisteringDriver.PASSWORD_PROPERTY_KEY);
+
+ /*
+ * StandardSocketFactory prints a stacktrace to the screen which is too
+ * ugly, so this optimization must wait.
+ */
+ if (false && alreadyStarted(port, user, pass)) {
+ return;
+ }
+
Map serverOpts = new HashMap();
for (Enumeration enums = props.propertyNames(); enums.hasMoreElements();) {
String key = enums.nextElement().toString();
@@ -74,11 +96,10 @@
serverOpts.put(key.substring(SERVER_DOT.length()), val);
}
}
- serverOpts.put(MysqldResourceI.INITIALIZE_USER_NAME, props
- .getProperty(NonRegisteringDriver.USER_PROPERTY_KEY));
- serverOpts.put(MysqldResourceI.INITIALIZE_PASSWORD, props
- .getProperty(NonRegisteringDriver.PASSWORD_PROPERTY_KEY));
+ serverOpts.put(MysqldResourceI.INITIALIZE_USER_NAME, user);
+ serverOpts.put(MysqldResourceI.INITIALIZE_PASSWORD, pass);
+
serverOpts.put(MysqldResourceI.PORT, Integer.toString(port));
Object baseDirStr = serverOpts.get(MysqldResourceI.BASEDIR);
File baseDir = new Files().newFile(baseDirStr);
@@ -125,6 +146,34 @@
mysqld.start(threadName, serverOpts);
}
+ private boolean alreadyStarted(int port, String user, String pass) {
+ new Str().classForName(Driver.class.getName());
+ Connection conn = null;
+ String url = "jdbc:mysql://127.0.0.1:" + port + "/"
+ + "?connectTimeout=150";
+
+ try {
+ conn = DriverManager.getConnection(url, user, pass);
+ return true;
+ } catch (SQLException e) {
+ if (e.getErrorCode() == MysqlErrorNumbers.ER_ACCESS_DENIED_ERROR
+ && throwOnBadPassword) {
+ throw new SQLRuntimeException(e);
+ }
+ return false;
+ } catch (Exception e) {
+ return false;
+ } finally {
+ try {
+ if (conn != null) {
+ conn.close();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
String replaceNullStringWithNull(String str) {
return String.valueOf((Object) null).equals(str) ? null : str;
}
@@ -148,6 +197,10 @@
void setSocketFactory(SocketFactory socketFactory) {
this.socketFactory = socketFactory;
}
+
+ void throwOnBadPassword(boolean val){
+ throwOnBadPassword = val;
+ }
SocketFactory getSocketFactory() {
return socketFactory;
Modified:
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java
===================================================================
---
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java 2007-05-27
17:11:51 UTC (rev 98)
+++
trunk/connector-mxj/src/com/mysql/management/driverlaunched/ServerLauncherSocketFactoryTest.java 2007-06-21
09:33:45 UTC (rev 99)
@@ -108,6 +108,7 @@
ServerLauncherSocketFactory sf = new ServerLauncherSocketFactory();
FakeSocketFactory fake = new FakeSocketFactory();
sf.setSocketFactory(fake);
+ sf.throwOnBadPassword(false);
sf.setResourceFactory(new FakeMysqldFactory());
assertEquals(0, fake.connectCalled);
@@ -138,6 +139,7 @@
FakeMysqldFactory factory = new FakeMysqldFactory();
sf.setResourceFactory(factory);
sf.setSocketFactory(new FakeSocketFactory());
+ sf.throwOnBadPassword(false);
assertEquals(0, factory.fakeRunningMysqlds.size());
String host = "localhost";
@@ -188,6 +190,7 @@
FakeSocketFactory fakeSf = new FakeSocketFactory();
sf.setResourceFactory(factory);
sf.setSocketFactory(fakeSf);
+ sf.throwOnBadPassword(false);
Properties props = new Properties();
int port = 3306;
| Thread |
|---|
| • Connector/MXJ commit: r99 - in trunk/connector-mxj: . commercial resources src src/com/mysql/management/driverlaunched | eherman | 21 Jun |