Springboot打成war包部署金蝶

Springboot项目war包部署金蝶教程

前言        

        最近客户因国产化需求,选择金蝶作为服务器中间件,要求系统部署到金蝶下运行,排除tomcat依赖,支持单体、微服务,国产中间件坑一般都比较多,因此在这记录一下,Spingboot、SpringCloud项目如何部署到金蝶下运行

环境准备

操作系统:Win11

jdk:1.8.0_381

金蝶:V9.0

服务部署

war包准备

1. 启动类改造

启动类需要继承SpringBootServletInitializer,并重写configure方法

@SpringBootApplication
public class TestWarApplication extends SpringBootServletInitializer {

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

    public static void main(String[] args) {
        SpringApplication.run(TestWarApplication.class, args);
    }
}

2. POM文件调整

服务打包方式从jar包改成war包

3. MAVEN插件调整


<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<!-- 在这里配置插件参数 -->
		<failOnMissingWebXml>false</failOnMissingWebXml> <!-- 例如,如果你不使用 web.xml -->
	</configuration>
</plugin>

上述步骤准备好之后运行MAVEN->packaging指令打包,项目下会自动生成war包及解压缩的war包文件夹

war包部署

与tomcat不同,金蝶是分域的概念,一个域一个端口,相当于一个域部署一个服务,域的位置在AAS-V9.0\domains\下面,默认有个mydomain,这下面是这个域的配置及包部署位置,如果一个金蝶要部署多个服务,则需要复制多个域出来,每个域部署一个服务。

1. 上传war包

war包部署有两种方式,第一种启动金蝶,通过中间件控制台->应用管理,创建,上传,但是我试着不好使,保存没反应,过会页面报500错误,坑,因此采用第二种,直接上传war包解压缩之后的文件夹

2. 改端口号

D:\金蝶\AAS-V9.0\domains\mydomain\config\apusic.conf

3. 配置准入IP

/domains/mydomain/config/vm.options,添加内容com.apusic.webtool.allowHosts=*

这一步不配置的话访问控制台可能会出现404的问题

服务启动

到domains/mydomain/bin下  执行./startapusic即可启动

....

启动成功了?不可能的😀,作为程序员怎么可能一气呵成,一点问题没有,尤其是这种非常规部署架构,再加上国产中间件,你懂的。下面是问题总结

问题一

        报错如下,大致意思是我们用到了,Hibernate-Validator包的注解,但是这个包启动加载的时候有方法没找到,根据下面提示,javax.validation.BootstrapConfiguration这个类在三个包下面存在,但是他加载的javaee.jar下的这个类,javaee.jar这个包是金蝶自己引入的,老版本用这个jar,新版本早已拆分程validator-api.jar和hibernate-validator.jar这两个jar了

        解决方式:把最新的jar包往AAS-V9.0\sp这个目录下放一份,重新启动,详情见附件

问题二

        报错如下,项目中用了activiti组件,启动报缺少类的问题,服务正常启动没问题,但是放到金蝶里面就有问题,怀疑是金蝶用的springboot版本和activiti版本冲突

        解决方式,引入依赖

<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter-jpa</artifactId>
    <version>${activiti.version}</version>
</dependency>

问题三

        服务启动后报一堆线程栈并提示有内存泄露的风险,服务自动停了然后重启

       解决方式如下:

        修改JVM内存,金蝶控制台->系统参数,调大JVM参数,金蝶默认的JVM参数很低,有可能带不动部署的服务,导致内存泄漏风险提示

        清除部署目录下多余的安装包,服务部署目录下默认存在default文件夹,删掉,只保留服务自身文件夹   

 问题四

        服务启动成功,接口请求404。原因是服务启动金蝶默认增加了"/服务名"的应用上下文,如需要改成自己需要的上下文。

        解决方式:金蝶控制台->应用管理,选择应用->参数配置,修改应用上下文

 问题五

        Linux下部署之后磁盘持续占用过高,把服务器打满,经过排查在服务启动目录下有个nohup.out显示已经删除,但是实际还在磁盘上,占用空间在不断上升,服务部署了一天已经占用了40多G,部署过程中发现在项目比较大的时候,启动失败有时候项目文件夹自动就被清除了,有可能跟这个有关系,坑,排查指令如下:

sudo lsof +L1 | grep '/home' | grep deleted

扩展

        金蝶也有类似springboot中内置的tomcat那种内置的jar包,可以通过引入jar包依赖的方式使用金蝶中间件,这样和平时jar包部署一样,不用部署war包,也没有上述那么多问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值