Voici une partie de mon programme:MysqlDataSource Invoque "Connexion refusée" 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();
...
où
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;
}
Comme vous pouvez le voir, j'essaie de se connecter à MySQL. En fait, MySQL est intégré dans mon programme Java. Lorsque je me connecte via DriverManager (en utilisant con = DriverManager.getConnection("jdbc:mysql:mxj://localhost", "root", "");
) tout fonctionne. Mais en utilisant un objet DataSource comme indiqué ci-dessus invoque une exception:
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)
Quelqu'un pourrait, s'il vous plaît, aidez-moi?
Certains tests vu que mon programme tente de se connecter à un serveur MySQL, qui n'est pas intégré (voir la réponse de BalusC). Si je démarre le serveur (non intégré) tout fonctionne. J'ai donc besoin d'un moyen de dire mon programme pour démarrer le local. Pour une raison quelconque, ds.setUrl("jdbc:mysql:mxj://");
ne fonctionne pas
J'ai essayé ceci mais ces changements ont fourni à nouveau l'exception de refus de connexion. – Dmitry
également juste ds.setUrl ("jdbc: mysql: mxj: //"); ne fonctionne pas – Dmitry
Eh bien, je pense (d'accord avec vous =)) que j'essaie de me connecter à un serveur MySQL qui n'est pas intégré. Comment puis-je faire mon programme pour utiliser celui intégré? – Dmitry