您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页中间件操作指引-Tuxedo

中间件操作指引-Tuxedo

来源:化拓教育网


中间件操作指引 Bea Tuxedo

广东亿迅科技有限公司

2008年7月

项目名称/代码: 版本: 状态: 所有人: 作者/创建时间: 批准人/批准时间:

集成部 1.0 系统组 唐彪

文档更改历史记录

序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 主要更改内容 版本号 更改人 更改时间

目 录

第1章

BEA TUXEDO产品................................................................................................... 5

1.1 TUXEDO是什么 ....................................................................................................................... 5 1.2 TUXEDO系统特点 ................................................................................................................... 5 第2章 2.1 2.2 2.3

TUXEDO安装 ........................................................................................................... 6 在UNIX系统安装 ............................................................................................................... 6 在WINDOWS系统安装 ....................................................................................................... 7 安装LICENSE ...................................................................................................................... 7

2.4 TUXEDO环境变量 ................................................................................................................... 7 2.5 TUXEDO目录结构 ................................................................................................................... 8 2.6 TUXEDO应用步署过程 ........................................................................................................... 8 第3章 3.1 3.2 3.3 3.4 3.5 3.6 3.7 第4章

配臵管理 ..................................................................................................................... 8 配臵文件 ............................................................................................................................ 8 资源定义 ............................................................................................................................ 9 机器的信息 ...................................................................................................................... 10 组定义 .............................................................................................................................. 11 服务定义 .......................................................................................................................... 11 交易定义 .......................................................................................................................... 12 生成TUXCONFIG文件 ...................................................................................................... 13 管理命令 ................................................................................................................... 13

4.1 TMBOOT命令 ......................................................................................................................... 13 4.2 TMSHUTDOWN命令 ............................................................................................................... 14 4.3 TMADMIN命令 ....................................................................................................................... 14 4.3.1 4.3.2 4.3.3 4.3.4 4.4 第5章

查看services状态 ....................................................................................................... 15 查看server状态 .......................................................................................................... 16 查看队列状态 .............................................................................................................. 16 查看客户端状态 .......................................................................................................... 17

查看日志 .......................................................................................................................... 18 常见故障 ................................................................................................................... 18

5.1 UBB编译类 .......................................................................................................................... 18 5.2 5.3 5.4

服务启动类 ...................................................................................................................... 19 服务关闭类 ...................................................................................................................... 20 域间通信类 ...................................................................................................................... 20

Solaris系统操作指引

第1章 Bea Tuxedo产品

1.1 Tuxedo是什么

BEA TUXEDO是在企业、Internet 这样的分布式运算环境中开发和管理三层结构的客 户/服务器型关键任务应用系统的强有力工具。它具备分布式事务处理和应用通信功能,并提供完善的各种服务来建立、运行和管理关键任务应用系统。开发人员能够用它建立跨多个硬件平台、数据库和操作系统的可互操作的应用系统。BEA TUXEDO是企业、 Internet 分布式应用中的基础主干平台。它提供了一个开放的环境,支持各种各样的客 户、数据库、网络、遗留系统和通讯方式。

1.2 Tuxedo系统特点

* TUXEDO /T * 管理C/S数据流 * 支持3层结构 * 多平台支持

* 协同(BEA Connect, /TxRPC, /OSITP) * 开发 * 通讯手段 * 同步 * 异步 * 会话 * 广播通知 * 管道 * 事件订阅

* 缓冲数据类型(自动编、解码) * 事务 * 管理

创建时间:2013-3-28 第 5 页 共 21页

Solaris系统操作指引

* 核心配臵管理 * 管理信息库(MIB) * Web界面管理接口 * 负载平衡 * 网络配臵 * 安全 * 数据依赖路由 * 数据压缩

* BEA JOLT 将TUXEDO中间件框架扩展到Internet和Java客户端 * TUXEDO /Q * 通讯保障 * 预定处理 * TUXEDO /WS * 多平台支持

* 把BEA TUXEDO ATMI API扩展到客户应用程序中 * TUXEDO /Domains * TUXEDO /COBOL

第2章 Tuxedo安装

2.1 在unix系统安装

GUI方式安装:

