2017-09-17 2 views
0

Ich versuche, eine Verbindung zur Informix-Datenbank mit Hibernate 5.2.10 herzustellen, aber das Programm reagiert nicht und bleibt stecken, ohne dass eine Fehlermeldung ausgegeben wird.Verbindung mit Informix über Hibernate nicht möglich

Ich kann nichts von der Konsole finden. Irgendwelche Vorschläge, welchen Fehler ich gemacht habe? Ich bin neu

hibernate.cfg.xml

<property name="connection.driver_class">com.informix.jdbc.IfxDriver</property> 
<property name="connection.url">jdbc:informixsqli://****:1528/****:informixserver=*****</property> 
<property name="connection.username">*****</property> 
<property name="connection.password">*****</property> 

Konsole Hibernate:

Sep 17, 2017 11:05:55 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.10.Final} 
Sep 17, 2017 11:05:55 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Sep 17, 2017 11:06:05 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Sep 17, 2017 11:06:05 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure 
INFO: HHH010002: C3P0 using driver: com.informix.jdbc.IfxDriver at URL: jdbc:informix-sqli://d7uat:1528/d7main:informixserver=uatserver 
Sep 17, 2017 11:06:05 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure 
INFO: HHH10001001: Connection properties: {user=******, password=****} 
Sep 17, 2017 11:06:05 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure 
INFO: HHH10001003: Autocommit mode: false 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Sep 17, 2017 11:06:07 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure 
INFO: HHH10001007: JDBC isolation level: <unknown> 
Sep 17, 2017 11:06:08 AM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.InformixDialect 
Sep 17, 2017 11:06:14 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection 
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.[email protected]7a0ef219] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 

HibernateUtil

private static final SessionFactory sessionFactory = buildSessionFactory(); 

public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 

private static SessionFactory buildSessionFactory(){ 
    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); 
    try { 
     return new 
    MetadataSources(registry).buildMetadata().buildSessionFactory(); 
    } 
    catch (Throwable ex) { 
     System.err.println("Initial SessionFactory creation failed." + ex); 
     StandardServiceRegistryBuilder.destroy(registry); 
     throw new ExceptionInInitializerError(ex); 
    } 
} 

InformixTest

