Spring boot app 错误日志显示尝试在 FanManager 中配置 ONS 失败,但 oracle.ons.NoServersAvailable

2022-09-03 09:40:23

我正在运行带有和驱动程序的Spring Boot应用程序()。v2.2.0-RELEASEspring-boot-starter-jdbccom.oracle.ojdbc:ojdbc8:19.3.0.0

当我尝试使用查询数据库时,我在控制台日志中看到以下错误:JdbcTemplate

2019-11-15 14:07:51.154 ERROR 23436 --- [main] oracle.simplefan.FanManager: attempt to configure ONS in FanManager failed with oracle.ons.NoServersAvailable: Subscription time out

我不知道为什么我会看到这个错误,即使数据库连接成功并且查询结果是正确的。

有没有办法摆脱这个错误或只是忽略?


答案 1

您可以在启动应用程序时设置系统属性:

-Doracle.jdbc.fanEnabled=false

或者从类路径中删除 simplefan 和 ons jar。使用Maven,它可能看起来像这样:

<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc10</artifactId>
  <version>${oracle.version}</version>
  <exclusions>
    <exclusion>
      <groupId>com.oracle.database.ha</groupId>
      <artifactId>simplefan</artifactId>
    </exclusion>
    <exclusion>
      <groupId>com.oracle.database.ha</groupId>
      <artifactId>ons</artifactId>
    </exclusion>
  </exclusions>
</dependency>

有关更多详细信息,请参阅 Oracle 的 JDBC 开发人员指南“用于 FAN 事件支持的 Oracle JDBC 驱动程序的安装和配置”的第 29.3 节。


答案 2

对于删除带有maven Antoni答案的jars,如果jar的组ID不相同(例如不同的ojdbc版本),则可能不适用于您。您需要找到这些组 ID。例如,我使用ojdbc8,查看我的IDE中使用的库(这里的想法),我可以看到ons和simplefan的groupId(这里是com.oracle.jdbc)

Using the IDE to find the groupId of libraries

现在我只需要放置适当的 Id 进行排除(这里的例子是针对 ojdbc 8 的)

<dependency>
  <groupId>com.oracle.ojdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.oracle.ojdbc</groupId>
      <artifactId>simplefan</artifactId>
    </exclusion>
    <exclusion>
      <groupId>com.oracle.ojdbc</groupId>
      <artifactId>ons</artifactId>
    </exclusion>
  </exclusions>
</dependency>

推荐