【问题标题】:Hibernate datasource connection with JNDI使用 JNDI 的休眠数据源连接
【发布时间】:2023-04-04 18:13:02
【问题描述】:

我可以使用 JDBC 获得连接

OracleDataSource ds  = (OracleDataSource) Class.forName("oracle.jdbc.pool.OracleConnectionPoolDataSource").newInstance();
//...
Connection connection = ds.getConnection("USER", "PASSWORD");

但我不能使用 hibernate.connection.datasource 和 jni 为 Hibernate 做到这一点: 我尝试了不同的变体,但它不起作用。

    String var1 = "oracle.jdbc.pool.OracleConnectionPoolDataSource";
    String var2 = "java:/oracle.jdbc.pool.OracleConnectionPoolDataSource";
    String var3 = "java:/oracle/jdbc/pool/OracleConnectionPoolDataSource";
    String var4 = "java:/OracleConnectionPoolDataSource";
    configuration.setProperty("hibernate.connection.datasource",var1);

所有变体在尝试构建 SessionFactory 时都会抛出异常:

 private static SessionFactory createSessionFactory(Configuration configuration) {
    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
    builder.applySettings(configuration.getProperties());
    ServiceRegistry serviceRegistry = builder.build();
    return configuration.buildSessionFactory(serviceRegistry);
}

这样的例外:

  Exception in thread "main" org.hibernate.engine.jndi.JndiException: Error parsing JNDI name [oracle.jdbc.pool.OracleConnectionPoolDataSource]

它的maven依赖:

<dependency>
        <groupId>local.ora9iDriver</groupId>
        <artifactId>ora9iDriver</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>C:/Users/micah/.m2/repository/local/ora9iDriver/oraDriver/1.0/ora9i.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>9.0.2.0.0</version>
    </dependency>

【问题讨论】:

  • 您是否指定了数据源?如果是,你在哪里做的?
  • 我想我是在 maven 依赖中做到的。我想我做到了,因为我可以使用 JDBC 获得连接。
  • 我可以获取 DataSource 类的名称并创建它的实例。
  • 使用 JNI 时,需要在某处创建变量。到目前为止,您做了什么告诉 maven 您将使用依赖项进行 Oracle JDBC 连接。你让它与Class.forName(...) 一起工作的事实意味着依赖关系很好。现在,您需要在应用程序服务器上的某处注册您的 JNI 名称,以便能够检索它。另一种解决方案是创建一个外部属性文件以获取数据库服务器的 URL,并将其与 Class.forName(...)
  • DamCx,你能帮我举一个注册 JNI 名称的例子,并为 hibernate.connection.datasource 设置提供字符串参考吗?

标签: java oracle hibernate jndi


【解决方案1】:

您可以查看UCP with Hibernate blog 并获得一些指点吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2016-02-02
    相关资源
    最近更新 更多