本文说明基于tomcat8-maven-plugin打包普通的web项目为可运行jar包的过程;
以及在实际项目执行过程中遇到的中间件连接池依赖改为druid连接池:普通web项目如何使用Druid连接池
背景介绍
- 实际项目没用使用springboot相关的内容,因此无法配置包含main方法的入口类;
- 原来项目本来不是maven管理的,是将很多的jar包放在WEB-INF/lib文件夹下,jar包也有点儿老旧,费了很大的劲将jar包进行了maven管理;这个过程就不表述了;
- 项目中有独立的web.xml文件,独立的jsp文件;
- 是一个传统的web2.0项目
- 一般该项目打包为war项目,部署在独立的tomcat或weblogic下,现在因为特殊要求,需要独立运行该项目,因此有了将普通web项目打包为可运行jar包的需要;
- 项目内部对数据库的使用依赖了tomcat或weblogic的连接池配置,需要调整为项目内部连接池处理;该过程也不涉及实际打包过程。
Druid连接池
添加pom依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>
连接获取方式
修改了程序内部数据库连接的获取方式
public void createPoolConnection() throws Exception {
if (dataSource == null) {
dataSource = new DruidDataSource();
JMXUtils.register("com.alibaba:type=DruidDataSource", dataSource);
String jdbcUrl = fdbConfig.getDBConn();
String user = fdbConfig.getDBuser();
String password = fdbConfig.getDBpasswd();
String driverClass = fdbConfig.getDBDriver();
int initialSize = fdbConfig.getInitNum();
int minPoolSize = fdbConfig.getInitNum();
int maxPoolSize = fdbConfig.getMaxNumber();
int maxActive = fdbConfig.getMaxNumber();
dataSource.setInitialSize(initialSize);
dataSource.setMaxActive(maxActive);
dataSource.setMinIdle(minPoolSize);
dataSource.setMaxIdle(maxPoolSize);
dataSource.setPoolPreparedStatements(true);
dataSource.setDriverClassName(driverClass);
dataSource.setUrl(jdbcUrl);
dataSource.setPoolPreparedStatements(true);
dataSource.setUsername(user);
dataSource.setPassword(password);
//dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(true);
dataSource.setUseGlobalDataSourceStat(true);
dataSource.setFilters("mergeStat,wall");
}
fConnect = dataSource.getConnection();
fConnect.setAutoCommit(true);
}
添加Druid的监控查看功能(可选)
在web.xml文件中添加如下配置:页面访问路径(http://ip:port/项目根路径/druid/index.html)
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
<init-param>
<!-- 允许清空统计数据 -->
<param-name>resetEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!-- 用户名 -->
<param-name>loginUsername</param-name>
<param-value>druid</param-value>
</init-param>
<init-param>
<!-- 密码 -->
<param-name>loginPassword</param-name>
<param-value>druid</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
打包可运行jar包过程
Plugins配置
<plugins>
<!-- tomcat8插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat8-maven-plugin</artifactId>
<version>3.0-r1756463</version>
<configuration>
<port>10084</port>
<path>/${context.basepath}</path>
<server>
<id>tomcat7</id>
<username>admin</username>
<password>admin</password>
</server>
<warFile>target/${finalPkgName}.jar</warFile>
</configuration>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>exec-war-only</goal>
</goals>
<phase>package</phase>
<configuration>
<finalName>${domainId}-${version}-war-exec.jar</finalName>
<httpPort>20005</httpPort>
<path>/${context.basepath}</path>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
打包
我本地有一个profile为dev的配置
mvn clean package -DskipTests -P dev
完成上述过程可以获得一个xxxxxx-war-exec.jar的文件,直接通过java命令运行即可。
更多配置
上述方式其实也是用了springboot打包时内嵌一个中间件tomcat的方式,springboot中可以通过application.yaml文件指定tomcat运行时的一些自定义配置,上述这种方式也可以通过增加一个server.xml文件配置的方式修改tomcat启动时的一些参数。可满足生产运行要求。