«Пользователь должен предоставить соединение JDBC» при перезапуске weblogic - PullRequest
8 голосов
/ 20 декабря 2010

Я использую 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 пытается проверить схему БД, инициализация конфигурации JDBC еще не завершена.

Что может исправить такую ​​ситуацию?Существуют ли какие-либо веб-логические конфигурации, в которых можно было бы заказать инициализацию элементов развертывания?

Заранее спасибо.

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>

Ответы [ 2 ]

1 голос
/ 28 сентября 2012

Вы пытались создать соединения 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>

Обратите внимание: внешний узел должен быть

0 голосов
/ 16 июня 2011

Я бы дважды проверил, что WebLogic развертывает ресурсы в порядке по умолчанию, как указано в docs .

...