Tomcat 服务模块示例
示例内容
基于 Tomcat 部署运行 war。
说明:在 war 中提供了一个 index.jsp,可以显示所有的服务运行环境变量,方便大家了解和验证服务部署定义文件中的属性定义和环境变量。
示例资源
部署过程
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-tomcat。upstream_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 属性定义中声明了两个属性 serviceAddress 和 port,值引用来自部署定义中的 tomcat,这两个属性会自动生成两个环境变量 DEMO_TOMCAT_SERVICEADDRESS 和 DEMO_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/。
5. 接下来我们进入 监控 面板的 网关监控 页,从左侧菜单选择进入 服务管理,查找 demo-tomcat (通过 app.m 注册的网关服务名),点击进入。
说明:可以看到网关上已经配置了服务的路由路径为 /demotomcat,指向 localhost:8080/demo-tomcat。
6. 最终的访问路由过程如下:
graph TB;
//entry/service/demotomcat/ --> entry的服务网关 --> service的代理网关 --> localhost:8080/demo-tomcat/