2013-05-17 114 views
3

当我使用Spring,Hibernate和SQL Server的组合时,出现以下错误。Spring + Hibernate + Sql Server连接失败

19:17:09,137 ERROR [org.hibernate.tool.hbm2ddl.SchemaValidator] (MSC service thread 1-8) HHH000319: Could not get database metadata: com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host falmumapp20/testdb, port 1433 has failed. Error: "null. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.". 

它不能只是一个TCP IP问题,因为如果我没有Spring的工作,我可以使用休眠连接到SQL Server。

下面是我的applicationContext.xml

<!-- Resource Definition --> 
<!-- Data Source Connection Pool --> 
<bean id="myDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
    <property name="url" value="jdbc:microsoft:sqlserver://falmumapp20:1433" /> 
    <property name="username" value="tima"/> 
    <property name="password" value="[email protected]"/> 
</bean> 

<!-- Hibernate SessionFactory --> 
<bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="myDataSource" /> 

    <property name="mappingDirectoryLocations"> 
     <list> 
      <value>classpath:/com/trun/hbm</value> 
     </list> 
    </property> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.hbm2ddl.auto">validate</prop> 
     <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
     <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 

</bean> 


<!--Definition of Transaction Manager--> 
<bean id="myTransactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="mySessionFactory" /> 
</bean> 

<bean id="IDataService" class="com.trun.service.DataServiceImpl"> 
</bean> 


<bean id="EventServlet" class="com.trun.servelet.LoginServelet"> 
    <property name="IDataDAO" ref="IDataDAO" /> 
</bean> 

这里是我的Hibernate配置文件 -

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
<session-factory> 
     <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> 
     <property name="hibernate.connection.url">jdbc:sqlserver://falmumapp20:1433;databaseName=testdb; user=tima;[email protected];</property> 
     <property name="hibernate.connection.username">tima</property> 
     <property name="hibernate.connection.password">[email protected]</property> 
     <property name="hibernate.connection.pool_size">10</property> 
     <property name="show_sql">true</property> 
     <property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property> 
     <property name="hibernate.current_session_context_class">thread</property> 
     <property name="hibernate.cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> 
     <property name="hibernate.hbm2ddl.auto">validate</property> 
     <!-- Mapping files --> 

</session-factory> 

回答

7

你不及格的数据库名称连接URL

<property name="url" value="jdbc:sqlserver://falmumapp20:1433;databaseName=testdb" /> 

<property name="url" value="jdbc:sqlserver://falmumapp20:1433/testdb" /> 
+0

权。并且Hibernate配置文件中的所有hibernate.connection。*属性都不需要,因为这是由数据源管理的。 –

+0

谢谢阿伦。我做了修改,现在它给了其他错误,我正在尝试自己,并会回到论坛 - 你的答案从我+1 +1 –

+0

感谢您的意见和反馈:) –

相关问题