●获取Tuxedo安装介质

●执行安装文件进行安装:sh tuxedo80.bin

Console方式安装

●获取Tuxedo安装介质

●执行安装:sh tuxedo80.bin –i console

创建时间:2013-3-28 第 6 页 共 21页

Solaris系统操作指引

2.2 在windows系统安装

采用GUI方式进行安装: ●获取Tuxedo安装介质 光盘介质或者磁盘介质

●双机安装文件tuxedo80_win.exe进行安装 ●提供安装所需要的信息进行继续安装。 包括安装目录、安装产品、password等信息

2.3 安装license

● License安装目录:

$TUXDIR/udataobj/lic.txt(UNIX) %TUXDIR%\obj/lic.txt(WIN) ● License安装方法:

将lic.txt拷到license安装目录 ● License分类: SDK、RTK ●验证license是否生效:

tmadmin –v查看

2.4 Tuxedo环境变量

安装完成TUXEDO后,需要配臵的环境变量包括: 【TUXDIR】 指明TUXEDO软件的安装目录 【APPDIR】 指明TUXEDO应用程序步署目录

【TUXCONFIG】指明TUXEDO域配臵文件,ubbconfig文件一般也放在该目录下 【BDMCONFIG】指明域间通信配臵文件

【ULOGPFX】指明TUXEDO日志文件存放的目录

TUXDIR=/export/home/ocs/bea/tuxedo8.1 APPDIR=/export/home/ocs/tuxapp TUXCONFIG=$APPDIR/tuxconfig

ULOGPFX=/export/home/tuxedo/tuxapp/tuxlog/ULOG BDMCONFIG=/export/home/tuxedo/tuxapp/config/bdmconfig

创建时间:2013-3-28 第 7 页 共 21页

Solaris系统操作指引

2.5 Tuxedo目录结构

进入到$TUXDIR目录下,主要的目录作用如下: Bin Tuxedo系统命令、可执行文件 Include C语言头文件 Lib 动态lib库文件 Locale 本地化语言消息文件 Udataobj Tuxedo系统其他信息文件 Samples Tuxedo应用程序例子文件 Help Tuxedo帮助文件

2.6 Tuxedo应用步署过程

1、 环境变量设臵

2、编译生成服务端和客户端可执行文件 3、编译UBB文件,生成二进制配臵文件 4、 tmboot启动服务

第3章 配臵管理

3.1 配臵文件

任何TUXEDO应用系统的最基本的管理任务,是建立并维护配臵文件。该文件通常称为ubbconfig文件。负责该工作的系统管理员必须很好的了解分布于各台机器上的应用服务的数据流,消息队列的构造 资源间的相互关系。ubbconfig文件可视作包含应用启动信息 的容器,需编译成二进制文件tuxconfig,作为启动时的参考。 其内信息包括:

 系统范围信息(*RESOURCES节)  机器信息(*MACHINES节)

创建时间:2013-3-28 第 8 页 共 21页

Solaris系统操作指引

 组信息(*GROUPS节)  服务信息(*SERVERS节)  交易信息(*SERVICES节)  网络组信息(*NETGROUPS节)  网络信息(*NETWORK节)  路由原则信息(*ROUTING节)

当完成了ubbconfig文件后,用tmloadcf命令生成tuxconfig

另一种从ubbconfig生成tuxconfig的方法是使用图形管理界面(GAI—Graphical Administration Interface)。

3.2 资源定义

*RESOURCES节包含整个应用范围的信息。本节必须在配臵文件第一节,不可缺少。信息说明如下: 参数

*RESOURCES *RESOURCES节 IPCKEY UID GID

共享内存id

TUXEDO管理员用户id TUXEDO管理员用户id TUXEDO管理员组用户的权限

意义

PERM

MAXACCESSERS 服务端和客户端的最大进程数 MAXSERVERS MAXSERVICES MASTER MODEL

可以启动服务总数 可以发布交易总数

指出主控节点的逻辑名,第二个是备份节点 应用构架,MP表示多机

创建时间:2013-3-28 第 9 页 共 21页

Solaris系统操作指引

OPTIONS SECURITY AUTHSVC NOTIFY

