Tomcat 服务模块示例

示例内容

基于 Tomcat 部署运行 war。

说明:在 war 中提供了一个 index.jsp,可以显示所有的服务运行环境变量,方便大家了解和验证服务部署定义文件中的属性定义和环境变量。

示例资源

demo-tomcat.war

部署过程

1. 在 /model/service 目录下创建如下的目录和文件:

    |-- /model/service/demo-nginx            // 服务模块根目录
        |-- deploy                               // 服务定义目录
            |-- production.def.xml                   // 服务部署定义文件 
        |-- dist                                 // 服务资源目录
            |-- demo-tomcat.war                      // 服务部署资源文件
        |-- deploy.m                             // 服务模块标识文件
        |-- app.m                                // 服务网关定义文件

其中:

  • deploy.m 服务模块标识文件,文件内容为空
  • app.m 服务网关定义文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<service>
    <!-- 网关注册服务名 -->
    <name>demo-tomcat</name>
    <!-- 网关注册路径 -->
    <request_path>/demotomcat</request_path>
    <!-- 是否保留主机 -->
    <preserve_host>false</preserve_host>
    <!-- 是否截断URL -->
    <strip_request_path>true</strip_request_path>
    <!-- 服务访问路径 -->
    <upstream_url>http://{{.Env.DEMO_TOMCAT_SERVICEADDRESS}}:{{.Env.DEMO_TOMCAT_PORT}}/demo-tomcat</upstream_url>
</service>

说明:在 app.m 服务网关定义文件中,声明当前服务的网关访问路径是 /demotomcat,指向的 tomcat 服务下的 /demo-tomcatupstream_url 的地址来自服务部署定义文件中的属性定义所对应的环境变量。

  • production.def.xml 服务部署定义文件,文件内容如下:
<service>
    <!-- 属性定义 -->
    <properties>
        <property name="serviceAddress" value="${appsvc.serviceAddress}">
            <label label = "服务地址"/>
        </property>
        <property name="port" value="${appsvc.port}">
            <label label = "端口(port)"/>
        </property>
    </properties>
    <!-- 容器定义 -->
    <spec platform="app-container">
        <option name="name" value="appsvc" />
        <option name="instance" value="tomcat" />
        <option name="container" value="java" />
    </spec>
</service>

说明:在 production.def.xml 服务定义文件中,在 spec 部署定义部分声明当前模块的部署运行环境是 tomcat;在 properties 属性定义中声明了两个属性 serviceAddressport,值引用来自部署定义中的 tomcat,这两个属性会自动生成两个环境变量 DEMO_TOMCAT_SERVICEADDRESSDEMO_TOMCAT_PORT

  • demo-tomcat.war 要部署在 tomcat 中的 war 包,参见 demo-tomcat.war

2. 应用发布。

3. 测试运行: //{entry}/{serviceName}/demotomcat/,运行效果如下:

运行剖析

在上面的示例已经部署运行就绪后,我们接下来通过监控工具对实际运行环境和运行机制给大家做剖析。

1. 从 应用/服务管理 进入服务的 监控 面板页进入 tomcat 的终端。

2. 用以下命令进入 /usr/local/tomcat/webapps 目录:

cd /usr/local/tomcat/webapps

说明:可以看到已经将 demo-tomcat/dist/demo-tomcat.war 复制到 /usr/local/tomcat/webapps 目录下。

3. 在 /usr/local/tomcat/conf/server.xml 文件中可以找到 tomcat 服务配置的监听端口,本例中是 8080。

4. 从以上内容可以看出,内部的访问地址为 localhost:8080/demo-tomcat/。 img

5. 接下来我们进入 监控 面板的 网关监控 页,从左侧菜单选择进入 服务管理,查找 demo-tomcat (通过 app.m 注册的网关服务名),点击进入。

说明:可以看到网关上已经配置了服务的路由路径为 /demotomcat,指向 localhost:8080/demo-tomcat

6. 最终的访问路由过程如下:

graph TB;
//entry/service/demotomcat/ --> entry的服务网关 --> service的代理网关 --> localhost:8080/demo-tomcat/

results matching ""

    No results matching ""