Java 使用slick和hikariCP的SSL连接

Java 使用slick和hikariCP的SSL连接,java,mysql,scala,slick,hikaricp,Java,Mysql,Scala,Slick,Hikaricp,我正在尝试使用Slick和HikariCP设置SSL加密。以下是: mysqldb = { dataSourceClass = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource" initializationFailFast = false properties { user = "ssl_user" password = "root" databaseName = "ssl_db" serverName =

我正在尝试使用Slick和HikariCP设置SSL加密。以下是:

mysqldb = {
  dataSourceClass = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
  initializationFailFast = false
  properties {
    user = "ssl_user"
    password = "root"
    databaseName = "ssl_db"
    serverName = "localhost"
    useUnicode = true
    characterEncoding = UTF-8
    useSSL="true"
    javax.net.ssl.trustStore="/home/ec2-user/rds-combined-ca-bundle.pem"
    javax.net.ssl.trustStorePassword=""

  }
  connectionTimeout = 10000
  numThreads = 10
  maxConnections = 10
  minConnections = 4
  queueSize =10000
}
创建连接的代码:

  import slick.jdbc.MySQLProfile.api._

  val connectionPool = Database.forConfig(s"mysqldb")
  val session = connectionPool.createSession()
但是,这是一个错误:

Exception in thread "main" java.lang.RuntimeException: Property javax does not exist on target class com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    at com.zaxxer.hikari.util.PropertyElf.setProperty(PropertyElf.java:131)
    at com.zaxxer.hikari.util.PropertyElf.lambda$setTargetFromProperties$0(PropertyElf.java:57)
    at java.util.Hashtable.forEach(Hashtable.java:879)
    at com.zaxxer.hikari.util.PropertyElf.setTargetFromProperties(PropertyElf.java:52)
    at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:333)
    at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108)
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
    at slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:92)
    at slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:21)
    at slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:47)
    at slick.jdbc.JdbcBackend$DatabaseFactoryDef.forConfig(JdbcBackend.scala:341)
    at slick.jdbc.JdbcBackend$DatabaseFactoryDef.forConfig$(JdbcBackend.scala:337)
    at slick.jdbc.JdbcBackend$$anon$1.forConfig(JdbcBackend.scala:32)
    at com.techmonad.SSLConnection$.delayedEndpoint$com$techmonad$SSLConnection$1(SSLConnection.scala:7)
    at com.techmonad.SSLConnection$delayedInit$body.apply(SSLConnection.scala:3)
    at scala.Function0.apply$mcV$sp(Function0.scala:39)
    at scala.Function0.apply$mcV$sp$(Function0.scala:39)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
    at scala.App.$anonfun$main$1(App.scala:73)
    at scala.App.$anonfun$main$1$adapted(App.scala:73)
    at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:553)
    at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:551)
    at scala.collection.AbstractIterable.foreach(Iterable.scala:921)
    at scala.App.main(App.scala:73)
    at scala.App.main$(App.scala:71)
线程“main”java.lang.RuntimeException中的异常:目标类com.mysql.jdbc.jdbc2.optional.MysqlDataSource上不存在属性javax 位于com.zaxxer.hikari.util.PropertyElf.setProperty(PropertyElf.java:131) 位于com.zaxxer.hikari.util.PropertyElf.lambda$setTargetFromProperties$0(PropertyElf.java:57) 位于java.util.Hashtable.forEach(Hashtable.java:879) 位于com.zaxxer.hikari.util.PropertyElf.setTargetFromProperties(PropertyElf.java:52) 位于com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:333) 位于com.zaxxer.hikari.pool.PoolBase。(PoolBase.java:109) 在com.zaxxer.hikari.pool.HikariPool上。(HikariPool.java:108) 在com.zaxxer.hikari.HikariDataSource。(HikariDataSource.java:81) 位于slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:92) 位于slick.jdbc.hikaricp.HikariCPJdbcDataSource$.forConfig(HikariCPJdbcDataSource.scala:21) 位于slick.jdbc.JdbcDataSource$.forConfig(JdbcDataSource.scala:47) 在slick.jdbc.JdbcBackend$DatabaseFactoryDef.forConfig(JdbcBackend.scala:341)上 在slick.jdbc.jdbcbbackend$DatabaseFactoryDef.forConfig$(jdbcbbackend.scala:337) 在slick.jdbc.JdbcBackend$$anon$1.forConfig(JdbcBackend.scala:32)上 在com.techmonad.SSLConnection$.delayedEndpoint$com$techmonad$SSLConnection$1(SSLConnection.scala:7) 在com.techmonad.SSLConnection$delayedInit$body.apply上(SSLConnection.scala:3) 在scala.Function0.apply$mcV$sp处(Function0.scala:39) 在scala.Function0.apply$mcV$sp$(Function0.scala:39) 在scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17) 在scala.App.$anonfun$main$1(App.scala:73) 在scala.App.$anonfun$main$1$adapted(App.scala:73) 位于scala.collection.IterableOnceOps.foreach(IterableOnce.scala:553) 位于scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:551) 位于scala.collection.AbstractIterable.foreach(Iterable.scala:921) 位于scala.App.main(App.scala:73) 位于scala.App.main$(App.scala:71)
任何帮助都将不胜感激。

sslMode
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
不支持的配置属性。根据文档,它确实支持
usesl=true/false
。默认情况下,MySQL 5.6.26+或5.7.6+的设置为true,否则为false

您可以在此处找到所有与安全相关的配置参数:

如果您对验证MySQL服务器的证书感兴趣,请查看
verifyServerCertificate
属性的说明


还有一个页面详细介绍了如何使用jdbc2驱动程序设置到MySQL的安全连接:

SLICK不支持其他参数,如javax.net.ssl.trustStore=“/home/ec2 user/rds combined ca bundle.pem”javax.net.ssl.trustStorePassword=“”