LAN,MIGRATE表示是一个网络应用,服务可以移植到替代处理器上

安全级别(5个)

客户端可以通过交易―AUTHSVC‖获得认证

DIPIN,客户端通过dip-in收到广播通知

SYSTEM_ACCESS PROTECTED,NO_OVERRIDE,应用代码不得干扰共享内存 LDBAL

设Y则进行负载平衡 数据缓冲类型及子类的最大数

MAXBUF[S]TYPE SCANUNIT

内部时间间隔单位,单位是秒

SANITYSCAN 检索公告牌的内部时间间隔,单位是SCANUNIT BLOCKTIME

交易超时时间,单位是SCANUNIT

BBLQUERY DBBL查询所有BLL的时间间隔 DBBLWAIT MAXCONV

DBBL等待BBL回应的超时时间 同时最大会话数

3.3 机器的信息

*MACHINES节包含应用有关的每个处理器的信息。本节必须在*RESOURCES节后列出。 参数

意义

*MACHINESMACHINES节 gumby TUXDIR APPDIR

物理处理器名,可以通过‖uname –n‖或节点名得到

TUXEDO系统软件安装位臵 应用服务位臵全路径

TUXEDO配臵文件全路径 环境文件全路径 应用日志文件全路径

TUXCONFIG ENVFILE

ULOGPFX

MAXACCESSERS 本机最多处理器数,可以超越*RESOURCES节定义 MAXCONV

本机最大会话数,可以超越*RESOURCES节定义

创建时间:2013-3-28 第 10 页 共 21页

Solaris系统操作指引

3.4 组定义

*GROUP节包含服务组的定义。一台机器至少要定义一个服务组。如果没有定义组,管理命令tmadmin可能依然能运行。 参数

意义 GROUP节

组的唯一标识符,可以是字母数字

每个组只要定义组名,映射组名的组号和逻辑机器名。组为分布式交易系统和数据依赖路由等灵活性措施提供了支持。

*GROUPS BANKB1 GRPNO LMID

组的唯一数字标识符

组所在的机器

3.5 服务定义

ubbconfig的*SERVERS 节包含的是服务进程的信息。本节中每一个入口代表一个应用启动时加载的服务。这些信息包含服务名,命令行参数,服务环境,重启动等等。由于每个服务功能各不相同,其配臵参数也因此相同或相异。 参数

意义

SERVER节,列出所有服务程序

本处列出的参数为其下列出的服务的缺省值,但可以被单列条目替代相应值

*SERVERS DEFAULT:

RESTART 如果设成Y,则服务可以重启动 MAXGEN GRACE RCMD ENVFILE TLR

在GRACE定义时间之内,服务可以重启动MAXGEN次 周期,单位是秒

每次服务重启动,本处定义的脚本或命令被执行 列有环境变量的文件,在交易启动前设入环境

一个服务名,用buildserver建立,应在APPDIR或$TUXDIR/bin

服务属于一个在*GROUPS节中定义的服务组;如果需要移植服务,也可以定义在多个组中。 服务组中代表服务的唯一值

SRVGRP SRVID MIN

最少在启动时启动的服务数

创建时间:2013-3-28 第 11 页 共 21页

Solaris系统操作指引

MAX 运行时,最多可以起的实例数 跟随服务启动的其他参数

CLOPT -A –r

服务内建交易全发布

指定服务记录时间戳,用于以后计算交易处理时间 -e -o -- …

定义标准错误重定向文件 定义标准输出重定向文件

TUXEDO参数和服务特定参数的分隔符 传给tpsvrinit()的参数

设定后,应用错误不干扰公告牌

SYSTEM_ACCESS RQADDR

当设定此项后,所有本服务的实例都使用相同的请求队列。这是在应用中设臵MSSQ

(Multiple Server Single Queue)的方便办法,可以改善处理流量。任何时候,所有MSSQ集中的实例发布相同的交易集。 XFER REPLYQ

另一个服务

设成Y,则服务又作为一个MSSQ集配臵,任何其中的交易调用其他交易,就建立一个单独

的回应队列。

3.6 交易定义

