发表于: 2018-05-19 23:03:34

1 1178


今天完成的事情:

      1.完成了在服务器上使用maven命令运行单元测试;

      (1)idea操作单元测试运行结果;

      

      (2)将单元测试项目文件夹整体copy到远程linux系统下,在项目一级子目录下执行mvn test操作实现运行单元测试;

      


      

      2.学习了maven的运行命令生成jar包,值得注意的时maven中test操作会自动生成war包,如果想生成jar包,需要对pom.xml配置文件进行操作。

      (1)修改pom.xml中为如下,jar的位置原来为war;

      

      (2)在pom.xml中增加插件配置,并增加含有main方法的类(MainClass)作为程序入口。

      

      (3)点击如下test操作运行会在target目录下生成jar包。

           

      3.使用c3p0连接池生成数据连接。

      (1)配置文件;

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
   <default-config>
       <property name="jdbcUrl">jdbc:mysql://localhost:3306/myjava?serverTimezone=UTC</property>
       <property name="driverClass">com.mysql.jdbc.Driver</property>
       <property name="user">root</property>
       <property name="password">314317</property>
       <property name="initialPoolSize">5</property>
       <property name="minPoolSize">2</property>
       <property name="acquireIncrement">3</property>
       <property name="maxPoolSize">5</property>
   </default-config>
</c3p0-config>

      (2)获取连接c3p0中连接的工具类;

public class MyC3P0Util {
static ComboPooledDataSource comboPooledDataSource = null;
   static {
comboPooledDataSource = new ComboPooledDataSource("mysql");
   }

public static Connection getConnection(){
try {
return comboPooledDataSource.getConnection();
       } catch (SQLException e) {
e.printStackTrace();
           return null;
       }
}

public static void close(Connection conn, PreparedStatement pst, ResultSet rs){
    if (rs!=null){
         try {
                 rs.close();
           } catch (SQLException e) {
                e.printStackTrace();
           }
     }
   if (pst!=null){
          try {
                 pst.close();
           } catch (SQLException e) {
                 e.printStackTrace();
           }
     }
      if (conn!=null){
           try {
                conn.close();
           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
   }
}

  (3)调用1000次循环获取连接并归还,运行正常,如果没有如下代码中finally中最后归还连接,将会出现如下程序一直等待获取连接最后出现异常现象。

Long starttime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
Connection coon = MyC3P0Util.getConnection();
   System.out.println(coon);
   PreparedStatement preparedStatement = null;
   ResultSet rs = null;
   String sql = "select * from apply where name = ?";
   try {
preparedStatement = coon.prepareStatement(sql);
       preparedStatement.setString(1,"zyq");
       rs = preparedStatement.executeQuery();
       while (rs.next()){
System.out.println("姓名"+rs.getString("name")+";性别"+rs.getString("sex")
+";qq:"+rs.getString("qq")+"学校:"+rs.getString("school")
+";城市"+rs.getString("city")+"描述:"+rs.getString("description"));
       }
} catch (SQLException e) {
e.printStackTrace();
   }finally {
MyC3P0Util.close(coon,preparedStatement,rs);
   }
}
Long endtime = System.currentTimeMillis();
System.out.println(endtime-starttime);

明天计划的事情:

      1.尝试实现在远程服务器运行任务:测试利用出c3p0连接池,在Main函数里写1000个循环调用会出现什么情况。

      2.尝试完成测试一下连接DB中断后TryCatch是否能正常处理。

遇到的问题:

      看到在远程服务器运行单元测试这个任务时,由于没有对maven的命令行操作熟知,总是认为要在单元测试类所在文件夹下运行测试,实际是在项目一级子目录下运行即可。

收获:

     1.学会了利用maven的test命令生成jar包,具体详见“今日完成的事情 2 ”;

      2.学会了在远程服务器运行单元测试的方法;

      3.学习了c3p0连接池的一些基本操作。


返回列表 返回列表
评论

    分享到