2016-01-05 4 views
0

Я установил соединение с mssql, используя persistence.xml в java. Для этого мне пришлось скопировать sqljdbc_auth.dll в систему32, потому что я хотел использовать аутентификацию Windows для подключения. Есть ли способ достичь такого же результата без копирования файла dll? Удаление DLL вызывает это предупреждение и предотвращает выполнение:Подключение к mssql через постоянство без копирования dll

Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path 

Это моя настойчивость:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.1" 
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="migration"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <class>migration.xcs.model.Kennzahl</class> 
    <properties> 
     <property name="javax.persistence.jdbc.driver" 
      value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" /> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:sqlserver://localhost:1433;databaseName=kendb;integratedSecurity=true;" /> 
     <property name="hibernate.archive.autodetection" value="class" /> 

    </properties> 
</persistence-unit> 

И это мои POM зависимости:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.0.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>sqljdbc4</artifactId> 
     <version>4.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

ответ

2

У вас есть не добавлен путь, где присутствует sqljdbc_auth.dll.
Узнайте в системе, в которой находится DLL, и добавьте ее в ваш classpath.

Или в вашем Eclipse, вы можете Run Configuration так:

-Djava.library.path=C:\path of the dll\ 
+0

да, и это мой вопрос. есть ли способ использовать проверку подлинности Windows без добавления sqljdbc_auth.dll в system32. Что-то вроде использования определенного свойства для режима аутентификации в постоянстве? Если я копирую sqljdbc_auth.dll в system32, он работает, но мне просто интересно, есть ли другой способ. – Iman

+0

Нет никакой другой оптимизации, которую вы можете сделать, что предлагает Adbelhak - правильно. Вы можете проверить этот [связанный] (http://stackoverflow.com/questions/17277001/dll-missing-in-jdbc) вопрос. – javapapo