2015-11-19 3 views
-1

Im пытается использовать HikariCP с базой данных mariaDB, но я получаю следующую ошибку, когда я пытаюсь инициализировать.Ошибка подключения HikariCP

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
at com.zaxxer.hikari.pool.HikariPool.initializeConnections(HikariPool.java:581) ~[Dubilets-1.0-SNAPSHOT.jar:?] 
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:152) ~[Dubilets-1.0-SNAPSHOT.jar:?] 
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:73) ~[Dubilets-1.0-SNAPSHOT.jar:?] 
at eu.elraro.dubilets.storage.Database.<init>(Database.java:69) [Dubilets-1.0-SNAPSHOT.jar:?] 
at eu.elraro.dubilets.storage.MariaDBDatabase.<init>(MariaDBDatabase.java:18) [Dubilets-1.0-SNAPSHOT.jar:?] 
at eu.elraro.dubilets.Dubilets.realizaConexion(Dubilets.java:168) [Dubilets-1.0-SNAPSHOT.jar:?] 
at eu.elraro.dubilets.Dubilets.inicializaVariables(Dubilets.java:164) [Dubilets-1.0-SNAPSHOT.jar:?] 
at eu.elraro.dubilets.Dubilets.onEnable(Dubilets.java:69) [Dubilets-1.0-SNAPSHOT.jar:?] 
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:524) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f] 
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_66] 

Вызванный: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Связь отказов ссылка

Мой MariaDBDatabase класс:

