получение java.io.EOFException при попытке вставить данные в mysql из весеннего приложения mvc - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь отправить данные из весеннего приложения MVC в MySQL.иногда я получаю следующую ошибку

org.springframework.dao.DataAccessResourceFailureException: StatementCallback; SQL [insert into networkwithusdb(company,firstname,lastname,email,address1,address2,city,state,zipcode,currentemployer,currentjobtitle,primarycareerarea,secondarycareerarea) values('HCA North Texas','dd','af','bhanukiran@imomentous.info','','','','KS','','','','Facilities','Facilities')]; Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.io.EOFException

STACKTRACE:

java.io.EOFException
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963)
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1343)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1260)
    at org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
    at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:508)
    at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:1)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:395)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:518)
    at com.imomentous.hcanorthtexas.service.DatabaseService.insertNetworkData(DatabaseService.java:58)
    at com.imomentous.hcanorthtexas.controller.NetworkWithUsController.processNetworkWithUSForm(NetworkWithUsController.java:62)
    [... snip ...]    

** END NESTED EXCEPTION **

только несколько раз я получаю это исключение.

мой файл конфигурации:

<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName">
        <value>${database.driver}</value>
    </property>
    <property name="url">
        <value>${database.url}</value>
    </property>
    <property name="username">
        <value>${database.username}</value>
    </property>
    <property name="password">
        <value>${database.password}</value>
    </property>
    <property name="maxActive" value="5" />
    <property name="initialSize" value="3" />
    <property name="validationQuery" value="SELECT 5 FROM DUAL" />
    <property name="testOnBorrow" value="true" />

</bean>

, и я использую свойстваas:

database.driver =com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/XXXmobiledb
database.username=XXXX
database.password=XXXX

я использую: mysql-connector-java-5.0.5.jar сервер mysql 5.

иногда соединение с базой данных работает правильно, и я получаю результат.

но иногда выдает ошибку.в чем может быть проблема?Если у кого-то есть идеи, пожалуйста, скажите .. спасибо

Ответы [ 4 ]

1 голос
/ 19 сентября 2011

Дело в том, что MySQL отключит открытый сокет через заданное время. Рекомендуется использовать пул соединений (например, c3p0).

Смотрите это сообщение на форуме MySQL - http://forums.mysql.com/read.php?39,143312,180718#msg-180718. Это должно решить его для вас.

0 голосов
/ 19 сентября 2011

Чтобы MySQL не отключать сеанс после определенного времени простоя, вы можете использовать Spring OpenSessionInViewFilter или Interceptor для обработки сеанса.

Thisпотребуются дополнительные настройки фильтра сеанса в вашем файле web.xml.Вы можете подражать этот пост .

0 голосов
/ 19 сентября 2011

Это может произойти после долгого простоя. Добавьте запрос проверки к вашему бину источника данных:

<property name="validationQuery">
<value>Select 1</value>
</property>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...