案例需求现在有一个“统一管理平台”,用于统一对接三方平台,屏蔽相同业务三方平台的差异性,减少内部平台对接的成本。正常情况下三方平台提供的 SDK 是通用的(和内部平台无关),但是有一些比较特殊的三方(假如是三方平台 A),他提供的 SDK 是给内部平台定制的。
现在java打包方式分两种,一种是war包,另一种是jar包.war包是Web应用程序格式,war 包要放在tomcat服务器webapps目录下 ,部署tomcat,war包就按照一定规则解压(如图1,图2),jar 包一般内置tomcat 服务器.
jar文件是java的归档文件,用java虚拟机可以打开,以下是打开步骤:工具java JDK方法/步骤第一步:下载安装java jdk,如果是已经安装的可以跳过第二步:安装完成后开始菜单里面会有一个JAVA的文件夹第三步:现在找到你想打开的后缀为.jar的文件。
它首先定义了一些变量和 JVM 参数,然后根据用户输入的命令执行相应的函数。start 函数启动应用程序,stop 函数停止应用程序,restart 函数停止并重新启动应用程序,status 函数检查应用程序的运行状态。
mvn install:install-file -Dfile= jar的位置 -DgroupId= jar包的groupId -DartifactId= jar包的artifactId -Dversion= jar包的version -Dpackaging= jar。我使用这种方法在开发环境是没有问题,但是在打包的时候就报找不到这个jar。
如果你很急着了解,可以直接跳到最后,看最终的Dockerfile,前面的介绍是为了大家理解原理。我们打开Spring Boot生成的jar包发现,从Spring Boot 2.3之后,Spring Boot提供了一种新的布局类型叫做“LAYERED_JAR”即分层jar包。
它的 NB 之处在于它利用了 libjvm.so 中 JVM 内部的 API AsyncGetCallTrace 来获取 Java 函数堆栈,精简后的伪代码如下:你可能要说获取个堆栈还需要搞这么复杂,jstack 等工具不是实现的很好了吗?