【问题标题】:'The user must supply a JDBC connection' on weblogic restart'用户必须在 weblogic 重新启动时提供 JDBC 连接'
【发布时间】:2010-12-20 17:22:57
【问题描述】:

我正在使用 Weblogic 11。 在初始部署所有 JMS 配置、JDBC 配置(来自 XADS-jdbc.xml)和耳朵后一切正常。

但是 weblogic 重启后应用程序初始化失败并出现错误

Caused By: java.lang.UnsupportedOperationException: The user must supply a JDBC connection
 at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
 at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.java:51)
 at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:130)
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327)
 at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
 at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)...

根据日志 JDBC 和 EAR 同时启动它们的初始化。所以当 EAR 尝试验证 DB 方案时,JDBC 配置初始化还没有完成。

什么可以解决这种情况? 是否有任何 weblogic 配置可以使用哪些部署项初始化来订购?

提前致谢。

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="TestDSPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/testN/test/TestXADS</jta-data-source>
    <mapping-file>META-INF/orm.xml</mapping-file>
    <properties>
        <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect"/>  -->
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
        <property name="hibernate.max_fetch_depth" value="3"/>
        <!-- <property name="hibernate.cache.use_query_cache" value="true"/> -->
        <property name="hibernate.cache.region_prefix" value="hibernate.test"/>
        <property name="hibernate.jdbc.use_streams_for_binary" value="true"/>
        <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup"/>
        <property name="show_sql" value="true"/>
        <property name="hibernate.query.factory_class" value="org.hibernate.hql.classic.ClassicQueryTranslatorFactory"/>
        <property name="hibernate.hbm2ddl.auto" value="validate" /> 
    </properties>
</persistence-unit>

【问题讨论】:

  • 添加了 persistence.xml 内容。
  • 你使用的是哪个版本的休眠?
  • 您的 DataSource 是否设置为系统模块,又名来自管理控制台向导并在 config/jdbc/ 中可见,还是打包在应用程序模块 (EAR) 中?

标签: java jdbc initialization weblogic


【解决方案1】:

您是否尝试通过管理控制台创建 JDBC 连接?如果没有,请尝试通过管理控制台创建数据源。完成后,打开您的 config.xml,您应该会看到如下内容:

      <jdbc-system-resource>
        <name>TestXADS</name>
        <target>AdminServer</target>
        <descriptor-file-name>jdbc/TestXADS-jdbc.xml</descriptor-file-name>
      </jdbc-system-resource>

请注意:外层节点应该是

【讨论】:

    【解决方案2】:

    我会仔细检查 WebLogic 是否按照docs 中所述的默认顺序部署资源。

    【讨论】:

      猜你喜欢
      • 2014-09-25
      • 1970-01-01
      • 2013-05-05
      • 2014-06-07
      • 2014-07-26
      • 2016-12-04
      • 2015-12-04
      • 2017-07-02
      相关资源
      最近更新 更多