2013-02-11 308 views
2

我使用的jar JTDS-1.3.0.jar通过休眠连接到MS SQL和下面是配置文件休眠MS SQL连接

<hibernate-configuration> 
<session-factory> 
    <!-- Database connection settings --> 
    <property name="connection.url">jdbc:jtds:sqlserver://localhost/login</property> 
    <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property> 
    <property name="connection.username">sa</property> 
    <property name="connection.password">user</property> 

    <!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">1</property> 

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


    <!-- Enable Hibernate's automatic session context management --> 
    <property name="current_session_context_class">thread</property> 

    <!-- Echo all executed SQL to stdout --> 

     <property name="show_sql">true</property> 
    <!-- Drop and re-create the database schema on startup --> 
    <property name="hbm2ddl.auto">update</property> 

    <!-- configuration pool via c3p0--> 
    <property name="c3p0.acquire_increment">5</property> 
    <property name="c3p0.idle_test_period">100</property> <!-- seconds --> 
    <property name="c3p0.max_size">20</property> 
    <property name="c3p0.max_statements">50</property> 
    <property name="c3p0.min_size">5</property> 
    <property name="c3p0.timeout">1800</property> <!-- seconds --> 
    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
    <!--Basic user functionality--> 

</session-factory> 

但每次我跑我的项目的时间网络错误和连接被拒绝时发生错误。 我推荐this link仍然给错误。下面是我的堆栈跟踪

java.sql.SQLException: Network error IOException: Connection refused: connect 
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:434) 
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:183) 
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134) 
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:183) 
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:172) 
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:152) 
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1074) 
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1061) 
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32) 
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1796) 
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:635) Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:300) 
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:253) 
at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:329) 

以下是图像 Server Configuration Manager 谁能告诉我在哪里,我错了。

+0

使用端口号进行连接:默认端口号是1433,这是Connecion拒绝的原因之一IOException – gks 2013-02-11 10:51:20

+0

你的模式真的叫做“登录”吗? – david99world 2013-02-11 10:58:50

+0

是的我的模式是登录 – Rithesh 2013-02-11 11:16:14

回答

4

看看你确定你的服务器侦听端口1433?要确认实际的问题是与Java(即你的配置)运行

telnet localhost 1433 

如果你没有得到的答案则MS SQL是最有可能不是在1433上运行还有就是用在MS SQL动态端口的选项,确保你没有启用。

http://frightanic.com/software-development/connecting-to-ms-sql-server-2012-express-through-jdbc-failed/

第一个障碍是学习的是MS SQL快递默认使用 动态端口。要以Java的TCP/IP方式进行连接,您需要手动配置静态端口 。

+0

嗨马塞尔,我创建数据库在微软SQL服务器管理工​​作室它有任何区别? – Rithesh 2013-02-11 13:13:14

+0

嗨@Marcel Stor需要在命令提示符下运行telnet localhost 1433或? – Rithesh 2013-02-11 13:22:24

+0

@Rithesh - 是的,使用命令提示符。 – webnoob 2013-02-11 13:29:54

2

portNumber是可选的。缺省值为1433.如果使用default,则不必在URL中指定port及其前面的':'。

<property name="connection.pool_size">10</property> 

它将一次只允许一个连接。我想在你的程序中的某个位置尝试打开另一个会话。

Hibernate config connection pool size

+0

hi suresh ya我给出了端口号并将池大小增加到了10,但我仍然认为它有异常有连接到SQL Server的问题 – Rithesh 2013-02-11 12:28:39

+0

一切都很好,这个链接http://knowhow.visual-paradigm.com/hibernate/solving-sql-server-connection-problem/ – 2013-02-11 13:25:48

+0

嗨suresh我已经通过该链接,启用telnet未连接到服务器,然后将安全性更改为SQL Server身份验证的结果仍然相同。 – Rithesh 2013-02-11 13:46:24

2

尝试改变网址:

<property name="connection.url">jdbc:jtds:sqlserver://localhost:1443;DatabaseName=login</property> 

从服务器地址分离的架构名称。

我用DBVisualizer中连接到MS SQL和它显示的URL配置的格式:

URL Format: jdbc:jtds:sqlserver://<server>:<port1443>;DatabaseName=<database> 
+0

用服务器的正确端口替换1443。 – 2013-02-11 13:11:32

+1

他已经做到了,阅读其他答案和他的评论。 – 2013-02-11 13:17:55

+0

这里的要点是将服务器地址与模式名称分开,将“DatabaseName = login”添加到配置中。 – 2013-02-11 13:27:50

1

我发现我的解决问题的办法。我将端口号从1433改为1434,通过参考this进行讨论。谢谢大家的支持