這裏是我的計劃的一部分:MysqlDataSource調用 「連接被拒絕」 異常
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();
...
其中
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;
}
正如你所看到的,我嘗試連接到MySQL。實際上,MySQL嵌入在我的java程序中。 當我通過DriverManager連接時(使用con = DriverManager.getConnection("jdbc:mysql:mxj://localhost", "root", "");
)一切正常。但是使用如上所示的DataSource對象調用異常:
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)
請問有人能幫我嗎?
一些測試表明我的程序試圖連接到未嵌入的MySQL服務器(請參閱BalusC的答案)。如果我啓動服務器(不嵌入),一切正常。所以我需要一種方式來說我的程序啓動本地的程序。由於某種原因,ds.setUrl("jdbc:mysql:mxj://");
不起作用
我已經嘗試過,但這些更改再次提供了連接拒絕異常。 – Dmitry 2010-12-11 17:57:27
也只是ds.setUrl(「jdbc:mysql:mxj://」);不起作用 – Dmitry 2010-12-11 18:00:35
嗯,我想(同意你=)),我試圖連接到一個未嵌入的MySQL服務器。我如何讓我的程序使用嵌入式程序? – Dmitry 2010-12-11 18:04:00