2

jar jtds-1.3.0.jar を使用して hibernate 経由で 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>

しかし、プロジェクトを実行するたびに、ネットワークエラーと接続が拒否されたため、エラーが発生しました。まだ発生しているエラーについては、このリンクを参照しました。以下は私のスタックトレースです

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)

以下の画像は、 サーバー構成マネージャー どこが間違っているのか誰でも教えてくれます。

4

4 に答える 4

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 Express がデフォルトで動的ポートを使用していることを知ることでした。Java から TCP/IP 方式で接続するには、静的ポートを手動で構成する必要があります。

于 2013-02-11T13:02:20.967 に答える
2

はいportNumberはオプションです。デフォルトは1433defaultです。portURL

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

一度に 1 つの接続しか許可されません。プログラムのどこかで別のセッションを開こうとしていると思います。

ご覧ください

Hibernate 構成接続プールのサイズ

于 2013-02-11T12:13:24.160 に答える
2

URL を次のように変更してみてください。

<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>
于 2013-02-11T13:08:47.853 に答える
1

問題の解決策を見つけました。この議論を参考に、ポート番号を 1433 からアクティブな 1434 に変更しました。ありがとうございました

于 2013-02-12T11:27:11.837 に答える