을 "연결이 거부 됨"내 프로그램에서 일부입니다 : 당신이 볼 수 있듯이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은 내 자바 프로그램에 내장되어 있습니다. (con = DriverManager.getConnection("jdbc:mysql:mxj://localhost", "root", "");
을 사용하여) DriverManager를 통해 연결할 때 모든 것이 작동합니다. 그러나 위에 표시된 것처럼 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://");
이 작동하지 않습니다.
나는 이것을 시도했지만 이러한 변경은 connection-refused-exception을 다시 제공했다. – Dmitry
또한 ds.setUrl ("jdbc : mysql : mxj : //"); does not work – Dmitry
글쎄, 내 생각에 (당신과 합의했다) =) 임베디드되지 않은 MySQL 서버에 연결하려고한다. 내 프로그램이 임베디드 프로그램을 사용하도록하려면 어떻게해야합니까? – Dmitry