*SERVICES节提供了应用的特殊交易的信息。包括负载平衡(LOAD)和数据缓冲类型检查(BUFTYPE)。如果全部都是缺省值则本节可以省略。 参数

意义

*SERVICES 交易节 #

注释行符号

大写字母 交易名,由应用服务提供

BUFTYPE 任何向该交易的请求,数据应该是此处定义类型 GROUP 交易所在服务所在的组 LOAD PRIO

负载因子,表示处理请求的时间,用于计算负载平衡 优先级

创建时间:2013-3-28 第 12 页 共 21页

Solaris系统操作指引

3.7 生成tuxconfig文件

UBBCONFIG文件是一个可以编辑成需要的应用配臵的文本文件。但是,/T在实际应用上读取的是二进制TUXCONFIG文件用于操作。命令tmloadcf可以把UBBCONFIG文件转化成TUXCONFIG文件。

tmloadcf命令接受以下4个参数:

-c 计算运行应用需要的IPC资源,该信息将提供给管理员,用于在各机器上配臵资源。 -n 进行语法检查并不生成TUXCONFIG。 -b 控制TUXCONFIG占用的物理页数。 -y 无条件覆盖TUXCONFIG

环境变量TUXCONFIG必须设定指向二进制TUXCONFIG文件。

在安全要求高的应用中,tmloadcf不能从标准输入接受,环境变量APP_PW必须包含应用密码。

tmunloadcf将TUXCONFIG转换成ASCII格式用于检查。该工具读取环境变量TUXCONFIG指向的文件。输出包含所有的参数,包括TUXEDO设定的缺省值,是UBBCONFIG文件的一个超集。

第4章 管理命令

4.1 tmboot命令

tmboot命令启动TUXEDO系统的 /T应用,创建必要的IPC资源、启动相关机器的规定的系统和应用服务进程。大多数的tmboot的参数启动了部分系统进程。在以下说明和例子中,lmid,grpname和srvid是配臵文件中指定的值。

-y 自动确认,启动所有进程 -A -M

启动所有机器上的管理进程。 启动主控机器上的管理进程。

-i srvid 启动服务id等于 srvid的进程。

创建时间:2013-3-28 第 13 页 共 21页

Solaris系统操作指引

-g grpname 启动指定的一组服务(含TMS) -S

启动所有应用服务。

-s server-name 启动可执行文件名为server-name的服务。 -l lmid 启动TMS和指定机器上的应用服务。 -T grpname 启动指定组中所有TMS。 -B lmid

启动指定机器上的BBL。

指定启动进程失败后在主控机器上运行的命令名。

-e command -c

打印本配臵所需最少的IPC资源。

4.2 tmshutdown命令

tmshutdown命令用于关闭所有或部分应用并释放IPC资源。

本命令所用参数与tmboot类似(如:-y -A, -g, -i, -s, -S, -l, -M, -B),意义相同。 如果需要移动服务,关闭服务时用-R参数即可不删除BB中的入口。 在非主控节点上,可以用-P参数仅关闭该机器上的应用。

当有客户端正在连接时,tmshutdown 不能关闭管理服务。参数-c则可以超越此规则。该参数仅用于管理员需要立即关机而又无法及时通知客户端时。

参数-w delay 在delay秒后进行强制关闭。指定的服务当即被挂起,使之不能继续接受交易请求。delay的值则允许服务在一个合理的时间内完成已经接受的请求。在延迟的时间到达后,信号SIGKILL(或SIGTERM)将发给指定的服务。该参数目的是使管理员能够关闭发生死循环或死锁的服务。

4.3 tmadmin命令

tmadmin命令是tuxedo的管理工具,可以管理以下方面的内容:应用、服务、客户端、交易、队列、组、会话、网络

命令行管理工具:tmadmin,可以完成以下功能:

●监控系统运行:printserver,printservice,printqueue,printclient

●动态修改:suspend/resume,advertise/unadvertise, changepriority, changeload

创建时间:2013-3-28 第 14 页 共 21页

Solaris系统操作指引

●管理任务:boot/shutdown,stop/restart server

直接在tuxedo用户下输入tmadmin进行管理界面: bash-2.05$ tmadmin

tmadmin - Copyright (c) 1996-1999 BEA Systems, Inc. Portions * Copyright 1986-1997 RSA Data Security, Inc. All Rights Reserved.

Distributed under license by BEA Systems, Inc. Tuxedo is a registered trademark. >

4.3.1 查看services状态

以下是tmadmin命令的printservice(简写为psc)的简单输出。 列号

描述

1. 交易名 2. 交易函数名 3. 服务可执行文件名 4. 服务所在组名 5. 服务的数字id

6. 提供交易的机器的LMID 7. 交易已经执行的次数 8. 交易当前状态

Service Name Routine Name Prog Name Grp Name ID Machine # Done Status

------------ ------------ --------- -------- -- ------- ------ ------

416701 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 416601 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 416501 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 4101 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL

创建时间:2013-3-28 第 15 页 共 21页

Solaris系统操作指引

416201 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 416301 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 416101 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 416001 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL 415901 rz_Ecsb rz_Ecsb APGP2 4000 simple 0 AVAIL

4.3.2 查看server状态

以下是tmadmin命令的printserver(简写为psr)的简单输出。 列号

描述

1. 服务的可执行文件名 2. 服务连接的队列名 3. 组名 4. 服务的数字id 5. 服务已经处理的请求数 6. 服务处理的全部请求的参数和

服务正在处理的交易,若为IDLE则服务当前是空闲

> printserver

Prog Name Queue Name Grp Name ID RqDone Load Done Current Service --------- ---------- -------- -- ------ --------- ---------------

rz_Ecsb 00004.04000 APGP2 4000 0 0 ( IDLE ) BBL 70020 simple 0 1 50 ( IDLE ) IFMTMS APGP2_TMS APGP2 30001 1 50 ( IDLE ) ftpserv32 00002.00001 FTPGP 1 60 3000 ( IDLE ) WSL 00001.00001 SYSGP 1 0 0 ( IDLE ) IFMTMS APGP2_TMS APGP2 30002 12 600 ( IDLE ) ftpserv32 00002.00002 FTPGP 2 0 0 ( IDLE ) IFMTMS APGP2_TMS APGP2 30003 11 550 ( IDLE ) CCS_QUANBIA_60 00004.06004 APGP2 6004 0 0 ( IDLE ) CCS_SCBB_4099 00004.04099 APGP2 4099 2 100 ( IDLE ) CCS_GEKEZI_300 00004.03000 APGP2 3000 0 0 ( IDLE )

4.3.3 查看队列状态

以下是tmadmin命令的printqueue(简写为pq)[qaddress]的简单输出。如果不指定address,所有队

创建时间:2013-3-28 第 16 页 共 21页

Solaris系统操作指引

列信息将被输出。 列号

描述

1. 队列连接的服务的可执行文件名

2. 字符队列名,是RQADDR参数或一个随机值 3. 连接的服务数

4. 当前队列的所有请求的参数和 5. 实际请求数 6. 平均队列长度 7. 队列所在机器的LMID > pq 00004.05062

Prog Name Queue Name # Serve Wk Queued # Queued Ave. Len Machine --------- ------------------- --------- -------- -------- -------

CCS_GEDAIPC_50 00004.05062 1 0 0 0.0 simple

4.3.4 查看客户端状态

以下是tmadmin命令的printclient(简写为pclt)的输出,来自TUXEDO系统的日志信息。主要有以下信息:

客户端id,用户名和当前状态 登录的LMID和进程号(PID) 服务组和上一访问过的服务组

交易(启动/提交/中断)和会话的统计数字 中继队列id,通知方法和提交控制 列号

描述

1. 已经登录的客户端机器的LMID 2. 用户名,由tpinit()提供的 3. 客户端名,由tpinit()提供的 4. 客户端连接后经过的时间 5. 客户端状态

6. IDLE——表示客户端目前没有任何交易在工作 7. IDLET——表示客户端启动了一个交易

创建时间:2013-3-28 第 17 页 共 21页

Solaris系统操作指引

8. BUSY——表示客户端在工作中

9. BUSYT——表示客户端正在交易控制下工作 10. 启动/提交/中断的交易数 > pclt

