We integreren de Java-gebakken overwinteren met FLEX-project..Eerst hebben we de zuivere Java-overwinning in Eclipse getest en het uitvoert prima. Maar toen we hetzelfde in Tomcat voor Flex-integratie met Blaaseds plaatsen, toont het de volgende fout. Dit is de enige fout.
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
Dit is de hibernate.cfg.xml (om te identificeren of hibernate.cfg.xml niet wordt gevonden en ik getest door het verwijderen van doctype van .cfg.xml en tomcat-uitgang die wordt weergegeven en het root-element niet wordt gevonden, wat betekent dat het root-element niet wordt gevonden het is in staat om de hibernate.cfg.xml (ik denk) te vinden
<?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>
dit is 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;
}
}
waarom wordt de fout weergegeven? de besturing komt van de flex-kant en voert het startpunt van de java-methode uit … maar als het gaat om de uitvoering van de slaapstand, wordt deze fout weergegeven in tomcat …
Maar als ik java+hibernate uitvoer als een pure java-toepassing, wordt het goed uitgevoerd..
kan iemand me helpen?
Bedankt
EDIT 1 Na de wijziging voorgesteld door @Andremoniy en het plaatsen van de .cfg.xml in de src map en hier ook in eclipse werkt het maar niet in tomcat met flex
volgende fout komt
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)
Antwoord 1, autoriteit 100%
Ik denk dat het probleem zit in de code voor configuratie die u noemde voor .hbm.xml
werkt mogelijk niet in Tomcat.
Ik denk dat het een Annotationconfiguration
-object nodig heeft. Ik vermoed dat je deze code hebt gebruikt omdat het maken van het object Annotationconfiguration
niet werkt.
Beter een maven hibernate-project maken met pom en het bestand war
exporteren naar Tomcat (met de wijzigingen van Annotationconfiguration
). Gebruik ook log4j jar om de details van de Tomcat-uitvoering weer te geven met de debug-outputs, zodat de Tomcat-output de volledige uitvoeringsstroom zal afdrukken.
Antwoord 2, autoriteit 100%
Het lijkt mij dat je dit probleem kunt oplossen door hibernate.cfg.xml
rechtstreeks door te geven aan Configuration
.
try (InputStream in = HibernateUtil.class.getResourceAsStream("/hibernate.cfg.xml")) {
Configuration configuration = new Configuration().addInputStream(in).configure();
...
} ...
Het enige dat u moet doen, is het pad of de klasse correct aanwijzen voor getResourceAsStream
. Of misschien wilt u InputStream
maken met een relatief pad.
Antwoord 3, autoriteit 100%
Ik heb hetzelfde probleem gehad, maar ik heb hier de oplossing gevonden..
dwz. Verander de regel:
new Configuration().configure().buildSessionFactory();
naar:
new AnnotationConfiguration().configure().buildSessionFactory();
Antwoord 4, autoriteit 100%
als blijkt dat u Intellij Ideagebruikt, moet u het bestand hibernate.cfg.xmlin de map resources
plaatsen
en als je na de volgende fout het volgende krijgt:
org.hibernate.service.jndi.JndiException: fout bij het parseren van JNDI-naam []
verwijder in hibernate.cfg.xml bestandsnaam van tag zie afbeelding: