我真的需要你的帮助,因为我无法理解为什么在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();