2017-04-12 6 views
0

私はHibernate 5とMSSQL 2012を接続しています。karafとMS-SQLが正常に動作しない

<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:これは私のhibernate.cfgファイルです

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) 

:私はKarafに展開したとき、私は、Java(mainメソッド)で正常に接続を取得することができています.But、それは私にエラーを与えます次のようにカラフで機能をインストールしてください:

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

ただし、まだエラーがあります。リポジトリにもクラス(Driver.class)が含まれていますが、まだこのエラーが表示されます。問題を理解するのに手伝ってください。私は何が足りないのですか?

答えて

1

一般に、Driver.classを使用してjdbcドライバをロードするOSGiでは動作しません。 代わりに、OSGiサービスとしてDataSourceを提供するにはpax-jdbc-configを使用し、完全にOSGiを休止状態にするにはAries JPAを使用する必要があります。

MS-SQLはまだ使用していませんが、pax-jdbcもサポートしています。だから、それは一般的に動作するはずです。

完全な例については、tasklist-dsを参照してください。

関連する問題