# 国产中间件适配-TongWeb
TongWeb是东方通应用服务器中间件。类似Tomcat、Jboss等,提供了一套完整的Java应用服务器解决方案。低代码能够运行在TongWeb下,需要对应用打包进行一些改造。
# 后端打包
# 1.工程改为jdk8
目前Tongweb 7 要求jdk8,低代码工程需要修改以下地方
# 1)修改api/pom.xml
<properties>
<java.version>1.8</java.version>
......
</properties>
如果引入了工作流模块,需要改用jdk8版本的jar包
<dependency>
<groupId>net.bingosoft.fuse.oss</groupId>
<artifactId>lcdp-services-workflow-jdk8</artifactId>
<version>${lcdp.version}</version>
</dependency>
# 2)修改ide配置
以Intellij IDEA为例,需修改以下地方:
File -> Project Structure -> project:修改SDK和language level
File -> Project Structure -> Modules:选择想要修改的模块将 Sources和Dependencies都修改成jdk8
# 2.应用打包成war包
正常情况下,低代码应用和常见的spring boot工程一样,内置了Tomcat,可以直接启动,为了将应用部署到外部的web服务器Tongweb中,所以需要更改工程打包方式为war。
# 1)将pom文件打包方式更改为 war
<packaging>war</packaging>
# 2)排除内置 Tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--排除自带的tomcat依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
# 3)添加tomcat编译时依赖,需要用到 servlet-api 的相关 jar 包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- tomcat范围改成provided -->
<scope>provided</scope>
</dependency>
# 4)继承 SpringBootServletInitializer 并重写 configure 方法
public class WebServer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WebApplication.class);
}
}
- 类名随意,放置到工程根目录下
- 本例中的WebApplication.class即为原springboot启动类
# 5)执行打包指令
#!/bin/sh
cd api
mvn clean package -Dmaven.test.skip=true
在target目录中的工程同名的文件夹下,有一个war包和app目录,这些是后端部署中需要用到的部署文件。
# 后端部署
# 1)修改配置
修改web/config.xml里的配置,所有URL全部改成绝对地址,样例如下:
login: true
apiBaseUrl: "http://127.0.0.1:8088/demo"
orchServerBaseUrl: "http://127.0.0.1:8088/demo/serverless"
resourceBaseUrl: "http://127.0.0.1:8088/demo"
serviceBaseUrl: "http://127.0.0.1:8088/demo/service"
authorizeUrl: "http://127.0.0.1:8088/demo/$perms"
orchBaseUrl: "http://127.0.0.1:8088/demo/orchestration"
onlineide: "https://lowcode.bingosoft.net/cloud/ide/index.html"
service.menu.url: "http://127.0.0.1:8088/demo/menu"
oauth2.clientId: "${oauth2.client-id}"
oauth2.serverUrl: "${oauth2.server-url}"
oauth2.userInfo: "${oauth2.user-info-uri}"
oauth2.iamapi: "${oauth2.iam-api}"
file.upload: "http://127.0.0.1:8088/demo${file.upload}"
file.download: "http://127.0.0.1:8088/demo${file.download}"
ide:
docUrl: "${doc-url}"
其中,demo为tongweb中的context-root,应用访问上下文路径。
# 2)部署服务
参考Tongweb操作手册,采用文件部署的方式,用war包完成后端服务部署。
以下介绍其中一种自动部署的方式,将war包上传至kernel/autodeploy目录中,app目录上传至kernel目录
# 特别注意
1)需要在tongweb根目录下启动tongweb,否则系统相对路径会出错,如本例 tongweb7.0 版本中,在 kernel 目录执行启动命令sh bin/startservernohup.sh
2)如果出现rabbitmq连接的错误,则补充rabbitmq相关配置:
# application.yml
spring:
cloud:
stream:
bindings:
workflowClientChannel:
destination: ${oauth2.client-id} # 通讯的chanel默认情况下和 client-id 保持一致
group: integration
contentType: "application/json"
# 流程服务所在 MQ
rabbitmq:
host: changeit
port: changeit
username: changeit
password: changeit
# 前端打包
执行build-ui.sh或build-ui.bat;
执行后,将会在 ui/dist/build 目录下生成前端资源包。
# 前端部署
找到部署包目录下的 config.js 文件,修改其中的 configUrl 配置项,指向后端的服务地址
window.config = {
configUrl: 'https://domain:port/context-path/config.json' // 后端服务地址,这里需要用绝对地址。
};
前端包上传至kernel/autodeploy目录中,目录名即为访问上下文路径。