【问题标题】:Invalid Oracle URL specified with Sniffy使用 Sniffy 指定的 Oracle URL 无效
【发布时间】:2016-08-04 07:55:49
【问题描述】:

我正在尝试将 Sniffy 配置为与 Oracle 一起使用。我使用 Glassfish 作为应用服务器,使用 JPA 2.0,并使用 EclipseLink 作为提供程序。

当 EclipseLink 尝试分配连接时,它失败说指定的 Oracle URL 无效,因为"sniffer:" 前缀,我猜:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed;
nested exception is javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because:  Invalid Oracle URL specified
Error Code: 0

这就是我在 domain.xml 文件中配置池的方式:

<jdbc-resource pool-name="poolGI" object-type="system-all" jndi-name="jdbc/poolGI" />
<jdbc-connection-pool driver-classname="io.sniffy.MockDriver" name="poolGI" res-type="javax.sql.DataSource" datasource-classname="oracle.jdbc.pool.OracleDataSource">
    <property name="URL" value="sniffer:jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=service)))"></property>
    <property name="user" value="user"></property>
    <property name="password" value="password"></property>
</jdbc-connection-pool>

【问题讨论】:

  • “它说”?怎么说?发布该消息的 EXCEPTION + STACK TRACE,然后人们就知道它来自哪里!
  • 堆栈跟踪确实提供了信息。
  • 恐怕日志中就只有这些了

标签: java oracle jpa eclipselink sniffy


【解决方案1】:

Sniffy 开发者在这里。

看起来oracle.jdbc.pool.OracleDataSource 忽略了driver-classname 属性并隐式使用oracle.jdbc.driver.OracleDriver。 OracleDriver 不知道 sniffer: 架构,因此例外。

您需要切换到另一个数据源才能使用 Sniffy。 例如Hikari Connection Pool

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    相关资源
    最近更新 更多