Свойства спячки не найдены
Мы интегрируем java blazeds hibernate с проектом flex. Сначала мы протестировали чистый java hibernate в eclipse, и он работает нормально. Но когда мы помещаем то же самое в tomcat для гибкой интеграции с Blazeds, он показывает следующую ошибку. Это единственная ошибка.
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.6
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
Jan 24, 2013 11:31:31 AM org.hibernate.cfg.Configuration getConfigurationInputSt
ream
INFO: Configuration resource: /hibernate.cfg.xml
это hibernate.cfg.xml(чтобы определить, не найден ли hibernate.cfg.xml, и я проверил, удалив DOCTYPE из.cfg.xml, затем отобразился вывод tomcat о том, что корневой элемент не найден... что означает, что он может найти hibernate.cfg.xml(я думаю)
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<property name="current_session_context_class">thread</property>
<mapping class="com.model.User" />
<mapping class="com.model.UserDetails" />
<mapping class="com.model.LoanDetails" />
<mapping class="com.model.BorrowerDetails" />
</session-factory>
</hibernate-configuration>
это hiberutil.java
public class HibernateUtil
{
private static SessionFactory sessionFactory=configureSessionFactory();
private static ServiceRegistry serviceRegistry;
private static SessionFactory configureSessionFactory() throws HibernateException {
Configuration configuration = new Configuration();
configuration.configure();
serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
return sessionFactory;
}
public static SessionFactory getSessionFactory()
{
return sessionFactory;
}
}
почему ошибка показывает? элемент управления приходит со стороны flex и выполняет начальную точку метода java... но когда дело доходит до выполнения hibernate, он показывает эту ошибку в tomcat...
Но когда я выполняю java + hibernate как чистое Java-приложение, оно выполняется нормально..
Кто-нибудь может мне помочь?
Спасибо
РЕДАКТИРОВАТЬ 1 После модификации, предложенной @Andremoniy и помещающей файл.cfg.xml в папку src и здесь также в eclipse, он работает, но не в tomcat with flex
следующая ошибка приходит
org.hibernate.MappingException: An AnnotationConfiguration instance is required
to use <mapping class="com.model.User"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.jav
a:1606)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.jav
a:1561)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1420)
at com.sample.HibernateUtil.configureSessionFactory(HibernateUtil
.java:26)
at com.sample.HibernateUtil.<clinit>(HibernateUtil.java:20)
at com.sample.App.checkUser(App.java:34)
4 ответа
Я полагаю, проблема в коде конфигурации, который вы упомянули для .hbm.xml
может не работать в Tomcat.
Я думаю, что это нужно AnnotationConfiguration
объект. Я думаю, что вы использовали этот код из-за Annotationconfiguration
создание объекта не работает.
Лучше создать проект гибернации Maven с POM и экспортировать war
файл в Tomcat (с изменениями Annotationconfiguration
). Также используйте log4j jar для отображения подробностей выполнения Tomcat с выходными данными отладки, чтобы выходные данные Tomcat печатали весь поток выполнения.
Мне кажется, что вы можете решить эту проблему, пройдя hibernate.cfg.xml
прямо в Configuration
,
try (InputStream in = HibernateUtil.class.getResourceAsStream("/hibernate.cfg.xml")) {
Configuration configuration = new Configuration().addInputStream(in).configure();
...
} ...
Единственное, вы должны правильно указать путь или класс, для getResourceAsStream
, Или вы можете захотеть создать InputStream
используя некоторый относительный путь.
Если оказалось, что вы используете Intellij Idea, вам нужно поместить файл hibernate.cfg.xml в папку ресурсов
и если у вас будет после следующей ошибки:org.hibernate.service.jndi.JndiException: Ошибка синтаксического анализа имени JNDI []
удалить в hibernate.cfg.xml имя файла тега см. рисунок:
Я столкнулся с той же проблемой, но я нашел решение здесь..
то есть. Измените строку:
new Configuration().configure().buildSessionFactory();
чтобы:
new AnnotationConfiguration().configure().buildSessionFactory();