public static CustomerInvoice lookupInvoice(String invoiceNumber){ 
    Session session = null; 
    List<CustomerInvoice> customerInvoiceList = new ArrayList<CustomerInvoice>(); 
    CustomerInvoice customerInvoice = null; 
    try { 
     session = HibernateUtil.getSessionFactory().openSession(); 
     Query query = session.createQuery(invoiceByNumber); 
     query.setParameter("invoiceNumber", invoiceNumber+"%"); 
     customerInvoiceList = ((org.hibernate.query.Query) query).list(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     session.close(); 
    } finally { 
     if (session != null && session.isOpen()) { 
      session.close(); 
     } 
    } 


    if(customerInvoiceList.size()>0){ 
     customerInvoice = customerInvoiceList.get(0); 
    } 

    return customerInvoice; 

} 
+0

vielleicht gibt es eine Ausnahme nach der Ifx-Verbindung (in openSession()), aber es ist nicht protokolliert/in der Konsole gespeichert. Erhalten Sie eine Ausnahme, wenn Sie versuchen, eine Verbindung zu einer Dummy-Datenbank oder mit einem falschen Kennwort herzustellen? –

Antwort

0

Ich habe einen schnellen Test mit 5.2 und dem neuesten jdbc-Treiber gemacht und es scheint für mich gut zu funktionieren. Ich bin mit Ihrem HiberanateUtil und eine ähnliche Hibernate-Konfigurationsdatei:

D:\Infx\work\Hibernate>java list 
Sep 18, 2017 10:53:49 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.11.Final} 
Sep 18, 2017 10:53:49 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Sep 18, 2017 10:53:49 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time. 
Sep 18, 2017 10:53:50 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Sep 18, 2017 10:53:50 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-mapping. Use namespace http://www.hibernate.org/dtd/hibernate-mapping instead. Support for obsolete DTD/XSD namespaces may be removed at any time. 
Sep 18, 2017 10:53:51 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Sep 18, 2017 10:53:51 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001005: using driver [com.informix.jdbc.IfxDriver] at URL [jdbc:informix-sqli://420ito:9088/stores7:INFORMIXSERVER=ids1210;user=informix;password=dummy;] 
Sep 18, 2017 10:53:51 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001001: Connection properties: {} 
Sep 18, 2017 10:53:51 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001003: Autocommit mode: false 
Sep 18, 2017 10:53:51 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 
Sep 18, 2017 10:53:52 AM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.InformixDialect 
Sep 18, 2017 10:53:53 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection 
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.[email protected]37ebc9d8] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 
Sep 18, 2017 10:53:55 AM org.hibernate.hql.internal.QueryTranslatorFactoryInitiator initiateService 
INFO: HHH000397: Using ASTQueryTranslatorFactory 
Hibernate: select state0_.id as id1_0_, state0_.code as code2_0_, state0_.sname as sname3_0_, state0_.next_state_id as next_sta4_0_ from States state0_ order by state0_.id asc 
test, test 
test, test 
Sep 18, 2017 10:53:55 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl stop 
INFO: HHH10001008: Cleaning up connection pool [jdbc:informix-sqli://420ito:9088/stores7:INFORMIXSERVER=ids1210;user=informix;password=dummy;] 

D:\Infx\work\Hibernate> 

Nur so, wie ich so etwas wie ein ‚hängen‘ zu bekommen ist, wenn ich eine Ausnahme während der offenen Session() erhalten. Ich zwang man die Methode mit einer alten Hibernate Version Bibliothek Kompilieren (3.x), die nicht ‚klassischen‘ Methoden hat:

D:\Infx\work\Hibernate>java list 
Sep 18, 2017 10:54:42 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.11.Final} 
Sep 18, 2017 10:54:42 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Sep 18, 2017 10:54:42 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time. 
Sep 18, 2017 10:54:42 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Sep 18, 2017 10:54:42 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity 
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-mapping. Use namespace http://www.hibernate.org/dtd/hibernate-mapping instead. Support for obsolete DTD/XSD namespaces may be removed at any time. 
Sep 18, 2017 10:54:44 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Sep 18, 2017 10:54:44 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001005: using driver [com.informix.jdbc.IfxDriver] at URL [jdbc:informix-sqli://420ito:9088/stores7:INFORMIXSERVER=ids1210;user=informix;password=dummy;] 
Sep 18, 2017 10:54:44 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001001: Connection properties: {} 
Sep 18, 2017 10:54:44 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001003: Autocommit mode: false 
Sep 18, 2017 10:54:44 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
INFO: HHH000115: Hibernate connection pool size: 20 (min=1) 
Sep 18, 2017 10:54:44 AM org.hibernate.dialect.Dialect <init> 
INFO: HHH000400: Using dialect: org.hibernate.dialect.InformixDialect 
Sep 18, 2017 10:54:46 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection 
INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.[email protected]37ebc9d8] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. 
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; 
     at list.main(list.java:12) 
.... 
.... 
.... 

Als dein, ‚last‘ INFO Meldung „Verbindung von JdbcConnectionAccess erhalten“ ist, aber danach bekomme ich auch die nosuchmethod-ausnahme. Ich muss Strg + C drücken, um auszusteigen.

Vielleicht woanders geschickt Ihre Ausnahmen wurden;)

EDIT

Dies ist der Code Ich verwende zu testen es direkt von der Konsole sollte laufen, alles was Sie brauchen es.

D:\Infx\work\Hibernate>cat set5.cmd 
@echo off 
set CLASSPATH= 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\javassist-3.20.0-GA.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\dom4j-1.6.1.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\hibernate-jpa-2.1-api-1.0.0.Final.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\hibernate-core-5.2.11.Final.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\hibernate-commons-annotations-5.0.1.Final.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\ifxjdbc.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\jta-1.1.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\classmate-1.3.0.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\jboss-logging-3.3.0.Final.jar 
set CLASSPATH=%CLASSPATH%;D:\infx\work\Hibernate\lib5\antlr-2.7.7.jar 
set CLASSPATH=%CLASSPATH%;. 

D:\Infx\work\Hibernate>cat 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.driver_class">com.informix.jdbc.IfxDriver 
    </property> 
    <property 
     name="connection.url">jdbc:informix-sqli://420ito:9088/stores7:INFORMIXSERVER=ids1210;user=informix;password=dummy; 
    </property> 
    <property 
     name="dialect">org.hibernate.dialect.InformixDialect 
    </property> 
    <property name="hibernate.show_sql">true 
    </property> 

    <property 
     name="current_session_context_class">thread 
    </property> 
<property name="hbm2ddl.auto">update</property> 

    <mapping resource="State.hbm.xml"/> 
    </session-factory> 

