如何使用HikariCP和Wildfly 10连接MySQL数据库?

时间:2017-02-04 16:03:53

标签: java wildfly-10 hikaricp

我真的需要你的帮助,因为我无法理解为什么在Wildfly-10.1.0.Final部署的应用程序中使用Hikari连接到数据库是如此困难。我创建了数据源 java:/ mydbname_v2 ,Wildfly可以使用它的数据连接到数据库。我也可以使用Sequel Pro连接数据库,所以很明显问题就是这个Hikari连接代码。

BTW,行 System.out.println(“DataSource:”+ ds); 为ds对象打印null ...

这是如此基本,我缺少什么?这是我的代码,顺便说一句(我尝试了下面的三个“setDataSouce”方法):

public static Connection getConnection() {
    HikariConfig config = new HikariConfig();
    //config.setDataSourceJNDI( "java:/mydbname_v2" );
    //config.setDataSourceClassName( "com.mysql.jdbc.jdbc2.optional.MysqlDataSource" );
    config.setDriverClassName( "com.mysql.jdbc.Driver" );
    config.setJdbcUrl("jdbc:mysql://myhost.com:3306/mydbname_v2");
    config.setUsername("myuser");
    config.setPassword("mypassword");

    config.addDataSourceProperty("cachePrepStmts", "true");
    config.addDataSourceProperty("prepStmtCacheSize", "250");
    config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
    try {
        DataSource ds = config.getDataSource();
        System.out.println( "DataSource: " + ds );
        System.out.println( "DataSource - string: " + ds.toString() );
        if ( ds == null ) {
            return null;
        }
        return config.getDataSource().getConnection();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();            
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

由于

我使用以下方法解决了问题:

        Context ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("java:/mydbname_v2");    

        HikariConfig config = new HikariConfig();
        config.setDataSource( ds );
        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");      

        return config.getDataSource().getConnection();

0 个答案:

没有答案