WSO2 流处理器,将数据库与 Oracle DB 集成,它不起作用

Posted

技术标签:

【中文标题】WSO2 流处理器,将数据库与 Oracle DB 集成,它不起作用【英文标题】:WSO2 Stream Processor , Integrating Database with Oracle DB , It does not work 【发布时间】:2018-08-17 13:41:59 【问题描述】:

我尝试配置 Oracle 连接,但无法正常工作。

我在 WSO 网站上找到了如何从以前的 WSO 服务器(数据分析服务器)配置 Oracle 连接的信息

https://docs.wso2.com/display/DAS3xx/Setting+up+Oracle#SettingupOracle-SettinguptheJDBCdriver

但我没有找到流处理器。我只找到了可以连接到 mysql DB 的人。 https://docs.wso2.com/display/SP410/Integrating+Datastores 我用 Mysql DB 尝试过,并且可以工作。

但我尝试使用这两个信息来尝试配置 Oracle db。

1) 我下载ojdbc jar Drivers https://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html

2) 将所有jar文件复制到/lib。

3) 尝试配置/conf/editor/deployment.yaml

wso2.datasources:数据源:

名称:Test_DB 描述:Oracle 数据源 定义: 类型:关系型数据库 配置: jdbcUrl: 'jdbc:oracle:thin:@server_name:1521/instance_name' 用户名:用户 密码:密码 driverClassName:oracle.jdbc.driver.OracleDriver 最大池大小:50 空闲超时:60000 连接测试查询:选择 1 验证超时:30000 isAutoCommit: 假

当启动 editor.sh 时显示连接错误。

[XXXX-XX-XX XX:XX:XXX] 错误 org.wso2.carbon.kernel.internal.startupresolver.StartupComponentManager - 调用组件的 onAllRequiredCapabilitiesAvailable 时发生运行时异常 carbon-datasource-service java.lang.RuntimeException:无法获取 驱动程序实例 jdbcUrl=jdbc:oracle:thin:@server_name:1521/instance_name 在 com.zaxxer.hikari.util.DriverDataSource.(DriverDataSource.java:88) 在 com.zaxxer.hikari.pool.PoolElf.initializeDataSource(PoolElf.java:157) 在 com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:113) 在 com.zaxxer.hikari.HikariDataSource.(HikariDataSource.java:73) 在 org.wso2.carbon.datasource.rdbms.hikari.HikariRDBMSDataSource.getDataSource(HikariRDBMSDataSource.java:56) 在 org.wso2.carbon.datasource.rdbms.hikari.HikariDataSourceReader.createDataSource(HikariDataSourceReader.java:74) 在 org.wso2.carbon.datasource.core.DataSourceBuilder.buildDataSourceObject(DataSourceBuilder.java:79) 在 org.wso2.carbon.datasource.core.DataSourceBuilder.buildDataSourceObject(DataSourceBuilder.java:60) 在 org.wso2.carbon.datasource.core.DataSourceBuilder.buildCarbonDataSource(DataSourceBuilder.java:44) 在 org.wso2.carbon.datasource.core.DataSourceManager.initDataSources(DataSourceManager.java:153) 在 org.wso2.carbon.datasource.core.internal.DataSourceListenerComponent.onAllRequiredCapabilitiesAvailable(DataSourceListenerComponent.java:125) 在 org.wso2.carbon.kernel.internal.startupresolver.StartupComponentManager.lambda$notifySatisfiableComponents$7(StartupComponentManager.java:266) 在 java.util.ArrayList.forEach(ArrayList.java:1257) 在 org.wso2.carbon.kernel.internal.startupresolver.StartupComponentManager.notifySatisfiableComponents(StartupComponentManager.java:252) 在 org.wso2.carbon.kernel.internal.startupresolver.StartupOrderResolver$1.run(StartupOrderResolver.java:204) 在 java.util.TimerThread.mainLoop(Timer.java:555) 在 java.util.TimerThread.run(Timer.java:505) 引起:java.sql.SQLException:没有合适的驱动程序 在 java.sql.DriverManager.getDriver(DriverManager.java:315) 在 com.zaxxer.hikari.util.DriverDataSource.(DriverDataSource.java:81)

服务器正常工作我有远程和本地连接。

有人知道我可以如何配置它。

谢谢!

【问题讨论】:

【参考方案1】:

您能检查一下 Oracle 数据库的以下配置吗?

name: WSO2_TEST_DB
description: The datasource used for dashboard feature
jndiConfig:
  name: jdbc/WSO2_TEST_DB
  useJndiReference: true
definition:
  type: RDBMS
  configuration:
    jdbcUrl: 'jdbc:oracle:thin:@localhost:1521:XE'
    username: WSO2_TEST_DB
    password: root
    driverClassName: oracle.jdbc.driver.OracleDriver
    maxPoolSize: 50
    idleTimeout: 60000
    connectionTestQuery: SELECT 1
    validationTimeout: 30000
    isAutoCommit: false

重要提示:

有两种设置方法。如果您有 SID,请使用此(旧)格式:

jdbc:oracle:thin:@[HOST][:PORT]:SID

如果您有 Oracle 服务名称,请使用此(较新)格式:

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

Oracle驱动需要转换成OSGI(使用jartobundle.sh)才能放入SP_HOME/lib目录:

例如 sh SP_HOME/bin/jartobundle.sh ojdbc6.jar lib/

【讨论】:

我错过了向 OSGI 的转换...谢谢!

以上是关于WSO2 流处理器,将数据库与 Oracle DB 集成,它不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CDC 与 WSO2 Streaming Integrator 和 Postgres DB

套接字或使用 wso2 实时接收和处理数据

带有 Analytics 的 WSO2 API 管理器:stats-datasources.xml' - 系统数据源 WSO2AM_STATS_DB 无法更新

Oracle 11g DB 返回流而不是字符串

在将消息发布到目标队列时,WSO2 EI-6.1.1与IBM MQ8集成问题

wso2 无法保存 JSON 有效负载。找到无效的输入流