Spring SQL Server连接问题

时间:2018-01-25 09:39:22

标签: jdbc spring-data-jpa

我已迁移现有的ORM项目以使用SQL Server而不是MYSQL。我使用的是Java 8和sqljdbc6.version - 6.2.0.jre8。我使用maven,参考文献在pom中。我以前使用4.1连接到SQL Server,我在本地复制了sqljdbc_auth.dll。该应用程序无需连接MySQL即可正常运行。

我在ORM中有一个带有此配置的persistance.xml

    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="javax.persistence.jdbc.user" value=""/>
        <property name="javax.persistence.jdbc.password" value=""/>
        <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://domain_server:1433;databaseName=dbname;integratedSecurity=true;"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"/>
        <property name="hibernate.max_fetch_depth" value="3"/>
        <property name="hibernate.current_session_context_class" value="thread"/>
        <property name="hibernate.enable_lazy_load_no_trans" value="true"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.cache.use_second_level_cache" value="true"/>
        <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
        <property name="hibernate.cache.use_query_cache" value="true"/>
        <property name="hibernate.generate_statistics" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="none"/>
    </properties>

单元测试没有覆盖100%的映射表但连接工作没有问题,测试中访问的60%/ 70%的表都是没有问题的数据检索(db活动是read_only虽然这不是在配置中设置的)。该数据库位于运行Windows2012R2和SQL Server 2016的本地域服务器上(兼容级别SQL Server 2008(100))。

到目前为止一切顺利。

ORM主要由另一个使用spring-data-jpa版本2.0.0.M1的应用程序使用。并使用存储库

通过ORM访问数据库
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.app.orm.repo.Fund;

import java.util.List;

@Repository("RepoAccountRepository")
public interface AccountRepository extends JpaRepository<Account, String{
    List<Account> findByIdentBetween(long from, long to);
}

连接配置位于db.xml文件中(我已经删除了&amp;&#39;硬编码&#39;以试图让它正常工作)

 <beans:bean id="repoDataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <beans:property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <beans:property name="url" value="jdbc:sqlserver://domanserver:1433;databaseName=dbname;integratedSecurity=true;"/>
        <beans:property name="defaultAutoCommit" value="false"/>
 </beans:bean>

<beans:bean id="repoEntityManagerFactory"
                class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <beans:qualifier value="repo"/>
        <beans:property name="dataSource" ref="repoDataSource"/>
        <beans:property name="persistenceUnitName" value="repo"/>
        <beans:property name="packagesToScan" value="com.app.orm.repo"/>
        <beans:property name="jpaVendorAdapter">
            <beans:bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <beans:property name="showSql" value="false"/>
                <beans:property name="generateDdl" value="false"/>
                <beans:property name="database" value="SQL_SERVER"/>
            </beans:bean>
        </beans:property>
        <beans:property name="jpaPropertyMap">
            <beans:map>
                <entry key="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect"/>
                <entry key="hibernate.hbm2ddl.auto" value="none"/>
                <entry key="hibernate.cache.use_second_level_cache" value="false"/>
            </beans:map>
        </beans:property>
    </beans:bean>

    <beans:bean id="repoTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <beans:property name="entityManagerFactory" ref="repoEntityManagerFactory"/>
    </beans:bean>

    <beans:bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

    <jpa:repositories base-package="com.app.repo"
                      entity-manager-factory-ref="repoEntityManagerFactory"
                      transaction-manager-ref="repoTransactionManager"/>

所以连接到数据库的直到测试确实连接了&amp;返回数据没有问题。

当我运行应用程序时,我得到了

  

2018-01-25 08:37:02,640 [threadPoolTask​​Executor-9]错误   SqlExceptionHelper:129 - 无法创建PoolableConnectionFactory(The   与主机dbname,端口1433的TCP / IP连接失败。错误:   &#34;空。验证连接属性。确保一个实例   SQL Server正在主机上运行并接受TCP / IP连接   港口。确保未阻止与端口的TCP连接   通过防火墙。&#34;。)

我用谷歌搜索了一下,到目前为止,我做了两件事,因为提供给其他人的建议(主要是在这个网站上)

1)启动了SQL Server Browser(已停止)

enter image description here

2)检查TCP / IP是否已启用并在没有动态端口的1433上运行

enter image description here

enter image description here

enter image description here

这些都没有任何区别。两个应用程序的测试仍然连接到db并返回数据。

我现在还不确定在哪里看!有人可以提供任何指导吗? 对不起,我应该添加,因为我的测试工作从我的开发机器(应用程序失败),并且我可以通过端口1433 telnet到服务器我假设它与SQL服务器配置有关而不是防火墙)

0 个答案:

没有答案