程序员开发实例大全宝库

网站首页 > 编程文章 正文

普通web项目使用druid及打包可运行jar包过程

zazugpt 2024-09-28 03:59:50 编程文章 253 ℃ 0 评论

本文说明基于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启动时的一些参数。可满足生产运行要求。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表