Nous programmons un logiciel de calcul économique. Nous utilisons Java 6, le framework d'application Swing, MySQL 5.1, JDBC et Hibernate (JDBC est juste pour un test de connexion initial). Nous avons déployé cette application sur une machine Windows XP. Tant qu'un utilisateur avec des privilèges d'administrateur exécute l'application, cela fonctionne très bien. Si un utilisateur avec des droits restreints essaie de l'exécuter, nous obtenons une exception.Obtenir une exception CommunicationsException dans le pilote MySQL quand vous n'êtes pas connecté en tant qu'administrateur
Nous avons essayé de désactiver le pare-feu Windows et nous avons rencontré le même problème (l'administrateur a également activé le pare-feu!). Ensuite, nous avons essayé de reconstruire la situation sur l'un de nos ordinateurs et nous n'avons pas été en mesure de le faire, l'application fonctionne très bien.
Notre recherche sur internet a échoué, car dans ce cas, c'est une situation très rare. Ci-dessous le code où l'exception est levée et la pile-trace.
/**
* Testet ob eine Verbindung zu der Datenbank mit den Werten aus der Properties-Datei
* möglich ist.
* @return true, falls die Verbindung zustande kommt
*/
public boolean testConnection(Properties props) {
Connection conn = null;
try {
Class.forName(props.getProperty(SystemParameterModel.HIBERNATE_CONNECTION_DRIVER_CLASS_KEY)).newInstance();
System.out.println("Driver: " + props.getProperty(HIBERNATE_CONNECTION_DRIVER_CLASS_KEY));
System.out.println("URL: " + props.getProperty(HIBERNATE_CONNECTION_URL));
System.out.println("User: " + props.getProperty(HIBERNATE_CONNECTION_USER_KEY));
System.out.println("Pass: " + props.getProperty(HIBERNATE_CONNECTION_PASSWORD_KEY));
conn = DriverManager.getConnection(
props.getProperty(HIBERNATE_CONNECTION_URL),
props.getProperty(HIBERNATE_CONNECTION_USER_KEY),
props.getProperty(HIBERNATE_CONNECTION_PASSWORD_KEY));
} catch (SQLException ex) {
System.out.println(ex.getLocalizedMessage());
ex.printStackTrace();
return false;
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
ex.printStackTrace();
return false;
}
try {
conn.close();
} catch (SQLException ex) {
System.out.println("whateves..." + ex.getMessage());
}
return true;
}
Et le Stacktrace:
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(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.sgp.mybe.calc.model.SystemParameterModel.testConnection(SystemParameterModel.java:153)
at com.sgp.mybe.calc.dao.InitEntityManagerFactory.loadEMF(InitEntityManagerFactory.java:61)
at com.sgp.mybe.calc.dao.InitEntityManagerFactory.<clinit>(InitEntityManagerFactory.java:31)
at com.sgp.mybe.calc.dao.DaoFactory.getAttributeDao(DaoFactory.java:18)
at com.sgp.mybe.calc.model.ValidationAttributeModel.<init>(ValidationAttributeModel.java:24)
at com.sgp.mybe.calc.model.CalcDetailModel.<init>(CalcDetailModel.java:36)
at com.sgp.mybe.calc.main.MybeCalcApplication.startup(MybeCalcApplication.java:46)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.net.SocketException: Malformed reply from SOCKS server
at java.net.SocksSocketImpl.readSocksReply(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:292)
... 29 more
Les propriétés sont justes, il ne fait aucun doute.
J'espère que quelqu'un peut m'aider, parce que ce problème me rend fou. Je vous remercie!
Merci, mais notre problème est un peu différent. En attendant, nous avons essayé de nous connecter à la base de données, connecté en tant qu'utilisateur, en utilisant le client MySQL-PKLite gratuit et cela fonctionne. Donc, je suppose que MySQL et l'IP-Binding et tout devrait bien fonctionner. –