I'm writing a simple Swing app for university and using Hibernate and Oracle XE.
I'm stuck with that error:
29.06.2011 14:54:10 org.hibernate.cfg.annotations.Version <clinit>
INFO: Hibernate Annotations 3.3.1.GA
29.06.2011 14:54:10 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.2.5
29.06.2011 14:54:10 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
29.06.2011 14:54:10 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
29.06.2011 14:54:10 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
29.06.2011 14:54:10 org.hibernate.ejb.Version <clinit>
INFO: Hibernate EntityManager 3.3.2.GA
29.06.2011 14:54:31 org.hibernate.ejb.packaging.PersistenceXmlLoader$ErrorLogger warning
WARNING: Warning parsing XML: XML InputStream(2) schema_reference.4: Failed to read schema document 'http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
29.06.2011 14:54:52 org.hibernate.ejb.packaging.PersistenceXmlLoader$ErrorLogger warning
my persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<persistence-unit name="airportPU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>my.airport.model.Crew</class>
<class>my.airport.model.Country</class>
<class>my.airport.model.City</class>
<class>my.airport.model.Plane</class>
<class>my.airport.model.Model</class>
<class>my.airport.model.Passenger</class>
<class>my.airport.model.Role</class>
<class>my.airport.model.Airport</class>
<class>my.airport.model.Spec</class>
<class>my.airport.model.AverageFlightTime</class>
<class>my.airport.model.CrewInTheRoleOnTheFlight</class>
<class>my.airport.model.Flight</class>
<class>my.airport.model.PassengersOnTheFlight</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@172.16.0.3:1521:XE"/>
<property name="javax.persistence.jdbc.password" value="AIRPORT"/>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="javax.persistence.jdbc.user" value="AIRPORT"/>
</properties>
</persistence-unit>
</persistence>
Creating entity manager factory:
public static EntityManagerFactory emf;
public static EntityManager em;
static {
try {
emf = Persistence.createEntityManagerFactory("airportPU");
em = emf.createEntityManager();
} catch (Exception e) {
System.exit(1);
}
}
Bottom line: adding this line to the /etc/hosts file solves this:
127.0.0.1 java.sun.com
It seems Hibernate recognizes this and other "standard" XSD-s as something it has, and has no problem working with its internal copy without Internet access.
Problems arise when the HTTP GET for the XSD does not succeed, but does not fail either: Returns something else or takes forever to respond. Hibernate is not prepared for these situations. Right now the URL takes forever to respond, and Hibernate does not employ a quick timeout as it should for situations like today.
Systems without Internet access are unaffected.
So as a solution I am emulating lack of Internet access by resolving the java.sun.com hostname to the loopback interface IP address, guaranteeing a quick failure.
the link is down where did you get the reference for it, double check it... the http ref should work but obviously isn't as it does not exist.
A quick google suggests there is a glitch in the matrix (oracle servers).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With