2017-02-18 21 views
0

私のラップトップにあるリモートMySQLデータベースと通信するアプリケーションを作成しました。私のローカルホストを使ってこのように接続すると、アプリケーションは正常に動作します。JavaFXアプリケーションからリモートのMySQLデータベースを接続します

public class DbConncetion { 
    public Connection Connect(){ 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/cms?autoReconnect=true&useSSL=false","root",""); 
      return con; 
     } 
     catch(Exception ex){ 
      System.out.println(ex);  
     } 
     return null; 
     } 

} 

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
java.lang.NullPointerException 

が、私はこのフォーラムに多くのことを見て、私は何も見つかりませんでした:私の代わりに私のパブリックIP ADDRESを使用する場合でも、「localhost」を、アプリがスローされます。私は、ユーザーを作成し、そのように私のXAMPPのMySQLに彼にすべての権限を与える:

This is pic from there

私はルータを設定するが、私はわからないんだけど、それは正しいです: This is pic from there 私が行くところ誰もが、私に言ったことができます違う ?事前に 感謝:)

そして、これは完全なスタックトレースです:あなたはMySQLのユーザ設定でアプリケーションのIPアドレスを許可する必要があります トン

com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2088) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at DBconnection.DbConncetion.Connect(DbConncetion.java:24) 
    at javafxapplication1.Main1Controller.loadData(Main1Controller.java:208) 
    at javafxapplication1.Main1Controller.lambda$new$0(Main1Controller.java:232) 
    at com.sun.scenario.animation.shared.TimelineClipCore.visitKeyFrame(TimelineClipCore.java:239) 
    at com.sun.scenario.animation.shared.TimelineClipCore.playTo(TimelineClipCore.java:180) 
    at javafx.animation.Timeline.impl_playTo(Timeline.java:176) 
    at javafx.animation.AnimationAccessorImpl.playTo(AnimationAccessorImpl.java:39) 
    at com.sun.scenario.animation.shared.InfiniteClipEnvelope.timePulse(InfiniteClipEnvelope.java:110) 
    at javafx.animation.Animation.impl_timePulse(Animation.java:1102) 
    at javafx.animation.Animation$1.lambda$timePulse$25(Animation.java:186) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javafx.animation.Animation$1.timePulse(Animation.java:185) 
    at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:344) 
    at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:267) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:506) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:989) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2251) 
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2104) 
    ... 33 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:300) 
    ... 35 more 

Feb 18, 2017 2:23:03 PM DBconnection.DbConncetion Connect 
SEVERE: null 
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
    at com.mysql.jdbc.Util.getInstance(Util.java:408) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 
    at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2163) 
+0

データベースをpingして、ファイアウォールがブロックしていないかどうかを確認してください。 –

+0

どのくらい正確ですか?どのアドレスをpingするのですか? –

+0

この問題を公衆IPにするip –

答えて

0

は、あなたのPICであなたは、そのIPを許可するIPをマスクしていますアプリケーションサーバーのipでなければなりません。

DBホストの同じローカルネットワークからWebアプリケーションを実行する場合、DBホストのパブリックIPに接続することはできません。ルータは単にそれを行うことはできません。

ローカルテストでは、localhostを使用する必要があります。

アプリをデプロイするときは、公開する必要があります。

ところで、インターネットにmysql dbポートを公開するのは良い方法ではありません。

関連する問題