Hier ist ein Teil von meinem Programm:MysqlDataSource Invokes "Connection refused" Exception
try {
Class.forName("com.mysql.jdbc.Driver");
InitializeData data = new InitializeData();
Connection con = null;
try {
Context ctx = data.getContext();
MysqlDataSource ds = (MysqlDataSource)ctx.lookup("database");
con = ds.getConnection();
...
wo
public InitializeData() {
// configuring data source (data base)
ds = new MysqlDataSource();
ds.setUser("root");
ds.setPassword("%");
ds.setServerName("localhost");
ds.setPort(3306);
// configuring jndi
try {
Properties env = new Properties();
try {
env.load(new FileInputStream(env_props));
} catch (FileNotFoundException e) {
System.err.println("Unable to load jndi properties");
System.exit(1);
} catch (IOException e) {
System.err.println("IOException");
System.exit(1);
}
ctx = new InitialContext(env);
ctx.rebind("database", ds);
} catch (NamingException e) {
System.err.println("Naming Exception");
System.exit(1);
}
}
public Context getContext() {
return ctx;
}
Wie Sie sehen können, ich versuche, MySQL zu verbinden. Eigentlich ist MySQL in meinem Java-Programm eingebettet. Wenn ich über DriverManager (unter Verwendung con = DriverManager.getConnection("jdbc:mysql:mxj://localhost", "root", "");
) verbinde, funktioniert alles. Aber mit einem Datasource-Objekt, wie es oben gezeigt ruft eine Ausnahme:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection refused: connect
STACKTRACE:
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2771)
at com.mysql.jdbc.Connection.<init>(Connection.java:1555)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:425)
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:140)
at com.mysql.jdbc.jdbc2.optional.MysqlDataSource.getConnection(MysqlDataSource.java:110)
at statistics.DatabaseWorks.main(DatabaseWorks.java:26)
Könnte jemand bitte mir helfen?
Einige Tests gesehen, dass mein Programm versucht, auf einen MySQL-Server zu verbinden, die nicht eingebettet ist (BalusC Antwort sehen). Wenn ich den Server starte (nicht eingebettet) funktioniert alles. Also brauche ich einen Weg, mein Programm zu sagen, um das lokale Programm zu starten. Aus irgendeinem Grund ds.setUrl("jdbc:mysql:mxj://");
funktioniert nicht
Ich habe dies versucht, aber diese Änderungen wieder die Verbindung-verweigert-Ausnahme. – Dmitry
auch nur ds.setUrl ("jdbc: mysql: mxj: //"); funktioniert nicht – Dmitry
Nun, ich denke (einverstanden mit Ihnen =)), dass ich versuche, eine Verbindung zu einem MySQL-Server herzustellen, der nicht eingebettet ist. Wie kann ich mein Programm verwenden, um das eingebettete Programm zu verwenden? – Dmitry