发表于: 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连接池的一些基本操作。
评论