Spring Boot 使用Jar打包发布, 并使用 Embedded Jetty/Tomcat 容器

2021-06-15 21:04

阅读:365

标签:继承   queue   artifact   time   web   str   idle   container   final   

Jar包发布

在项目pom.xml中, 如果继承了Spring Boot的starter parent, 那么默认已经包含打包需要的plugins了, 设置为jar就能直接打包成包含依赖的可执行的jar

    parent>
        groupId>org.springframework.bootgroupId>
        artifactId>spring-boot-starter-parentartifactId>
        relativePath/> 
    parent>

如果不使用Spring Boot的starter parent, 那么需要在中添加plugins, 这样也能打包包含依赖的可执行jar

build>
    plugins>
        plugin>
            groupId>org.apache.maven.pluginsgroupId>
            artifactId>maven-compiler-pluginartifactId>
            configuration>
                source>1.8source>
                target>1.8target>
            configuration>
        plugin>
        plugin>
            groupId>org.springframework.bootgroupId>
            artifactId>spring-boot-maven-pluginartifactId>
            configuration>
                mainClass>{你的Application入口class}mainClass>
            configuration>
            executions>
                execution>
                    goals>
                        goal>repackagegoal>
                    goals>
                execution>
            executions>
        plugin>
    plugins>
build>

 

使用内置Tomcat容器

pom.xml配置

org.springframework.boot
    spring-boot-starter-web
org.springframework.boot
    spring-boot-starter-tomcat

 

使用内置Jetty容器

pom.xml配置

org.springframework.boot
    spring-boot-starter-web
    org.springframework.boot
            spring-boot-starter-tomcat
        org.springframework.boot
    spring-boot-starter-jetty

在Application入口, 增加启动参数设置, 在Spring Boot 2.0之后, JettyServletWebServerFactory代替了JettyEmbeddedServletContainerFactory.

@Bean
public JettyServletWebServerFactory jettyEmbeddedServletContainerFactory(
        @Value("${server.port:9090}") final String port,
        @Value("${jetty.threadPool.maxThreads:200}") final String maxThreads,
        @Value("${jetty.threadPool.minThreads:8}") final String minThreads,
        @Value("${jetty.threadPool.idleTimeout:60000}") final String idleTimeout) {
    JettyServletWebServerFactory jettyContainer = new JettyServletWebServerFactory();
    jettyContainer.setPort(Integer.valueOf(port));
    final QueuedThreadPool threadPool = new QueuedThreadPool();
    threadPool.setMaxThreads(Integer.valueOf(maxThreads));
    threadPool.setMinThreads(Integer.valueOf(minThreads));
    threadPool.setIdleTimeout(Integer.valueOf(idleTimeout));

    jettyContainer.setThreadPool(threadPool);
    return jettyContainer;
}

这样在命令行中启动时, 可以通过命令行参数进行配置

$ java -jar your-project.jar --server.port=8081 --jetty.threadPool.maxThreads=300

.

 

.

Spring Boot 使用Jar打包发布, 并使用 Embedded Jetty/Tomcat 容器

标签:继承   queue   artifact   time   web   str   idle   container   final   

原文地址:https://www.cnblogs.com/milton/p/9729010.html


评论


亲,登录后才可以留言!