跳到主要内容

宝兰德 AppServer 内嵌部署方案(SpringBoot3 可执行 jar)

用宝兰德 BES(微服务版 SpringBoot 版,BN11.5.0.009)替换 JeecgBoot 内嵌的 Tomcat,直接打成可执行 jar,java -jar 启动,无需单独安装 AppServer 服务端。所有改动集中在启动模块 jeecg-module-system/jeecg-system-start

前置条件

  • JDK 17+
  • JeecgBoot 3.7+(SpringBoot 3.x,jakarta.* 命名空间);
  • BES 介质:BES-APPSERVER-SPRINGBOOT-11.0-BN11.5.0.952.009.tar.gz
  • License 文件:bes.11.0_Universal.lic.txt
  • 运行依赖的中间件:MySQL、Redis

一、安装 BES 依赖 jar 到本地 Maven 仓库

BES 的 jar 不在公共中央库,先用官方脚本装到本地仓库(groupId 统一 com.bes.appserver,version 11.5.0.009)。

# 解压产品包
cd "D:\存放宝兰德的目录\BES SpringBoot 3.x"
tar -xzf "BES-APPSERVER-SPRINGBOOT-11.0-BN11.5.0.952.009.tar.gz" -C _extract

# 在含 lib 目录的根目录执行安装脚本
cd _extract
.\installlib.bat

执行成功会输出 11 行 info: install com.bes.appserver:xxx:11.5.0.009 success.,且本地仓库 com\bes\appserver\ 下能看到各模块目录。

Linux 用 chmod +x installlib.sh && ./installlib.sh;装到私服(Nexus)用 deploylib.bat <repositoryId> <url>

JeecgBoot 单体版只需用到下面两个 jar:

jar作用
bes-lite-spring-boot-starter内嵌 BES 核心,提供 Servlet 容器(必选)
bes-websocketWebSocket 支持(在线消息/在线用户用到)

二、修改 jeecg-system-start/pom.xml

文件:jeecg-module-system/jeecg-system-start/pom.xml

1、注释 Tomcat starter,加入 BES 依赖

<!--    <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>-->

<!-- 宝兰德 BES 内嵌容器(替代 Tomcat) -->
<dependency>
<groupId>com.bes.appserver</groupId>
<artifactId>bes-lite-spring-boot-starter</artifactId>
<version>11.5.0.009</version>
</dependency>
<!-- WebSocket 支持 -->
<dependency>
<groupId>com.bes.appserver</groupId>
<artifactId>bes-websocket</artifactId>
<version>11.5.0.009</version>
</dependency>

2、排除传递依赖进来的 Tomcat

Tomcat 还会通过 jeecg-system-bizjeecg-module-demo 传递进来,需在这两个依赖上排除 spring-boot-starter-tomcat(只去掉容器 tomcat-embed-core/websockettomcat-embed-el 会自动保留,供校验框架使用):

<!-- SYSTEM 系统管理模块 -->
<dependency>
<groupId>org.jeecgframework.boot3</groupId>
<artifactId>jeecg-system-biz</artifactId>
<version>${jeecgboot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- DEMO 示例模块 -->
<dependency>
<groupId>org.jeecgframework.boot3</groupId>
<artifactId>jeecg-module-demo</artifactId>
<version>${jeecgboot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>

3、为 TomcatFactoryConfig 添加条件注解

 @Configuration
@ConditionalOnClass(name = "org.apache.catalina.connector.Connector")
public class TomcatFactoryConfig {

三、放入 License

License 过期需重新申请时:用 starter jar 生成注册码,联系宝兰德换新文件。

java -classpath bes-lite-spring-boot-starter-11.5.0.009.jar com.bes.appserv.lic.RegistrationTool gen-regcode

把 License 复制成 bes.lic.txt 放进启动模块的 resources 目录,随 jar 一起打包,运行时 BES 自动从 classpath 读取,java -jar 启动无需任何额外参数:

Copy-Item "D:\存放license的目录\bes.11.0_Universal.lic.txt" `
"D:\jeecg-project\jeecg-boot\jeecg-module-system\jeecg-system-start\src\main\resources\bes.lic.txt"

也可不打进 jar,改为启动时用参数指定外置目录(适合生产环境隔离 License):

# 把 bes.lic.txt 放到某目录,如 D:\bes\license
java "-Dcom.bes.enterprise.licenseDir=D:\bes\license" -jar jeecg-system-start-3.8.5.jar

四、打包

cd D:\jeecg-project\jeecg-boot (项目目录)
mvn clean package -pl jeecg-module-system/jeecg-system-start -am -DskipTests

产物:jeecg-system-start/target/jeecg-system-start-3.8.5.jar(含全部嵌套依赖,约 424 MB)。

校验 jar 内容(应有 BES、tomcat-embed-el,无 tomcat-embed-core):

Add-Type -AssemblyName System.IO.Compression.FileSystem
$z = [System.IO.Compression.ZipFile]::OpenRead("打包之后jar的路径``")
$z.Entries | ? { $_.FullName -match 'BOOT-INF/(lib/(bes-|tomcat-embed)|classes/bes.lic.txt)' } | % { $_.FullName }
$z.Dispose()

期望输出:

BOOT-INF/lib/tomcat-embed-el-10.1.44.jar
BOOT-INF/lib/bes-lite-spring-boot-starter-11.5.0.009.jar
BOOT-INF/lib/bes-websocket-11.5.0.009.jar
BOOT-INF/classes/bes.lic.txt

五、启动与运行

确保 MySQL、Redis 可用后,直接启动(默认端口 8080):

java -jar jeecg-system-start-3.8.5.jar

启动成功日志:

BES Application Server 11.0 (build 11.5.0.952)
(patch time 2026-04-15 14:03) (patch build BES11.5.0.952.009)
Copyright (c) 2018-2026 Beijing Baolande Software Corporation. All Rights Reserved.

License information :
Customer Name : Partner Dev
Project Name : N/A
License Type : EVALUATE
Expiry Date : 2026-12-31 00:00:00
----------------------------------------------------------------

日志出现 BesServletWebServerFactory / Starting Servlet engine: [BES Application Server ...] / BES started on port 8080,即表示 Servlet 容器已由 BES 接管。

使用 http://[ip]:[端口号]/doc.html 查看是否访问成功