</hibernate-configuration> 

D:\Infx\work\Hibernate>cat State.hbm.xml 
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> 
<hibernate-mapping> 
    <class 
     name="State" 
     table="States"> 
     <id 
     name="id" 
     column="id"> 
     <generator class="increment"/> 
     </id> 

     <property 
     name="code" 
     column="code"/> 
     <property 
     name="sname" 
     column="sname"/> 
     <many-to-one 
     name="nextState" 
     cascade="all" 
     column="next_state_id"/> 
    </class> 
</hibernate-mapping> 

D:\Infx\work\Hibernate>cat HibernateUtil.java 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.boot.MetadataSources; 
import org.hibernate.boot.registry.StandardServiceRegistry; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 

public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); 

public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 

private static SessionFactory buildSessionFactory(){ 
    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); 
    try { 
     return new 
    MetadataSources(registry).buildMetadata().buildSessionFactory(); 
    } 
    catch (Throwable ex) { 
     System.err.println("Initial SessionFactory creation failed." + ex); 
     StandardServiceRegistryBuilder.destroy(registry); 
     throw new ExceptionInInitializerError(ex); 
    } 
} 

    public static void shutdown() { 
// Close caches and connection pools 
    getSessionFactory().close(); 
    } 

} 

D:\Infx\work\Hibernate>cat create.java 
import java.util.*; 
import org.hibernate.*; 
import javax.persistence.*; 

public class create { 
public static void main(String[] args) { 

    java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.FINEST ); 
    java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.SEVERE ); 
    Session Session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction Transaction = Session.beginTransaction(); 

    State myState = new State(); 
    myState.setcode(args[0]); 
    myState.setsname(args[1]); 
    Long stateId = (Long) Session.save(myState); 

    System.out.println("Stated added: "+myState.getcode()+", "+myState.getsname()); 

    Transaction.commit(); 
    Session.close(); 
// Shutting down the application 
    HibernateUtil.shutdown(); 
    } 
} 

D:\Infx\work\Hibernate>cat list.java 
import java.util.*; 
import org.hibernate.*; 
import javax.persistence.*; 

public class list { 
public static void main(String[] args) { 

    java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.FINEST ); 
    java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.SEVERE ); 

    Session newSession = HibernateUtil.getSessionFactory().openSession(); 
    Transaction newTransaction = newSession.beginTransaction(); 
    List states = newSession.createQuery("from State order by id asc").list(); 

    for (Iterator iter = states.iterator(); 
     iter.hasNext();) { 
     State state = (State) iter.next(); 
     System.out.println(state.getcode() +", " + state.getsname()); 
    } 
    newTransaction.commit(); 
    newSession.close(); 

    HibernateUtil.shutdown(); 
    } 
} 
D:\Infx\work\Hibernate> 

create.java wird eine neue Zeile einzufügen, und list.java wählt aus dem ‚Staat‘ Tabelle:

D:\Infx\work\Hibernate>java com.informix.jdbc.Version 
IBM Informix JDBC Driver Version 4.10.JC9 

D:\Infx\work\Hibernate>javac create.java 

D:\Infx\work\Hibernate>javac list.java 

D:\Infx\work\Hibernate>java create test1 test2 
Hibernate: select max(id) from States 
Stated added: test1, test2 
Hibernate: insert into States (code, sname, next_state_id, id) values (?, ?, ?, ?) 

D:\Infx\work\Hibernate>java list 
Hibernate: select state0_.id as id1_0_, state0_.code as code2_0_, state0_.sname as sname3_0_, state0_.next_state_id as next_sta4_0_ from States state0_ order by state0_.id asc 
test, test 
test, test 
test1, test2 

D:\Infx\work\Hibernate> 

aber ich denke, es ist nicht viel anders sein sollte als das, was Sie bereits haben.

+0

Ich kann meine Ausnahmen nirgendwo anders sehen. Ich verwende die Version 4.10.9 des Informix JDBC-Treibers. Welche Version hast du benutzt? – Sam

+0

Etwas zwischen JC8 und JC9;) –

+0

Gerade mit JC9 getestet und es funktioniert genauso. Wird bei Verwendung eines Dummy-Benutzers eine Ausnahme angezeigt? –

0

Danke für den Versuch, mir zu helfen. Das Problem wurde behoben, nachdem ich diese Eigenschaft aus der Hibernate-Konfigurationsdatei entfernt habe.

Verwandte Themen