# 国产中间件适配-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.shbuild-ui.bat

执行后,将会在 ui/dist/build 目录下生成前端资源包。

# 前端部署

找到部署包目录下的 config.js 文件,修改其中的 configUrl 配置项,指向后端的服务地址

window.config = {
    configUrl: 'https://domain:port/context-path/config.json' // 后端服务地址,这里需要用绝对地址。
};

前端包上传至kernel/autodeploy目录中,目录名即为访问上下文路径。

顶部