public class MariaDBDatabase extends Database { 

/* 
* Construct a MySQL database instance. 
* 
* @param host  Host/IP of the MySQL database. 
* @param port  Port of the MySQL database. 
* @param database Database wanted to be access. 
* @param username Username to be authenticated with. 
* @param password Password for the user authentication. 
* @param plugin Plugin for the schedulers to be assigned to. 
*/ 
public MariaDBDatabase(String host, int port, String database, String username, String password, JavaPlugin plugin) { 
    super("org.mariadb.jdbc.MySQLDataSource", "jdbc:mysql://" + host + ":" + port + "/" + database, username, password, plugin); 
} 

Мой класс База данных:

public abstract class Database { 

private String   jdbcURL; 
private HikariDataSource dataSource; 
private JavaPlugin  plugin; 

/** 
* Construct a database instance. 
* 
* @param className The class name used to get the driver. 
* @param jdbcURL A JDBC url to use for connecting. 
* @param username Username to connect with. 
* @param password Password to authenticate username. 
* @param plugin A plugin instance for the schedulers to be assigned to. 
*/ 
public Database(String className, String jdbcURL, String username, String password, JavaPlugin plugin) { 
    this.jdbcURL = jdbcURL; 
    this.plugin = plugin; 

    try { 
     Bukkit.getLogger().log(Level.INFO, "Initializing the connection pool ... "); 
     Class.forName(className); 
    } catch (ClassNotFoundException e) { 
     Bukkit.getLogger().log(Level.SEVERE, "Exception when trying to initialize the connection pool",e); 
     return; 
    } 

    HikariConfig config = new HikariConfig(); 

    config.setDriverClassName(className); 
    config.setJdbcUrl(jdbcURL); 

    config.setUsername(username); 
    config.setPassword(password); 

    //config.setLeakDetectionThreshold(10000); 
    //config.setMaximumPoolSize(10); 

    config.setMaximumPoolSize(5); 
    config.setConnectionTestQuery("SELECT 1"); 
    config.setPoolName("HikariCP"); 

    try { 
     dataSource = new HikariDataSource(config); 
     Bukkit.getLogger().log(Level.INFO, "Connection pool initialized successfully."); 
    } catch (Exception e) { 
     Bukkit.getLogger().log(Level.SEVERE, "Exception when trying to initialize the connection pool",e); 
    } 
} 

/** 
* Connects the data pool to the database. 
*/ 
public boolean connect() { 
    return isConnected(); 
} 

/** 
* Disconnects (shutdown) the data pool and all connections. 
*/ 
public void disconnect() { 
    dataSource.shutdown(); 
} 

/** 
* Query the database and return a cached result. 
* 
* @param query The statement to be queried. 
* @return  Cached rowset returned from query. 
*/ 
public CachedRowSet query(final PreparedStatement preparedStatement) { 
    CachedRowSet rowSet = null; 

    if (isConnected()) { 
     try { 
      ExecutorService exe = Executors.newCachedThreadPool(); 

      Future<CachedRowSet> future = exe.submit(new Callable<CachedRowSet>() { 
       public CachedRowSet call() { 
        try { 
         ResultSet resultSet = preparedStatement.executeQuery(); 

         CachedRowSet cachedRowSet = new CachedRowSetImpl(); 
         cachedRowSet.populate(resultSet); 
         resultSet.close(); 

         preparedStatement.getConnection().close(); 

         if (cachedRowSet.next()) { 
          return cachedRowSet; 
         } 
        } catch (SQLException e) { 
         e.printStackTrace(); 
        } 

        return null; 
       } 
      }); 

      if (future.get() != null) { 
       rowSet = future.get(); 
      } 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } catch (ExecutionException e) { 
      e.printStackTrace(); 
     } 
    } 

    return rowSet; 
} 

/** 
* Execute a query 
* 
* @param preparedStatement query to be executed. 
*/ 
public void execute(final PreparedStatement preparedStatement) { 
    if (isConnected()) { 
     Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { 
      public void run() { 
       try { 
        preparedStatement.execute(); 

        preparedStatement.getConnection().close(); 
       } catch (SQLException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 
} 

/** 
* Prepare a statement 
* 
* @param query Query to be prepared. 
* @param vars Variables to be replaced from ?. 
* @return  a prepared statement. 
*/ 
public PreparedStatement prepareStatement(String query, Object... vars) { 
    try { 
     PreparedStatement preparedStatement = getConnection().prepareStatement(query); 

     int x = 0; 

     if (query.contains("?") && vars.length != 0) { 
      for (Object var : vars) { 
       x++; 
       if (var instanceof String) { 
        preparedStatement.setString(x, (String) var); 
       } else { 
        preparedStatement.setInt(x, (Integer) var); 
       } 
      } 
     } 

     return preparedStatement; 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

/** 
* Get a connection from the data pool 
* 
* @return a connection. 
*/ 
public Connection getConnection() { 
    try { 
     return dataSource.getConnection(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

/** 
* Check if the data pool is connected. 
* 
* @return connected Whether the data pool is connected or not. 
*/ 
public boolean isConnected() { 
    try { 
     dataSource.getConnection(); 
    } catch (SQLException e) { 
     return false; 
    } 

    return true; 
} 

My pom.xml

<project 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>eu.elraro.dubilets</groupId> 
<artifactId>Dubilets</artifactId> 
<version>1.0-SNAPSHOT</version> 
<repositories> 
    <repository> 
     <id>bungeecord-repo</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
    </repository> 
</repositories> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <createDependencyReducedPom>false</createDependencyReducedPom> 
       <artifactSet> 
        <includes> 
         <include>org.slf4j:*</include> 
         <include>com.zaxxer:*</include> 
         <include>org.mariadb.jdbc:*</include> 
         <include>org.javassist:javassist</include> 
        </includes> 
       </artifactSet> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <!--Spigot API --> 
    <dependency> 
     <groupId>org.spigotmc</groupId> 
     <artifactId>spigot-api</artifactId> 
     <version>1.8.8-R0.1-SNAPSHOT</version> 
     <scope>provided</scope> 
    </dependency> 
    <!--Bukkit API --> 
    <dependency> 
     <groupId>org.bukkit</groupId> 
     <artifactId>bukkit</artifactId> 
     <version>1.8.8-R0.1-SNAPSHOT</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.zaxxer</groupId> 
     <artifactId>HikariCP</artifactId> 
     <version>2.4.1</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mariadb.jdbc</groupId> 
     <artifactId>mariadb-java-client</artifactId> 
     <version>1.2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>com.gmail.filoghost</groupId> 
     <artifactId>holographic-displays-api</artifactId> 
     <version>2.1.7</version> 
     <scope>system</scope> 
     <systemPath>${basedir}/lib/HolographicDisplaysAPI_v2.1.7.jar</systemPath> 
    </dependency> 
</dependencies> 

ответ

0

Не устанавливайте как dataSourceClassname и JDBCURL ... они взаимно исключают друг друга. Для простоты я рекомендую jdbcUrl.

Смежные вопросы