- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Corda 构建工作流程。我想使用 Hikari 连接池库来连接 MySql 数据库。我不想替换 Ledger H2 数据库。该数据库用于存储/检索一些信息,这些信息在分类帐中不需要。我无需 Hikari 即可连接到 MySql。但是,当我使用 Hikari 时,出现错误。java.lang.ClassNotFoundException:com.mysql.cj.jdbc.MysqlConnectionPoolDataSource
我已经测试了 Hikari 代码,作为独立的 jar 文件。效果很好。这是 corda 加载和运行 cordapps 目录中的 jar 文件的方式的组合,这导致了问题。因为类是 jar 的一部分。这似乎有点不对劲
我添加了 MySql 依赖项,与 https://docs.corda.net/cordapp-build-systems.html#setting-your-dependencies 中提到的内容一致。如果我不使用 Hikari,我也可以连接到 MySql DB。
我探索了 cordapp jar 。我可以看到 cordapp jar 中存在必需的 jar。
cordapp 的 Gradle 依赖项
dependencies {
testCompile "junit:junit:$junit_version"
// Corda dependencies.
cordaCompile "$corda_release_group:corda-core:$corda_release_version"
cordaRuntime "$corda_release_group:corda:$corda_release_version"
testCompile "$corda_release_group:corda-node-driver:$corda_release_version"
runtime "mysql:mysql-connector-java:8.0.11"
cordaCompile "com.zaxxer:HikariCP:2.5.1"
// CorDapp dependencies.
cordapp project(":contracts")
}
示例代码
public class DataSource {
private static final Logger logger = LoggerFactory.getLogger(DataSource.class);
private static HikariConfig config = new HikariConfig();
private static HikariDataSource ds;
static {
try {
logger.info("Connecting with connection pool datasource");
config.setDataSourceClassName("com.mysql.cj.jdbc.MysqlConnectionPoolDataSource");
config.addDataSourceProperty("useSSL", "false");
config.addDataSourceProperty("user", "username");
config.addDataSourceProperty("password", "password");
config.addDataSourceProperty("serverName", "localhost");
config.addDataSourceProperty("useSSL", "false");
config.addDataSourceProperty("port",Integer.parseInt("3306"));
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
config.addDataSourceProperty("requireSSL", "false");
config.addDataSourceProperty("serverTimezone", "UTC");
config.addDataSourceProperty("useServerPrepStmts", "true");
config.addDataSourceProperty("allowPublicKeyRetrieval", "true");
config.addDataSourceProperty("databaseName", "database");
config.setPoolName("Hikari-MySql Pool Name");
logger.error("-- Create Hikari Datasource with config {} --", config);
ds = new HikariDataSource(config);
} catch (Throwable t) {
logger.error("Error Occurred during Datasource Initializaiton", t);
throw t;
}
}
private DataSource() {
}
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
}
public class MySqlConnection {
static private final Logger logger = LoggerFactory.getLogger(MySqlConnection.class);
public Connection getMySqlConnection() {
Connection conn = null;
try {
conn = DataSource.getConnection();
logger.info("------------> Got conne :: " + conn);
} catch (SQLException e) {
logger.error("SQLException :: " + e);
}
return conn;
}
}
public class DataSourceTest {
static private final Logger logger = LoggerFactory.getLogger(DataSourceTest.class);
public static void main(String[] args) {
MySqlConnection mySqlConnection = new MySqlConnection();
Connection conn = null;
try {
conn = mySqlConnection.getMySqlConnection();
logger.info("------------> Got connection :: " + conn);
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("{some select statement}");
} catch (SQLException e) {
logger.error("SQLException :: " + e);
}
}
}
异常(exception):
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.MysqlConnectionPoolDataSource
at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:90) ~[HikariCP-2.5.1.jar:?]
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:314) ~[HikariCP-2.5.1.jar:?]
at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:108) ~[HikariCP-2.5.1.jar:?]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:99) ~[HikariCP-2.5.1.jar:?]
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:71) ~[HikariCP-2.5.1.jar:?]
如果我从 jar 内的主类运行代码,它就可以工作。但它不能在 cordapp 内部工作
最佳答案
在 MySQL 中为 HikariCP使用 setJdbcUrl
而不是 setDataSourceClassName
config.setJdbcUrl("jdbc:mysql://localhost:3306/simpsons");
The MySQL DataSource is known to be broken with respect to network timeout support. Use jdbcUrl configuration instead.
关于mysql - Cordapp-未找到 MySql ConnectionPoolDataSource 的 Hikari 连接池类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56687616/
我目前正在尝试使用由countfloyd从github构建的手动付款栏示例来运行此Corda-settler。这是他的仓库中的link。在终端上运行命令gradlew clean deployNode
目前在 v2 中,如果 CorDapp 引用模块 X,该模块对模块 Y 具有传递依赖关系,因此 Corda 使用 Y,如果 Corda 和 X 各自的 Y 版本不同,则可能发生潜在的版本冲突。一个例子
我有一个基于Corda的项目,其中包含几个CorDapp子项目。我一直在寻找将JaCoCo代码覆盖范围添加到该项目中的方法。我希望在所有子项目JaCoCo报告的汇总报告中绘制一个代码覆盖率报告。 要将
我尝试创建具有两类状态(我的意思是两种不同状态)的 cordapp,但我没有找到这种情况的任何示例。我编写了不同的 ClientRPC 变体,但在尝试创建第二个状态时仍然有错误。是否可以实现?有人可以
我已经发布了我的CorDapp (corda 合约、状态和流程)使用发布任务和命令在 .m2 目录中创建项目:./gradlew cleanpublish。 现在,当我进入我的服务项目(单独的 gra
在 Corda 中,我想创建几个不同版本的响应程序流,每个版本都由不同的节点使用。 为此,我了解我需要在单独的 CorDapp 中定义每个响应程序流。但是,它们也都需要通过 InitiatedBy 注
我正在构建一个需要多个 CorDapps 的应用程序;我们就叫他们 LibCorDapp 和 AppCorDapp , 其中 AppCorDapp 取决于 LibCorDapp (就像 CorDapp
在 Corda 中,我想创建几个不同版本的响应程序流,每个版本都由不同的节点使用。 为此,我了解我需要在单独的 CorDapp 中定义每个响应程序流。但是,它们也都需要通过 InitiatedBy 注
我正在尝试运行描述的示例 cordapp here 问题是,当我运行 gradlew.bat deployNodes 命令时,我无法部署节点。我反复收到以下错误: Node in Notary exi
构建 CordApp-example 我将以下错误标记为致命但构建正常: 梯度构建 :java-source:compileJava[Fatal Error] corda-confidential-i
我尝试测试“Hello, World!”教程示例并收到以下错误: No matching constructor found: - [arg0: Integer, arg1: Party]: miss
当我尝试为 cordapp-template 中的流程运行此测试时: @Test fun flowRecordTransactionInBothVaults() { val flow = IO
我正在尝试运行 Contract 的 corda-bootcamp 测试用例。我按照视频中给出的方式进行操作,但是当尝试运行契约(Contract)测试时 - 我收到错误 java.io.NotSer
和有什么区别 编译 corda编译 科尔应用 例如: dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotl
我一直在努力完成 Hello, World! Tutorial从V2.0开始,无法导入以下变量。 import static net.corda.docs.java.tutorial.hellowor
我看到多次调用路线/问题,不确定为什么会出现这样的行为 // initiate a flow using this route @GetMapping(value = "/issue"
当第一次使用 Kotlin-source 运行 corDapp(corDapp-example) 时,IntelliJ 会抛出这个错误——“在模块‘cordapp-example’中找不到错误类‘co
我们创建了一个应用程序: 2 个节点 + 1 个公证人 2 个 Web 应用程序(每个节点一个) Corda 版本为 3.2 CordApp 具有: 第一个流程,在输入中接收对象列表,用于创建状态列表
我正在为 Corda 构建工作流程。我想使用 Hikari 连接池库来连接 MySql 数据库。我不想替换 Ledger H2 数据库。该数据库用于存储/检索一些信息,这些信息在分类帐中不需要。我无需
每当我运行运行示例 Cordapp-Java 时,都会收到此错误。我是 Corda 新手,正在向 Corda 文档学习。请帮帮我。 at net.corda.testing.driver.Driver
我是一名优秀的程序员,十分优秀!