Connection Reset by Peer Fehler
Ich bin immer folgende exception
[Microsoft][SQLServer 2000 Driver for JDBC]Connection reset by peer: socket write error
Dessen, was auf dem Anwendungsserver, wenn die web-app versucht, auf eine Datenbank auf einem anderen Computer über ein Netzwerk. Jetzt habe ich gelesen das einige Beiträge in diesem und gefunden, dass viele verschiedene Antworten. War ein Upgrade auf die jtds-Treiber von der com.microsoft.jdbc.sqlserver.SQLServerDriver
Fahrer, dass wir derzeit. Einige sagen zu ändern Sie die Größe des Pools, einige sagen, das die firewall schließen der verbindungen. Aber wir alle in diese Beiträge, sagt Sie lösen das problem durch einen Neustart des application Servers. Aber mein problem unterscheidet sich da der Fehler pop-up einmal in eine Weile, führen eine Reihe von Fehlern, dann gehen Sie Weg und das system funktioniert gut.
Sprach ich mit dem system admin, und er sagte mir, dass es keine Netzwerkausfälle und besteht darauf, es ist nicht das Netzwerk.
Meine Frage ist also, für diejenigen von Ihnen, die haben dieses Problem gelöst, welche Lösung ist die beste? Aktualisiere ich den Treiber, ändern Sie die Einstellungen für den Verbindungspool, upgrade auf C3P0 in hibernate?
Unten ist die spring-xml-Datei für die Konfiguration der hibernate datasource
<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>
Und hier ist der Spring-XML-Datei für den Hibernate-session-factory für diese datasource
<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>
Ein anderer Hinweis: Diese datasource bereit ist, nur, ob das hilft, dieses problem ein bisschen leichter zu beheben.
Dank!
InformationsquelleAutor Zoidberg | 2009-10-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stellen Sie sicher, dass Sie die richtigen Grundlagen wie beispielsweise hostname und port. Auch, überprüfen Sie bitte, dass die firewalls an beiden enden nicht beeinträchtigen D. H. zulassen von Datenverkehr durch die erforderlichen ports.
TCP-reset bedeutet, dass etwas auf der anderen Seite, aber die Verbindung wurde zwangsweise geschlossen vom anderen Ende, siehe hier, das scheint mir typisch für ein firewall-oder IPS-system. Wenn alle diese basic-check wurden durchgeführt, dann ist der beste Weg zu gehen wäre ein upgrade Ihrer software-im Fall von obskuren bugs und versuchen Sie es erneut.
InformationsquelleAutor NT_