LMID User Name Client Name Time Status Bgn/Cmmt/Abrt --------------- --------------- --------------- -------- ------- -------------

simple ccsmis WSH 17:42:47 IDLE 0/0/0 simple ccsmis tmadmin 0:44:28 IDLE 0/0/0

4.4 查看日志

Tuxedo的日志在环境变量和ubb中都会配臵指明: 环境变量:【ULOGPFX】指明TUXEDO日志文件存放的目录

进入日志存放目录,可以查看相应的日志信息,为排除故障提供帮助

第5章 常见故障

5.1 UBB编译类

CMDTUX_CAT:868:ERROR: tmloadcf cannot run on a non-master node 错误原因:这类错误有以下几种原因 1、UBB中定义的主机名与本主机名不一致 2、TUXEDO服务仍然在运行 解决方法:

1、 更正UBB配臵中的主机名 2、 停止服务,重新编译

NLS:4: Cannot open message catalog CMDTUX_CAT, set 1, num 866; check TUXDIR=C:\\b ea\\TUXEDO8.0, LANG=Chinese_People's Republic of China.936

错误原因:这类错误主要是由于环境变量设臵不完整或不正确造成

创建时间:2013-3-28 第 18 页 共 21页

Solaris系统操作指引

解决方法:设臵正确的环境变量

1、查看你系统环境变量与ubb文件中的tuxdir设臵是否一致? 2、在系统环境变量中加入 LANG=C

CMDTUX_CAT:1615: ERROR: Identifier or number must be followed by white space or punctuation 错误原因:这类错误主要是由于UBB配臵文件中有非法字符造成的 解决方法:找出非法字符和不完整的字符,将其更正,重新编译

5.2 服务启动类

JOLT_CAT:1542: \"ERROR: Unlicensed Jolt server\" 错误原因:license文件不正确

解决方法:重新找到新的license文件更新,重启服务

CMDTUX_CAT:1685: ERROR: Application initialization failure 错误原因:这类错误主要是由于服务连接数据库的出错造成的 解决方法:

1、查看数据库是否启动 2、查看监听是否启动

3、查看本地tnsnames服务名配臵是否正确

部分服务CMDTUX_CAT:1685: ERROR: Application initialization failure

错误原因:出现部分服务不能成功启动,一般是由于系统内核参数设臵过小造成,可能是最近UBB中服务数量有所增加。

解决方法:修改系统内核参数,以MSG开头的部分参数进行增加

创建时间:2013-3-28 第 19 页 共 21页

Solaris系统操作指引

CMDTUX_CAT: ERROR: server duplicate failure

原因:这类信息提示主要是由于服务已经启动的原因造成。 解决方法:

属于正常情况,说明服务已经启动,无须再次启动。

5.3 服务关闭类

tmshutdown: internal error: CMDTUX_CAT:766: ERROR: must run on master node 错误原因:这类错误主要是由于BBL服务挂死或者DOWN掉造成的 解决方法:这种情况只能手工用ipcrm清除TUXEDO共享内存

LIBTUX_CAT:216: WARN: Process 25086 died; removing from BB

错误原因:这类错误主要是因为该服务正处在事务处理中,有一个回退的过程。 解决原因:等待事务回退完成,如果不行可以强行kill掉该服务

5.4 域间通信类

LIBGWT_CAT:1303ERROR: Network error occurred during connection establishment 错误原因:这类错误是由于域间网络环境中断造成的, 解决方法:需要通过ping检查两域之间的网络状态是否能通。

LIBGWT_CAT:1243:

创建时间:2013-3-28 第 20 页 共 21页

Solaris系统操作指引

WARN: Open address 2F-2F-31-39-32-2E-31-36-38-2E-31-2E-31-33-35-3A-34-34-34-34 failed, Network error(0x0)

LIBGWT_CAT:1244: WARN: No more NW address to try

LIBGWT_CAT:1124: ERROR: Unable to open listening endpoint 错误原因:这类错误主要同本地的网络IP地址有关 解决方法:

1、检查dmconfig中定义的本机IP地址是否已经处于up状态 2、检查dmconfig中定义的端口是否已经被占用

创建时间:2013-3-28 第 21 页 共 21页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务