ssm项目部署到服务器的问题

1.1、部署之前:记得把数据库连接的密码统一

ssm网页无法链接MySQL ssms无法连接到服务器_intellij-idea

后面还有报错:
Connections could not be acquired from the underlying database!
连接不上数据库
我这里主要的原因就是数据库密码,因为我本地数据库的密码和服务器数据库的密码不一致

解决方式

如下图:

服务器端:

ssm网页无法链接MySQL ssms无法连接到服务器_java_02

ssm框架:

ssm网页无法链接MySQL ssms无法连接到服务器_ssm网页无法链接MySQL_03

这里只是做演示,密码还是设置得复杂点。。。

1.2、数据库连接断开的问题

mysql数据库存在最大连接时限,一般是8小时,超出时限时会出现数据库连接不上的问题

mysql5之前的版本,可以在jdbc连接的url中加入:autoReconnect = true

mysql5之后:

这个问题也可以通过修改mysql最大连接时限来解决,但似乎不是最佳的解决方式,因为一旦超出连接时限,服务器数据库的连接依然会断开。

目前我搜到的最优解:

使用c3p0数据库连接池,它有一个属性:

c3p0可以设置每隔一段时间检测连接是否有效

不知道其他连接池是不是也有一样的属性。。。

<!--设置每隔60s检测数据库连接是否有效-->
<property name="idleConnectionTestPeriod" value="60"/>

c3p0数据库连接池的使用:

  • 导入c3p0依赖
<!-- 数据库连接池 -->
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.2</version>
</dependency>
  • 在spring的xml文件配置数据源
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>

    <!-- c3p0连接池的私有属性 -->
    <!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3-->
    <!--最大连接数 -->
    <property name="maxPoolSize" value="30"/>
    <!--连接池的最小连接数 -->
    <property name="minPoolSize" value="10"/>
    <!-- 初始化连接池中的连接数,取值应在最小连接数与最大连接数之间,默认为3-->
    <property name="initialPoolSize" value="2"/>
    <!-- 连接超时时间 -->
    <property name="checkoutTimeout" value="10000"/>
    <!--每隔60s检测数据库连接是否有效,这个值要小于MySQL的wait_timeout(默认为8小时)时间,默			认0-->
    <property name="idleConnectionTestPeriod" value="60"/>
    <!--当池中的连接耗尽的时候,一次性增加的连接数量,默认为3 -->
    <property name="acquireIncrement" value="2"/>

    <!--statements缓存大小 -->
    <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。
         默认值: 0 -->
    <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。
        但由于预缓存的statements
     属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
    如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0-->
    <property name="maxStatements" value="400"/>
    <property name="maxStatementsPerConnection" value="100"/>

    <!-- 关闭连接后不自动commit -->
    <property name="autoCommitOnClose" value="false"/>
    <!-- 当获取连接失败重试次数 -->
    <property name="acquireRetryAttempts" value="2"/>
    <!--重新尝试的时间间隔,默认为:1000毫秒-->
    <property name="acquireRetryDelay" value="1000"/>

</bean>
参考链接:

 () 

 ()