реализация hikaricp с microsoft sql server [закрыто]

Я пытаюсь выяснить лучший подход для использования hikaricp (JDBC connection pool) с microsoft sql server. Из того, что я видел, рекомендуется параметр DataSource (как и в случае большинства пулов соединений, которые я видел). Однако я не смог правильно сформировать соединение с базой данных sql server на основе примеров, которые я видел, - интересно, есть ли у кого-нибудь рабочий пример, к которому я могу подключить свою информацию о БД.

1 ответов


убедитесь, что вы сделали следующие шаги:

  1. при использовании maven убедитесь, что у вас есть следующая зависимость в файле pom (при использовании JDK7 / 8):

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>2.0.1</version>
        <scope>compile</scope>
    </dependency>
    

    если вы используете другой инструмент сборки, измените URL ресурса соответствующим образом (или просто загрузите файл jar из репозитория maven, если для вас нет другого варианта).

    Я считаю, что вам нужен sqljdbc4.файл jar в вашем файле pom также (я могу ошибаться в этом требование, чтобы я мог обновить сообщение после подтверждения)

  2. импортируйте следующее в свой класс вместе с другими ссылками:

    import com.zaxxer.hikari.HikariConfig;
    import com.zaxxer.hikari.HikariDataSource;
    
  3. добавьте следующие конечные свойства (или просто загрузите их из файла конфигурации):

     private final String url = "jdbc:sqlserver://";
     private final String serverName= "xxx.xxx.xxx.xxx";   
     private final int portNumber = 1433;
     private final String databaseName= "ACTUALDBNAME";    
    
     private final String userName = "ACTUALUSERNAME"; 
     private final String password = "ACTUALPASSWORD";
    
     private final String selectMethod = "cursor"; 
    

    вы можете получить URL-адрес подключения такой:

     public String getConnectionUrl() {
          return url+this.serverName+":"+this.portNumber+";databaseName="+this.databaseName+";user="+this.userName+";password="+this.password+";selectMethod="+this.selectMethod+";";
    

    }

Затем следующее должно дать вам Источник данных, который вам нужен, чтобы получить соединение:

 public DataSource getDataSource() {
      final HikariDataSource ds = new HikariDataSource(); 
      ds.setMaximumPoolSize(10);
      ds.setDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerDataSource");
     // ds.addDataSourceProperty("serverName", this.serverName);
     //ds.addDataSourceProperty("databaseName", this.databaseName);
      ds.addDataSourceProperty("url", this.getConnectionUrl());
      ds.addDataSourceProperty("user", this.userName);
      ds.addDataSourceProperty("password", this.password);
      ds.setInitializationFailFast(true);
      ds.setPoolName("wmHikariCp");
      return ds;
   }

или

public DataSource getDataSource() {
     HikariConfig config = new HikariConfig();
     config.setMaximumPoolSize(10);
     config.setDataSourceClassName("com.microsoft.sqlserver.jdbc.SQLServerDataSource");
     config.addDataSourceProperty("serverName", this.serverName);
     config.addDataSourceProperty("port", this.portNumber);
     config.addDataSourceProperty("databaseName", this.databaseName);
     config.addDataSourceProperty("user", this.userName);
     config.addDataSourceProperty("password", this.password);

     return new HikariDataSource(config);  //pass in HikariConfig to HikariDataSource
}

предпочтительным маршрутом является передача hikariconfig конструктору hikaridatasource. Вы также можете загрузить config из файла свойств.

затем получите соединение из источника данных:

Connection con = null;
con = ds.getConnection();  //where ds is the dataSource retrieved from step 5