我收到以下异常
[Microsoft] [用于JDBC的SQLServer 2000驱动程序]按对等方重置连接:套接字写入错误
当Web应用程序尝试通过网络访问位于另一台计算机上的数据库时,它会在应用程序服务器上发生。现在我已经阅读了一些关于此的帖子,并找到了许多不同的答案。一个是从我们当前使用的com.microsoft.jdbc.sqlserver.SQLServerDriver
驱动程序升级到jtds驱动程序。有人说更改池大小,有人说它的网络防火墙关闭了连接。但是,这些帖子中的每个人都说他们通过重新启动应用程序服务器来解决问题。然而,我的问题不同,因为错误会偶尔弹出一次,导致一堆错误,然后消失,系统将正常工作。
我和系统管理员交谈过,他告诉我没有网络中断,并且坚持认为它不是网络。
所以我的问题是,对于那些解决了这个问题的人来说,哪种解决方案最好?我是否升级驱动程序,更改连接池设置,在休眠状态下升级到C3P0?
下面是用于配置hibernate数据源的spring xml
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<property name="url" value="jdbc:microsoft:sqlserver://databasecomp.company.com:1433;databaseName=DBNAME;" />
<property name="username" value="username" />
<property name="password" value="password" />
</bean>
这是用于此数据源的Hibernate会话工厂的Spring XML
<bean id="theSessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
<property name="dataSource" ref="dataSource" />
<property name="useTransactionAwareDataSource" value="true" />
<property name="mappingResources">
<list>
<!-- Omitted for clarity -->
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="connection.pool_size">1</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<prop key="hibernate.cglib.use_reflection_optimizer">false</prop>
</props>
</property>
另一个注意事项:此数据源仅准备好,如果这有助于使此问题更容易修复。
谢谢!
答案 0 :(得分:3)
确保您拥有正确的基础知识,例如主机名和端口。另外,请检查两端的防火墙是否干扰,即允许流量通过所需的端口。
TCP重置意味着某些东西在另一端,但是从另一端强行关闭连接,请参阅here,这对我来说似乎是典型的防火墙或IPS系统。如果所有这些基本检查都已完成,那么最好的方法是在出现模糊错误的情况下升级您的软件,然后再试一次。