2017-04-12 1 views
0

Je suis en train de connecter Hibernate 5 avec MSSQL 2012. Je suis en mesure d'obtenir la connexion avec succès avec java (méthode principale) .Mais quand je Déployé en Karaf, il me donne l'erreur:HIbernate avec karaf et MS-sql ne fonctionnant pas

Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [net.sourceforge.jtds.jdbc.Driver] 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:183) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:139) 
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:78) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234) 
    ... 61 more 
Caused by: java.lang.ClassNotFoundException: Could not load requested class : net.sourceforge.jtds.jdbc.Driver 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)[:1.8.0_51] 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_51] 
    at java.lang.Class.forName0(Native Method)[:1.8.0_51] 
    at java.lang.Class.forName(Class.java:348)[:1.8.0_51] 
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226) 

Ceci est mon fichier hibernate.cfg:

<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:jtds:sqlserver://<ip>:<port>/<dbname></property> 
    <property name="hibernate.connection.username">testuser</property> 
    <property name="hibernate.connection.password">abc</property> 

    <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> 


    </session-factory> 
</hibernate-configuration> 

I avoir installer la fonction en karaf comme:

wrap:mvn:net.sourceforge.jtds/jtds/1.3.1 

mais toujours l'erreur est là. Le dépôt contient également la classe (Driver.class) mais je reçois toujours cette erreur. Peut-on m'aider s'il vous plaît à comprendre le problème ?? qu'est-ce qui me manque?

Répondre

1

Généralement, dans OSGi, l'utilisation de Driver.class pour charger un pilote jdbc ne fonctionne pas. Au lieu de cela, vous devez utiliser pax-jdbc-config pour fournir une source de données en tant que service OSGi et Aries JPA pour que le mode hibernation soit entièrement prêt pour OSGi.

Je n'ai pas encore utilisé MS-SQL mais pax-jdbc le supporte également. Donc, cela devrait généralement fonctionner.

Pour un exemple complet, voir tasklist-ds.