【spring boot 微服务】部署springboot应用程序

将一个现成的springboot项目部署成功才是我们开发springboot的目的,本文使用的是maven工具

准备工作:

要知道,jar与war的区别

https://www.cnblogs.com/wenzheshen/articles/6307696.html

jar包和war包的区别:

war是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。而jar一般只是包括一些class文件,在声明了Main_class之后是可以用java命令运行的.
它们都是压缩的包,拿Tomcat来说,将war文件包放置它的\webapps\目录下,启动Tomcat,这个包可以自动进行解压,也就是你的web目录,相当于发布了。

  
war包:是做好一个web应用后,通常是网站,打成包部署到容器中。
jar包:通常是开发时要引用通用类,打成包便于存放管理。
ear包:企业级应用,通常是EJB打成ear包。


所有的包都是用jar打的,只不过目标文件的扩展名不一样。
WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

以上是摘抄,可以直接跳过。知道下面这句话就OK了。

所以我们的目标将springboot项目的jar改成war

而构建war文件可以从以下进行:

1.pom.xml中将

<packaging>jar</packaging>改为<packaging>war</packaging>

这样就会生成war文件。

这里要注意一个问题,要引入maven插件,

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
 </plugin>

不然maven到后面的maven操作,运行war时回报异常,xxx.war中没有主清单属性。

现在出现一个主清单,是不是很意外。这回事因为我们生成的war包中没有启用SpringMVC的DispatchServler的web.xml或者Servlet初始化类,所以并不是一个完善的war包,那我就要补充它,给它加一个Servlet的初始化类。

2.通过配置,生成Servlet初始化类

package com.zk;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

import com.zk.App;

/**
 * 
 * 
 * HelloServletInitializer实现SpringBootServletInitializer
 * SpringBootServletInitializer实现WebApplicationInitializer
 * SpringBootServletInitializer  既配置Spring的DispatchServler,还会在Spring应用程序中查找Filter,Servlet,将他们绑定到Servlert容器中
 * @author zkpc
 *
 */
public class HelloServletInitializer extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder builder) {
        return builder.sources(App.class);
    }
    
}

接下来就是生成架包,运行架包了

以下是通用技术,可以好好掌握

1.进入项目根目录,运行打包命令,可以先clean,在package,

即mvn clean ,再mvn package,就可以看到war包生成

2.war有两种部署方式

第一种,如果没有删除App中的main方法,构建过程生成的war文件可以脱离应用服务器直接运行,只需运行 java -jar xxx.war

第二种,也是我们想要的,那就是放入我们的tomcat容器,注意一下,首先war放入webapps中,然后修改conf中的server.xml,将映射放入<Context docBase="C:/javatools/apache-tomcat-8.5.11/webapps/springboot02-0.0.1-SNAPSHOT.war" path="/spring-boot02" reloadable="true" source="org.eclipse.jst.jee.server:spring-boot02"/>

会发现一个问题,如果tomcat中出现/spring-boot02,那开始新建springboot项目时,默认是/,所有新建时要加入

application.properties中server.context-path=/spring-boot02

之后就是启动tomcat,运行startup.sh

输入

http://localhost:8080/spring-boot02/getDemo

以上,将springboot部署倒常规容器上成功。

猜你喜欢

转载自blog.csdn.net/qq_34491826/article/details/81260742
今日推荐