在SSH项目中,当项目在8个小时没有人用的情况下就会出现如下错误:
java.net.SocketException
MESSAGE: Broken pipe
STACKTRACE:
java.net.SocketException: Broken pipe
原因是mysql里面默认是数据库链接在8小时没有用的时候就会失效。
解决方法:
把hibernate的连接池换成c3p0连接池。具体操作如下:
在applicationContext-*.xml中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!--数据库属性配置 -->
<bean id="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.query.substitutions">true 'Y', false 'N'</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.c3p0.timeout">1800</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
</props>
</property>
</bean>
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"
value="com.mysql.jdbc.Driver">
</property>
<property name="jdbcUrl" value="jdbc:mysql://localhost/xsdData?useUnicode=true&characterEncoding=utf-8">
</property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
<!-- 连接池中保留的最小连接数。-->
<property name="minPoolSize">
<value>5</value>
</property>
<!-- 连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize">
<value>30</value>
</property>
<!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0-->
<property name="maxIdleTime">
<value>25000</value>
</property>
<!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">
<value>5</value>
</property>
<property name="maxStatements">
<value>1000</value>
</property>
<!-- 初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize">
<value>10</value>
</property>
<property name="idleConnectionTestPeriod">
<value>18000</value>
</property>
<property name="acquireRetryAttempts">
<value>30</value>
</property>
<property name="breakAfterAcquireFailure">
<value>true</value>
</property>
<property name="testConnectionOnCheckin">
<value>true</value>
</property>
<property name="testConnectionOnCheckout">
<value>true</value>
</property>
<property name="checkoutTimeout">
<value>30000</value>
</property>
<property name="automaticTestTable">
<value>C3P0TestTable</value>
</property>
</bean>
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" />
<property name="hibernateProperties" ref="hibernateProperties"/>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</beans>
注:记得引入c3p0-0.9.0.jar这个包
分享到:
相关推荐
7. 断开连接:完成操作后,使用`exit`命令关闭MySQL客户端,然后在终端中输入`exit`断开SSH连接。 安全注意事项: - 为了增强安全性,建议使用SSH密钥对认证而非密码认证。 - 不要在命令行中直接输入密码,避免明文...
2. **数据库连接**:SQLyog 支持多种连接方式,包括标准 TCP/IP、SSH 隧道、SSL 安全连接等,确保了在不同网络环境下都能稳定连接到 MySQL 服务器。 3. **数据导入导出**:用户可以直接将 `.sql` 文件导入到数据库...
然而,在使用过程中,可能会遇到一些问题,如数据库连接资源无法释放,导致“Too many connections”错误。本文将深入探讨这个问题的原因以及解决方案。 当CI框架在处理大量并发请求时,如果每个请求都创建一个新的...
5. **断开连接**:完成操作后,使用`exit`或`quit`命令安全地断开数据库和SSH连接。 在这个"ssh_test"文件中,可能包含了设置SSH连接的详细指南,数据库配置信息,以及执行CRUD操作的示例脚本。这可能对学习如何在...
5. **安全最佳实践**:在处理数据库文件时,要确保遵循安全规范,比如定期更改密码,限制对数据库的访问权限,不在不安全的网络上传输敏感数据,以及在不使用SSH会话时及时断开连接。 这个实例可能还包括如何设置...
在SSH整合中,它作为基础工具库,用于管理数据库连接池中的对象生命周期,如创建、分配、回收和销毁数据库连接。 **Apache Commons DBCP**:`commons-dbcp-1.2.1.jar`是Apache Commons的另一个子项目,它基于`...
- **Use keep alive**:保持连接活跃,防止长时间无数据传输导致连接断开。 - **Timeout**:设置超时时间,如果命令执行超过设定时间未返回,SSH Sampler将中断连接。 通过组合使用多个SSH Sampler,你可以构建复杂...
1. **读取并解析配置文件:** 应用程序启动时,Hibernate会读取配置文件(如`hibernate.cfg.xml`),从中获取数据库连接信息、事务管理策略等配置。 2. **读取并解析映射信息,创建SessionFactory:** 除了配置文件...
SSH是一种网络协议,主要用于加密网络连接,确保数据传输过程中的安全性。它允许用户在不安全的网络环境中进行安全的登录、命令执行和文件传输。在Android中使用SSH,通常涉及到以下几个关键步骤: 1. **添加SSH库*...
8. **SSH会话管理**:`screen`或`tmux`是终端多路复用器,允许在SSH会话中创建多个窗口并持久化会话,即使断开连接后也能恢复。 关于MySQL,它是最流行的开源关系型数据库管理系统。在SSH环境下,你可以: 1. **...
5. **会话保持**:使用`screen`或`tmux`创建多窗口会话,即使断开SSH连接,会话仍可保留。 6. **查询(Query)**:SSH通常不直接支持数据库查询,但可以通过SSH隧道访问远程数据库,如`mysql -h 127.0.0.1 -P端口 -...
18. **可重新连接的远程GNU screen**:结合`screen`和`nohup`命令,即使SSH会话断开,程序也可以在后台继续运行。 19. **继续SCP大文件**:如果SCP传输中断,可以重新运行相同的命令来恢复传输。 20. **通过SSH...
### 数据库(单实例)启动、关闭操作指南 ...- 在关闭数据库前,确保所有的会话已经断开连接。 通过上述步骤,您可以顺利完成Oracle单实例数据库的启动与关闭操作,同时也能更好地理解这些过程背后的原理和技术细节。
4. 连接结束后,SSH 会安全地断开连接,确保信息不被泄露。 为什么使用 SSH? 1. 安全性:SSH 提供的加密机制保护了传输的数据,防止中间人攻击和其他窃听行为。 2. 身份验证:SSH 支持多种身份验证方法,包括公钥...
6. **SSH会话管理**:了解如何使用`screen`或`tmux`进行多会话管理,即使在断开连接后也能保持会话的活跃。 7. **安全性最佳实践**:学习SSH的安全配置,如定期更换密钥,限制SSH版本,禁用密码认证,以及使用...
为了确保传输的安全性,现代的FTP服务器通常使用FTP over TLS/SSL(FTPS)或SFTP(SSH File Transfer Protocol),在Python中可以使用`ftplib`的SSL支持或者第三方库如`paramiko`。 在整个过程中,需要注意以下几点...
1. **资源管理:**在传统的JDBC中,数据库连接的获取与释放过程相对繁琐且容易出现资源泄露的问题。Hibernate通过提供`SessionFactory`和`Session`等机制,极大地简化了这一过程。 2. **对象关系映射(ORM):**...
在处理大量并发连接的数据库应用中,系统可能需要处理大量同时打开的文件。可以通过编辑`/etc/security/limits.conf`来增加`* hard nofile 8192`和`* soft nofile 10240`这两行,提升用户(特别是数据库服务用户)...
注意安装路径应避免包含空格或特殊字符,以免后续使用中出现问题。 #### 三、GPAdmin 配置指南 1. **添加服务器** 打开 GPAdmin 应用程序后,选择菜单栏中的【文件】→【添加服务器】选项。此时将弹出一个配置...