用户手册
# 前言
本文档为金蝶 Apusic 应用服务器 V10(简称 AAS V10)使用说明,详细介绍金蝶 Apusic 应用服务器安装和相关配置方法。
# 面向对象
本手册主要面向对象为使用金蝶 Apusic 应用服务器进行应用开发的开发人员,以及相关管理人员和运维人员。
# 版本更新说明
本文档根据实际进行更新,最新版本包含历史修改记录。
| 日期 | 手册版本 | 适用产品 | 更新说明 |
| 2025年3月 | V10P9E01F01 | AAS V10 | 新增应用备份、应用回收站、应用文件防篡改等功能; 新增监控插件模块; 新增开发工具说明模块 |
| 2024年9月 | V10P8E01F02 | AAS V10 | 调整正文显示格式问题 |
| 2023年12月 | V10P8E01F01 | AAS V10 | 更新许可证授权认证方法 |
# 部分 I. 快速开始指南
# 关于本快速入门指南
本快速入门指南介绍了金蝶 Apusic 应用服务器软件(简称 AAS)V10 产品安装、启动、卸载、管理与使用等基本操作,为用户快速使用本产品提供指导。
# 基本介绍
金蝶 Apusic 应用服务器为复杂应用提供了一个简便、快速的开发和运行平台,对于分布式的企业级应用,提供了易扩展、可伸缩和高安全性等特性。下面将介绍 Apusic 应用服务器的体系结构及其提供的服务和功能,从而展示 Apusic 应用服务器对开发大型应用系统的支持能力。
# 相关资源
针对不同的操作系统,金蝶 Apusic 应用服务器提供不同的安装包,也提供适合各个操作系统解压即用的 zip 格式的产品包。
更多信息,可以访问金蝶中间件官方网站 (opens new window) 获取。
基本概念
在正确使用应用服务器来部署、管理应用之前,需要先理解以下几个基本概念:
- Apusic 应用服务器
服务器是应用服务器的物理部署单元。直观的来说,是应用服务器在一台用户机器上的一个物理安装。
- 域(domain)
域是指作为一个单元来管理的并相互关联的一组服务器资源。一个域可以包含一个或多个独立服务器,还可包含服务器集群,它们共享一套公用配置,并使用扩展标记语言 XML 定义,配置文件名为 domain.xml,存放在 ${DOMAIN_HOME}/config/ 目录中。域是一个完整的管理单元,当向域里部署应用时,该应用只能部署到域之内的服务器上。如果域中包含集群,那么集群中的所有服务器都必须属于同一个域。
通过域,部署在不同物理位置上的服务器实例,可以共享一套公用配置,同时,可以在一个节点上统一管理多个服务器实例,这使得应用服务器的部署和管理变得简单和灵活。
- 服务器实例(instance)
一个服务器实例是 Java 平台上(Java 虚拟机或 JVM 机器)的单个虚拟机,它运行在服务器的单个节点上。服务器实例构成了应用部署的基础。实例是构建集群、负载均衡和服务器会话持久性中的重要构件。每个实例只属于一个域并且有自己的目录结构、配置和部署的应用。每个实例包含了一个到节点的引用。
- 节点(node)
每个节点对应一台装有应用服务器软件的主机,应用服务器实例所在的主机上必须存在一个对应的节点。节点配置信息包含主机名称,以及应用服务器安装在主机上的位置。
- 服务器集群(cluster)
服务器集群是多个服务器实例的一个逻辑实体的集合,它们共享相同的应用程序、资源以及配置信息。不管服务器实例是在同一台主机或不同的主机上,应用服务器都可以在管理控制中心上将集群中的所有实例作为一个单元进行管理。
# 默认路径和文件名
下表介绍了在本书中使用的默认路径和文件名。
| 变量 | 说明 | 默认值 |
|---|---|---|
| JAVA_HOME | Java 环境变量 | |
| APUSIC_HOME | Apusic 服务器的安装目录名 | Linux 安装: 安装包解压路径/ApusicAS/aas Windows 的安装: 安装包解压路径 ApusicAS\aas |
| DOMAIN_HOME | 域主目录 | APUSIC_HOME/domains/[domainname] |
# 默认管理值以及端口
下表列出了金蝶 Apusic 应用服务器 V10 的默认管理值和各端口的默认值。
默认管理值:
| 名称 | 默认值 |
|---|---|
| 域名 | mydomian |
| asadmin 命令行实用程序 | APUSIC_HOME/bin |
| 配置文件 | DOMAIN_HOME/config |
| 日志文件 | DOMAIN_HOME/logs |
默认端口:
| 功能模块 | 端口 |
|---|---|
| 管控端口 | 6848 |
| HTTP 端口 | 6888 |
| HTTP SSL 端口 | 6887 |
| IIOP SSL 端口 | 6838 |
| IIOP MUTUALAUTH 端口 | 6839 |
| JMS 端口 | 6876 |
| IIOP 端口 | 6837 |
| JMX 端口 | 6886 |
| OSGI SHELL 端口 | 6866 |
| JAVA DEBUGGER 端口 | 8000 |
# 安装与使用
# 安装前准备
# 获取安装包
从金蝶中间件官方网站 (opens new window) 下载金蝶 Apusic 应用服务器软件 V10 安装包,或从金蝶 Apusic 应用服务器软件 V10 产品光盘中获得相应的安装包文件。
# 支持的操作系统
| 平台类型 | 系统类型 |
| Linux | 国产操作系统:如银河麒麟系列、中标麒麟系列、普华、中科红旗、深度等 |
| RedHat系列 | |
| CentOS | |
| Suse Linux系列 | |
| Windows | Windows 7系列 |
| Windows 8系列 | |
| Windows 10系列 | |
| Windows 2003系列 | |
| Windows 2008系列 | |
| Windows 2012系列 | |
| Unix | HP Unix系列 |
| IBM AIX系列 | |
| Solaris系列 |
# 支持的 Java 虚拟机
金蝶 Apusic 应用服务器所支持的 Java 虚拟机:
• Oracle JDK 8+
• Open JDK 8+
• IBM JDK 8+
# 系统要求
| 系统组件 | 系统要求 |
|---|---|
| Java 环境 | JDK1.8 及以上版本 |
| 内存 | 2GB+ |
| 硬盘空间 | 10GB+ |
| 浏览器 | IE9 及以上,FireFox,Chrome |
# 许可证授权
AAS需要有对应的许可证才能正常使用,通常情况下,金蝶天燕会根据用户购买的产品版本配套对应的许可证。
产品授权方式通常分为普通授权和集中授权。
# 普通授权
普通授权指根据IP、域名等方式生成license.xml文件,将授权文件放置安装目录下,如${APUSIC_HOME}/license.xml。

# 集中授权
集中授权指连接授权中心,进行统一授权。需要先搭建金蝶Apusic授权中心,操作方式可参考《金蝶Apusic许可授权中心用户手册》,或联系金蝶天燕技术支持人员。
在系统环境中配置环境变量,或在AAS安装目录${APUSIC_HOME}下创建acls.properties文件,添加以下参数:
apusic_acls_enable=true
apusic_acls_authUrls=172.24.4.166:6886
apusic_acls_ns=apusic
apusic_acls_tenant=ApusicTest
2
3
4
连接参数说明:
| 参数名 | 参数值说明 |
|---|---|
| apusic_acls_enable | 是否开启授权中心认证,取值为true或false,为true则表示开启授权中心认证。没有该参数或该参数值为false,都表示没有开启授权中心认证; |
| apusic_acls_authUrls | 授权中心的地址,可设置多个授权地址,格式为ip1:port1,ip2:port2,如果一个授权地址链接失败,会轮询其他的地址;如果开启授权中心认证,则为必填参数,其中端口为授权中心的https端口; |
| apusic_acls_ns | 设置该实例所属的命名空间名称,可选参数;默认值为public,具体的命名空间可以在授权中心管理控制台-系统管理-授权管理查看。 |
| apusic_acls_tenant | 设置该实例所属的租户名称,可选参数。 |
AAS启动时将会自动连接到Apusic授权中心。
# 获取特征码
如果在使用过程中出现许可证过期或无效等问题,建议优先联系对接的天燕服务人员,重新申请对应许可证。重新申请对应许可证时,需要将产品的特征码(auth code)提供到天燕对接人员,如图:

如果是节点出现授权问题,可查看日志,日志会打印出对应的特征码(auth code),拷贝特征码(auth code)提供至天燕对接人员重新申请对应许可证。
自2023年12月起,获取特征码方式变更。
- 可以运行
ApusicAS/aas/bin目录下命令startserv获取,类似格式:
startserv -ac [ethname or ip]
其中[ethname or ip]表示可以输入ip地址或者mac地址的名称,如可以输入常用ip地址172.24.1.116或eth0作为参数获取软件特征码(适用windows、linux):
startserv –ac 172.24.1.116
输出格式如下,Auth Code=软件特征码:
Auth Code=SZTY1640356587
- 也可以输入网卡名称获取特征码(适用linux,可以通过ifconfig获取网卡名称)
startserv –ac eth0
输出格式如下,Auth Code=软件特征码:
Auth Code=SZTY1640356587
# 提示解读
- 如果使用了过期的授权文件,会出现如下的提示,提示时间过期以及获取特征码的命令。
Waiting for mydomain to start .Error starting domain mydomain.
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
Launching Apusic on Felix platform
get auth code:startserv -ac [ip or ethname]
license is invalid,out of date
Error stopping framework: java.lang.NullPointerException
Command start-domain failed.
2
3
4
5
6
7
8
- 如果使用了错误特征码进行启动,会出现如下的提示:
Waiting for mydomain to start .Error starting domain mydomain.
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
Launching Apusic on Felix platform
get auth code:startserv -ac [ip or ethname]
not granted for SZTY1640356587 [Apusic Application Server10.0]4
Error stopping framework: java.lang.NullPointerException
Command start-domain failed.
2
3
4
5
6
7
8
其中后面的4为授权文件的version,和原有非kbc授权license的lic_ver标识相同。如果标识和产品名称、产品版本一致,就可以确定是特征码错误。也可以通过 startserv –ac XX命令来打印特征码对比,XX为申请特征码时使用的ip或网卡名称信息。
- 如果使用了其他产品的授权文件进行启动,如使用v9企业版的授权文件启动v10企业版会出现如下的提示:
Waiting for mydomain to start .Error starting domain mydomain.
The server exited prematurely with exit code 1.
Before it died, it produced the following output:
Launching Apusic on Felix platform
get auth code:startserv -ac [ip or ethname]
not granted for SZTY1640356587 [Apusic Application Server10.0]4
Error stopping framework: java.lang.NullPointerException
Command start-domain failed.
2
3
4
5
6
7
8
提示信息的4表示这个授权是v9.0企业版的授权文件,[]里面是v10版本,所以不能启动
也可以通过startserv –ac XX打印特征码进行对比特征码,XX为申请特征码时使用的ip或网卡名称信息。
- 生成特征码只能用于本机进行生成,比如不能给别的IP地址申请,会提示ip not supported.
# 命令行查看授权文件
可通过命令行方式查看授权文件信息。
执行:
asadmin get-license --nodename server
--nodename 为节点名称,默认为server。
# 开始安装
安装金蝶 Apusic 应用服务器之前,需确保 Java 运行环境已安装并配置好了。
# Windows 下安装
方式一: 直接解压安装包 AAS-V10.zip。
方式二: 执行 AAS-V10.exe 开启图形化安装。

# Linux 下安装
方式一:
将 产品包,如
AAS-V10.zip放置服务器某一位置,如/opt/AAS。进入目录,如
/opt/AAS,执行命令unzip AAS-V10.zip,解压安装包,得到有目录ApusicAS/表示完成安装。
方式二:
在图形化界面进行图形化安装。
chmod 755 AAS-V10.bin
执行 AAS-V10.bin 文件开启图形化安装。
# 容器安装
如若在容器中安装,如docker环境,通常获取到的安装包为aas-[version]-[OS_version]-docker.zip,如aas-v10-aarch64-docker.zip。
解压aas-v10-aarch64-docker.zip,获得aas-v10-aarch64-docker.tar。
导入docker镜像:
docker load < aas-v10-aarch64-docker.tar
运行:
docker run -p 6888:6888 -p 6848:6848 --name="AAS-V10" -dit aas-v10
# 卸载
# Linux下卸载
如若安装方式为直接解压的zip包,可进入安装目录,直接删除安装目录即可卸载。
如若安装方式为图形化安装,可点击双击“卸载AAS”。
注:卸载之前需要停止运行AAS
# Windows下卸载
如若安装方式为直接解压的zip包,可进入安装目录,直接删除安装目录即可卸载。
如若安装方式为图形化安装,可点击开始->程序->金蝶Apusic应用服务器->卸载Apusic应用服务器。
# 容器下卸载
如若在容器下安装,可以直接删除镜像即完成卸载操作。如:
docker image rm aas-v10-aarch64-docker
# 启动和停止默认域
安装金蝶 Apusic 应用服务器 V10 时,自带默认域 mydomain。以下过程描述了 mydomain 当它是唯一的域时如何启动和停止。
# 启动默认域
必须在启动域之前确保已安装了 Apusic 应用服务器 V10。
执行asadmin start-domain命令启动默认域 mydomain:
在 ${APUSIC_HOME}/bin 路径下执行(如果存在多个域,则需要输入域的名称,如 mydomain)。
asadmin start-domain
该命令启动默认域 mydomain。
注意: 首次启动时需要设置 3 个管理员密码。

# 容器下启动
如若在容器下启动,如docker环境,执行:
docker run -p 6888:6888 -p 6848:6848 --name="AAS-V10" -dit aas-v10
# 停止默认域
执行asadmin stop-domain命令停止默认域 mydomain:
在 ${APUSIC_HOME}/bin 路径下执行。
asadmin stop-domain
该命令停止默认域 mydomain。
tips: 要确定域是否正在运行,请使用以下 asadmin list-domains 命令:
APUSIC_HOME/bin/asadmin list-domains
# 容器下停止
如若在容器下停止,如docker环境,执行docker stop:
docker stop a88078b4b859
# 启动管理控制台
金蝶 Apusic 应用服务器管理控制台提供用于配置,管理和监视的界面化统一管理配置平台,支持本地及远程访问管理控制台。
在开始之前必须至少启动一个 Apusic 应用服务器域,并且设置管理员密码。
- 在浏览器中键入 URL:
https://ip:6848
- 在登录界面输入用户名(如:admin),密码(启动时设置的)进行登录。

# 配置自动启动
金蝶 Apusic 应用服务器可以设置在操作系统自动启动。
- Linux
在 Linux 系统上,使用 create-service 子命令创建 System-V-style,初始化脚本/etc/init.d/ApusicAS_domain-name 并安装一个链接在任何/etc/rcn 中。
进入${APUSIC_HOME}/aas/bin,执行./asadmin。
再执行 create-service。
创建成功。服务器创建有/etc/init.d/Apusic_mydomain;日志文件创建在${DOMAIN_HOME}/[DOMAIN_NAME]/PlatformServices.log。
注意: create-service 命令只能使用操作系统的 root 用户执行。

- Windows
在 Windows 系统上,create-service 子命令创建一个 Windows 服务表示 DAS。
进入${APUSIC_HOME}\aas\bin,执行双击 asadmin.bat。
再执行 create-service。
创建成功。${DOMAIN_HOME}\[DOMAIN-NAME]\bin下有 mydomainService.xml、mydomainService.exe。日志文件创建在${DOMAIN_HOME}\[DOMAIN_NAME]\PlatformServices.log

注意:可能需要安装NET Framework。
# 应用部署访问与取消部署
金蝶 Apusic 应用服务器 V10 提供 3 种部署应用的方式: 命令行部署、自动部署以及管控上部署。
# 命令方式部署与取消部署
# 命令行命令方式部署
金蝶 Apusic 应用服务器 V10 提供 asadmin 命令用于执行以下与部署相关的任务的命令。
在开始此任务之前,必须至少启动一个域。
运行
asadmin deploy命令。在
${APUSIC_HOME}/bin路径下执行。
asadmin deploy war-name
如部署 testweb.war 示例,命令如下:
APUSIC_HOME/bin/asadmin deploy dir/testweb.war
- 从命令行列出已部署的应用程序。
运行asadmin list-applications命令:
APUSIC_HOME/bin/asadmin list-applications
- 访问应用。
本地访问: http://localhost:6888/ 应用上下文路径。
远程访问: https://ip:6887/ 应用上下文路径。
# 命令行方式取消部署
运行asadmin undeploy命令。
在 ${APUSIC_HOME}/bin 路径下执行。
asadmin undeploy war-name
对于 war-name,表示部署在应用服务器中该应用的“应用名称”。
如取消部署 testweb.war 示例,命令如下:
APUSIC_HOME/bin/asadmin undeploy testweb
# 自动部署与取消部署
# 自动部署应用
金蝶 Apusic 应用服务器 V10 的每个域下面提供自动部署路径 autodeploy,服务器会检测该路径下的应用文件,进行实时自动部署。
- 在开始此任务之前,必须至少启动一个域。
将应用程序如 testweb.war 拷贝到 ${DOMAIN_HOME}/autodeploy 目录下即可进行部署。
- 从命令行列出已部署的应用程序情况。
运行asadmin list-applications命令:
APUSIC_HOME/bin/asadmin list-applications
- 访问应用。
本地访问: http://localhost:6888/ [应用上下文路径]。
远程访问: https://ip:6887/ [应用上下文路径]。
# 自动取消部署应用
切换到域的 autodeploy 目录。
cd DOMAIN_HOME/autodeploy
删除示例应用程序文件,取消部署并删除该应用程序,取消部署后应用状态会变成 undeployed。
在 UNIX,Linux 和 Mac OS X 系统上,键入以下命令:
rm testweb.war
在 Windows 系统上,键入以下命令:
del testweb.war
# 管控上部署与取消部署
# 管控上部署应用
金蝶 Apusic 应用服务器 V10 管理控制台提供应用部署功能。
在开始此任务之前,必须至少启动一个域,并且需要能够访问管控。
- 访问并登陆管控,在应用程序界面进行应用的部署,压缩文件和文件夹的形式部署。

通过管理应用列表可以查看到部署的应用以及应用的信息和状态等。

# 访问应用
在部署了应用程序之后,可以通过浏览器访问应用程序,操作步骤如下:
在应用程序列表中的操作列中点击【访问】。
在弹出页面中,选择【链接】栏目中任一 URL 地址均可访问应用。访问页面如下图:

# 管控上取消部署应用
登录管控,单击左侧树中的"应用管理"节点。将显示"应用管理"页面。
选中需要取消部署的应用程序旁边的复选框。
删除或禁用该应用程序。
要删除该应用程序,请单击"取消部署"按钮。
要禁用该应用程序,请单击"禁用"按钮。
# 数据源管理
金蝶 Apusic 应用服务器数据源遵循 JDBC 规范,支持多种数据库,不仅支持 Oracle、MySQL、DB2、Derby、Sybase、SQL Server、PostgreSQL 等主流数据库,还支持达梦、神州通用、人大金仓等国产数据库。
金蝶 Apusic 应用服务器中 JDBC 连接池功能用于创建数据库连接,JDBC 资源功能将 JDBC 连接池配置成应用程序可调用的资源。在这里我们以 mysql 数据库、资源类型为 java.sql.Driver 为例,演示数据源的创建管理。
# 创建 JDBC 连接池
创建 JDBC 连接池的操作步骤如下:
- 登录管理控制台,访问资源管理 -> JDBC -> JDBC 连接池,进入 JDBC 连接池列表页面。
点击【新建】按钮进行新建数据库连接池。

- 填写数据库连接池相应信息。
在第一步【常规设置】中:
连接池名称: mysql(在创建 JDBC 资源时需要根据此属性进行绑定,名称自定义)。
资源类型: java.sql.Driver(根据连接驱动方式选择)。
数据库驱动程序提供商: MySql(可以不选择,不选择时下一步的"驱动程序类名称"需要手动填写)。

在第二步页面下方【其他属性】中,上传数据库驱动,填入数据库属性参数。
数据库驱动包上次到${APUSIC_HOME}/domains/mydomain/lib/ext 目录下,如果数据源被其他的独立实例和集群使用,会自动拷贝数据源驱动到独立实例和集群实例的相应的目录下。
填写带*的必填信息。
URL: 根据数据库填写,如 mysql 的是: jdbc:mysql://ip:port/database。
用户名: 访问数据库的用户名,如 root。
口令: 访问数据库的密码。
添加 JDBC 驱动包: 选择数据库的驱动包,点击"上传"。首次连接该类型的数据库必须要上传驱动包。
如果在第一步选择了"数据库驱动程序供应商",第二步会自动显示个别默认信息。
驱动程序类名称: mysql 默认是 com.mysql.cj.jdbc.Driver(mysql 的驱动包版本为 8 以上选择该项),可以点击下拉框选择其他驱动程序类名称,如 com.mysql.jdbc.Driver。
主机: 数据库所在的 IP 地址。
端口: 数据库的端口。
数据库名: 连接的数据库名称。
注意: 访问数据库的用户需要开启远程服务。


- 数据库连接池填写完成后点击【完成】按钮进行保存,可以在列表中查看到。

# 创建 JDBC 资源
创建成功 JDBC 连接池以后,按照以下步骤创建 JDBC 资源。
登录管理,访问资源管理 -> JDBC -> JDBC 资源,点击【新建】按钮。

新建 JDBC 资源页面进行配置。
JNDI 名称: 应用程序对应的 JNDI 名称。
连接池名称: 选择对应的连接池。
目标: 选择 JNDI 资源应用在的目标,如果没有集群或独立实例,默认应用在 server 中。

信息填写完成后点击【确定】按钮进行保存,保存成功后可以在列表中查看。部署应用程序后,应用程序会自动匹配对应的 JNDI 资源名称连接数据源。
# 常用主要参数调整
金蝶 Apusic 应用服务器管控提供常见参数的统一配置,如 JVM 参数、线程池设置、JDBC 连接池、http 连接池设置、日志相关参数等设置,可以对集群、服务实例等做统一的配置,配置路径为: 【配置管理】 ->【 server-config(或集群名称)】。

# 卸载金蝶 Apusic 应用服务器
在卸载金蝶 Apusic 应用服务器之前,请停止以下过程:
- 所有域名和其他相关流程。
- 命令提示使用安装目录或其子目录。
- 使用属于 Java 平台标准版(Java SE)的文件的任何应用程序。
方式一: 删除金蝶 Apusic 应用服务器安装包解压安装目录。
方式二: Windows 下执行Uninstall_ApusicAS.exe开启图形化卸载。
Linux 下执行UnInstall_AAS-V10开启图形化卸载。
# 部分 II. 管理控制台使用指南
# 摘要
金蝶Apusic 应用服务器是符合企业级规范的应用服务器,提供了诸如集群、节点,独立实例,数据库连接池,事务处理服务以及相关资源如数据资源、应用资源等功能。金蝶Apusic应用服务器提供了基于 Web 界面形式的管理控制台,管理和配置 Apusic 应用服务器一般通过管理控制台来进行,本部分文档将描述如何通过 web 管理控制台对 Apusic 应用服务器进行集中管理,配置和调控。
本文档假定用户熟悉基本的 XML 知识。对于 JavaEE8 规范中的事务、命名服务、消息和 JDBC 等服务和规范有基本了解。
金蝶Apusic 应用服务器采用三员分立的管理功能,达到不同角色用户之间的分工合作以及制衡约束:
系统管理员(sysadmin): 主要负责账户的建立、删除及系统的日常维护工作,建立的系统账户应确保在系统中的惟一性,账户列表不被非授权访问,系统默认自带一个系统管理员用户
admin。安全保密管理员(security): 主要负责系统的日常安全保密管理工作,包括用户账户授权以及应用系统所产生日志的审查分析,系统默认自带一个安全保密管理员用户
secure。安全审计员(auditor): 主要负责对系统管理员、安全管理员的操作行为进行审计跟踪分析和监督检查,以及时发现违规行为,并定期向系统安全保密管理机构汇报相关情况,系统默认自带一个安全审计员用户
audit。
# 进入 Apusic 管理监控台
# 进入到登录界面
首先,打开一个浏览器,推荐 Chrome、IE 或者 firefox。
浏览器要求: IE9+、FireFox4+、Chrome12+,建议使用 Chrome15 以上版本。
浏览器上输入以下 URL: https://serverIP:serverPort/。其中 ServerIP 和 ServerPort(默认为 6848)根据实际情况调整,如 https://172.0.0.1:6848 进入到管理监控台登录页面:

# 登录到管理监控首页
输入用户名、初始密码,点击"登录",进入首页。
此界面显示的信息有监视数据、部署、资源、管理的快捷调整方式。

# 域配置
使用系统管理员登录系统,对域管理相关属性进行设置。
Apusic 应用服务器安装完成后自带了一个域管理服务器(DAS),可以单独作为 web 应用容器管理资源,也可以用于管理本地以及远程服务器上的的 web 容器实例。

# 域属性
使用"域属性"页面为 Apusic 应用服务器设置高级域属性。
"域属性"页面包含以下选项
| 配置项 | 说明 | 默认值 |
| 启动 DAS 之后加载控制台 | 启动服务器后加载管理控制台。这可能影响服务器使用的资源, 但是, 这会缩短管理控制台的访问时间 | 不启用 |
| 宕机重启开关 | 开启后,如果有实例宕机,会自动重启 | 不启用 |
| 检测时间间隔 | 进行实例宕机检测的时间间隔,如设置为 60s,表示每 60 秒检测一次 | 30秒 |
| 创建类冲突报告 | 勾选后,开启创建类冲突检测报告功能,在"类冲突检测"中检测出有类冲突信息时点击"下载检测报告",将会下载.txt 格式的检测报告 | 不启用 |
| 应用程序根路径 | 已部署应用程序所在目录的完整路径 | ${com.apusic.aas.instanceRoot}/applications |
| 日志文件根路径 | 标识服务器日志文件的保存位置 | ${com.apusic.aas.instanceRoot}/logs |
| 区域设置 | 是指定语言和区域的特定组合的标识符。例如,默认值(也就是空白)表示中国语言环境,en_US表示美国英语的语言环境 |
对应 domain.xml配置:
<domain
application-root="${com.apusic.aas.instanceRoot}/applications"
create-conflict-report="true" locale="en_US"
version="202111160954" check-instance="false"
log-root="${com.apusic.aas.instanceRoot}/logs"
check-instance-time="30">
</domain>
2
3
4
5
6
7

# 应用程序配置
使用"应用程序配置"页面设置属性,以帮助确保检测到已部署应用程序的更改并重新加载已修改的类。


"应用程序配置"页面包含以下选项:
| 配置项 | 说明 | 默认值 |
| 加载默认值 | 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改 | |
| 重新加载 | 如果启用此选项,则会动态重新加载已修改的类。服务器会定期检查部署目录中的更改,并自动,动态地重新部署应用程序。这在开发环境中很有用,因为它允许快速测试代码更改。但是,在生产环境中,动态重新加载可能会降低性能。此外,每当重新加载完成时,该传输时间的会话将变为无效。客户端必须重新启动会话 | 启用 |
| 重新加载轮询间隔 | 标识服务器检查已部署的应用程序和模块中的代码更改的频率 | 60秒 |
| 管理会话超时 | 标识管理控制台超时之前不活动的分钟数,超时将需要重新登录。默认值为 60 分钟。管控台这个会话受到一个看不见的参数影响,[rest-config session-token-timeout="30"],默认就是 30 分钟,这个参数界面没有配置的。如果设置了【配置管理】 ->【server-config】 -> 【Web 容器】 -> 【会话属性】中的"会话超时"为 5 分钟,这个值是小于 30 分钟的,管控平台的会话就会以【域配置】 -> 【应用程序配置】中的"管理会话超时"的值为准。以 30 分钟为分界线,【配置管理】 -> 【server-config】 -> 【Web 容器】 -> 【会话属性】中的"会话超时"大于或等于 1800,"会话超时"与"管理会话超时"谁小以谁为主;【配置管理】 -> 【server-config】 -> 【Web 容器】 -> 【会话属性】中的"会话超时"小于 1800,"管理会话超时"为主。设置后需要重启 AAS 才会生效 | 60分钟 |
| 应用回收站功能开关 | 开启后,卸载的应用放置回收站 | 关闭 |
| 应用回收站文件有效期 | 卸载后的应用文件存放的有效时间,0表示永久保留 | 180天 |
| 应用回收站目录 | 指定的应用回收站目录,需要有对应的权限 | ${com.apusic.aas.instanceRoot}/recover |
| 应用备份目录 | 指定的应用备份目录,需要有对应的权限 | ${com.apusic.aas.instanceRoot}/backup_app |
| 自动部署 | 如果启用此选项,则会自动部署 autodeploy 目录中的应用程序 | 启用 |
| 自动部署轮询时间间隔 | 指定服务器检查自动部署目录以查找应用程序或模块更改的频率。更改轮询间隔不会影响部署应用程序或模块所需的时间 | 2秒 |
| 自动部署重试超时 | 指定在发生错误之前,部分复制的文件的大小可以保持不变的秒数 | 4秒 |
| 自动部署目录 | 标识要监视的目录以自动部署应用程序 | ${com.apusic.aas.instanceRoot}/autodeploy |
| XML 验证 | 指定要在标准和 Apusic 应用服务器部署描述符上执行的 XML 验证的类型。domain.xml 对应的值为 deploy-xml-validation,如果是需要在其他实例上设置,可以在实例配置文件上手动添加` 类型可以是以下任何一种: 完全: 如果 XML 验证失败,则部署失败。该值是默认值。 解析: 报告 XML 验证错误,但继续部署。 无: 不执行 XML 验证。 | 无 |
| 验证器 | 如果启用此选项,则在自动部署之前运行验证程序。如果验证失败,则不执行部署。验证程序检查文件的结构和内容。验证大型应用程序通常非常耗时 | 不启用 |
| 预编译 | 如果启用此选项,则会预编译 JavaServer Pages(JSP)文件。如果禁用此选项,JSP 文件将在首次访问时在运行时进行编译 | 不启用 |
| 其他属性 | 添加的其他属性 |
对应 domain.xml配置:
<das-config autodeploy-enabled="false"
dynamic-reload-enabled="true" deploy-xml-validation="none"
admin-session-timeout-in-minutes="60"
autodeploy-jsp-precompilation-enabled="false"
autodeploy-polling-interval-in-seconds="3"
dynamic-reload-poll-interval-in-seconds="60"
autodeploy-retry-timeout="5"
autodeploy-verifier-enabled="false"></das-config>
2
3
4
5
6
7
8
# 管理员口令
使用"管理员口令"页面更改当前管理员帐户的密码。
如果开启了邮箱验证功能,该页面会显示设置"邮箱"值。
修改密码后会退出登录状态,需使用新密码重新登录。

注意: 密码不能设置为空
五次内密码不能相同
"管理员口令"页面包含以下选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 用户 ID | 当前管理员的用户标识。这是一个只读字段 | |
| 组列表 | 管理员所属的组。这是一个只读字段 | |
| 邮箱 | 用于接收邮箱验证码的邮箱。只有开启了"邮箱验证配置"功能才能看到"邮箱"设置及收到验证码 | |
| 旧口令 | 原密码 | |
| 新口令 | 设置管理员的新密码 | |
| 确认新口令 | 确认设置管理员的新密码 |
# 口令别名
使用"口令别名"页面可以创建和管理密码别名。可以在【节点】访问远程节点时使用。

"口令别名"页面显示域中的密码别名列表。对于每个别名,将显示以下信息:
名称: 创建密码别名时分配的名称。单击该名称将打开别名的"编辑密码别名"页面。
密码别名表还包含以下选项。
新建: 用于创建密码别名。
删除: 用于删除一个或多个所选密码别名。
新建密码别名
使用"新建密码别名"页面可以创建新密码别名,以便在密码文件或域配置文件中使用。
"新密码别名"页面包含以下选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 别名 | 别名的名称。此名称在域中的所有密码别名中必须是唯一的 | |
| 口令 | 密码别名以加密形式存储的密码 | |
| 确认新口令 | 密码别名以加密形式存储的密码。比较密码和确认密码值以确保输入密码而不输入错误 |
编辑密码别名
使用"编辑密码别名"页面更改与现有密码别名关联的密码。
"编辑密码别名"页面包含以下选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 别名 | 别名的名称。此选项不能编辑 | |
| 口令 | 密码别名以加密形式存储的密码 | |
| 确认新口令 | 密码别名以加密形式存储的密码。比较密码和确认密码值以确保输入密码而不输入错误 |
# 配置备份
使用"配置备份"页签可以对指定的 Apusic 应用服务器实例和集群的配置文件做备份和还原操作,备份的文件存放在${DOMAIN_HOME}/config-backup 目录下。
可以对备份的配置文件点击【还原】按钮进行配置还原操作。

# 类冲突检测
上传 war/jar/ear 等包进行类冲突检测,上传的包文件将与 AAS 的类进行对比,有冲突时显示在"类冲突列表"中。可通过上传到服务器的 jar/war/ear 等包、从 Apusic 应用服务器访问的本地 jar/war/ear 等包、选择部署应用三种方式进行检测。
如果在【域属性】中开启了"是否创建类冲突报告",检测后将会显示有"下载检测报告",可点击下载。将会下载.txt 格式的检测报告。也可以在${DOMAIN_HOME}/mydomain/conflict-reports/ 下查看。

# 服务器(管控服务器)
使用系统管理员登录系统,对服务器实例进行相关的配置和数据监控。

# 一般信息
Apusic 应用服务器安装后,自带了一个应用程序服务器实例 server,用作单机的实例或者作为 DAS 管理服务用于管理其他独立实例和集群实例。
每个 Apusic 应用服务器实例都有自己的 Java 配置,Java 资源,应用程序部署区域和服务器配置设置。对一个应用程序服务器实例的更改不会影响其他应用程序服。
对于许多用户,一个应用服务器实例满足他们的需求。但是,根据实际环境,可能希望创建一个或多个其他应用程序服务器实例。例如,在开发环境中,可以使用不同的应用程序服务器实例来测试不同的 Apusic 应用服务器配置,或者比较和测试不同的应用程序部署。
此外,对于每个应用程序服务器实例,还可以创建虚拟服务器。在单个已安装的应用程序服务器实例中,可以为公司或个人提供域名,IP 地址和一些管理功能。对于用户来说,几乎就像他们拥有自己的 Web 服务器一样,没有硬件和基本的服务器维护。这些虚拟服务器不跨越应用程序服务器实例。有关虚拟服务器的更多信息,请查阅虚拟服务器配置。
在操作部署中,出于多种目的,可以使用虚拟服务器而不是多个应用程序服务器实例。但是,如果虚拟服务器不能满足需求,还可以使用多个应用程序服务器实例。
使用"一般信息"页可以验证 Apusic 应用服务器设置以及查看 Java 虚拟机数据。
"一般信息"页包含以下信息:
- 停止: 用于停止 Apusic 应用服务器。
- 重新启动: 单击"重新启动"按钮,重新启动 Apusic 应用服务器。
- 查看日志文件: 单击"查看日志文件"按钮可查看 Apusic 应用服务器实例或集群的日志文件。
- 查看原始日志: 单击"查看原始日志"按钮可查看管理服务器 (名为 server) 的原始日志文件。
- 滚动日志: 单击将会把当前日志文件滚动,滚动的日志文件记录在配置文件【日志配置】”日志文件“的同一目录中
- 安全管理: 单击"安全管理"按钮可在"安全管理"页上启用或禁用安全管理。
- 恢复事务处理: 单击进入"恢复事务处理页面"。
- 查看访问日志: 单击进去查看访问日志页面。可对访问日志进行搜索或下载。需要在实例的配置【HTTP服务】开启“访问日志记录”功能才能记录到访问日志
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 名称 | 服务器的名称 | |
| 状态 | 服务器实例的当前状态。服务器可能已停止、已启动或正在运行 | |
| 运行时间 | 服务器实例已连续运行的小时和分钟数。这是只读信息 | |
| JVM | 如果单击"JVM 报告",则会打开一个单独的窗口,此窗口显示有关 Java 虚拟机的报告,包括概要报告、内存管理和垃圾收集报告、类加载报告和当前线程转储 | |
| 配置 | 主机上包含配置文件 (例如 domain.xml) 的目录 | |
| 安装目录 | 该 AAS 安装的位置 | |
| 已安装的版本 | 产品版本标识符 | |
| 安全管理 | 安全管理的当前状态。可能的值为"已启用"或"未启用" | 已启用 |
| 调试 | 标识是否已启用调试。如果已启用调试,则还会显示端口号。可在【配置管理】-【[实例/服务器集群]-config】-【JVM配置】-【一般信息】中开启调试模式 | 不开启 |
| 运行时间 | 当前 AAS 已运行的时间 | |
| License类型 | 展示当前授权文件的类型 | |
| License授权开始时间 | 展示当前授权文件开始授权的时间 | |
| License授权过期时间 | 展示当前授权文件结束授权的时间 | |
| License版本标识 | 展示当前授权文件的版本标识 | |
| License文件 | 显示 应用服务器 的授权文件内容。如需要更新,可将 license 文件内容拷贝至输入框,替换当前的 license,点击"更新 License 文件"即可,实时生效。如果的节点的 license 需要更换,在【节点】中对应位置更换。 开启邮件验证后,license 过期前 7 天将会发送到期提醒消息到邮箱。更换 license 后才会停止发送提醒 | |
| HTTP端口 | 当前配置的用于 HTTP 请求和响应的端口 | |
| IIOP端口 | 当前配置的用于 IIOP请求和响应的端口 |

# 查看日志文件
使用"查看日志文件"页面查看所选 Apusic 应用服务器实例和集群的日志文件内容,并自定义日志显示以及过滤搜索。可以选择日志文件,点击“下载”,下载相关日志。

日志查看器页面包含四个区域:
搜索标准。
高级搜索。
修改搜索。
搜索结果。
- "搜索标准"区域包含以下选项:
高级搜索: 单击此链接将打开一个区域,允许您对日志查看器进行其他改进。
时间戳: "最近"单选按钮显示最新消息。"特定范围"单选按钮可打开"从"和"到"字段,这些字段仅允许您在特定时间段内查看消息。
日志级别: 用于筛选的所选日志级别。默认情况下,显示内容包括在所选日志级别和更严重级别的服务器日志中显示的所有消息。选中标记为"不包括更高级别的日志信息"的复选框,以仅显示所选级别的日志。
要确保要查看的消息显示在服务器日志中,请首先在"模块日志级别"页面上设置相应的日志级别。请参考配置日志级别。
- "高级搜索"区域包含以下选项。
日志文件界面点击【高级搜索】链接,会出现高级搜索条件。

日志记录程序: 通过日志记录程序模块过滤。使用 shift 或 Ctrl 选择多个日志记录程序。
在更高级别选择日志记录程序会查询选择的日志记录程序以及下级的日志记录程序的日志信息。例如,选择 javax.enterprise.system 还为该日志记录程序下的所有模块选择记录器: javax.enterprise.system.core,javax.enterprise.system.tools.admin 等等。
定制日志记录程序: 特定于特定应用程序的记录器,每行一个。
如果应用程序有多个模块,您可以查看其中的任何一个或全部。例如,假设应用程序具有以下名称的记录器:
com.mycompany.myapp.module1
com.mycompany.myapp.module2
com.mycompany.myapp.module3
要查看应用程序中所有模块的消息,请键入 com.mycompany.myapp。要 module2 仅查看消息,请键入 com.mycompany.myapp.module2。
指定一个或多个自定义记录器时,仅当您在"记录器"区域中明确指定消息时,才会显示来自 Apusic 应用服务器模块的消息。
- 显示:
一次查看的消息数。显示的默认消息数为 40。其他选项为 100,250 。
要查看堆栈跟踪,请取消选中"限制过长消息"复选框。默认情况下,堆栈跟踪不会出现在查看器中;要查看它们,请单击(详细信息)消息的链接。
- "修改搜索"区域允许您指定服务器实例或集群以及要查看的关联日志文件的名称。
实例: 将显示日志记录的服务器实例或集群。默认为服务器。其他选择取决于可以为域定义和启用的集群和实例。
日志文件: 要显示的日志文件的名称。默认是 server.log。其他选择取决于所选目标的日志设置。
日志查看器结果表: 显示服务器日志消息。使用表格顶部的"记录之前"和"记录之后"按钮选择要查看的记录范围。
- 对于每条消息,"日志查看器结果"表包含以下信息:
记录编号: 服务器日志中的消息编号。
日志级别: 消息的日志级别。
消息: 日志消息的简短文本。单击(详细信息)链接以查看日志详细信息。
日志记录程序: 生成日志消息的记录器模块。
时间戳: 发出日志消息的日期和时间。
名称/值对: levelValue:日志级别的在程序中对应的值,如 SEVERE 对应的是 1000,INFO 对应的是 800。
timeMillis: 日志记录的时间戳值。
# 查看原始日志
查看原始日志界面,可以查看 server,独立实例以及集群实例实时生成的日志信息,实时生成的日志在该界面底部显示,并且会统计信息及以上级别的日志数量。可点击“下载”,下载当前实例的日志信息。


# 滚动日志
点击滚动日志按钮,会将当前的日志文件打包(日志文件名称为 server.log_[当前时间]),重新生产新的日志文件 server.log,之后的日志在新的日志文件中记录。滚动的日志文件存放在${DOMAIN_HOME}/mydomain/logs/。
当日志文件达到【配置管理】 -> 【server-config】 -> 【日志记录程序设置】中的"文件滚动限制"或"文件滚动时间限制"的值时,会自动滚动日志。

# 恢复事务处理
使用"恢复事务处理"页面恢复 Apusic 应用服务器实例的事务。
如果实例正在运行,则"恢复事务处理"页面仅包含正在运行的服务器本身和"确定"按钮以及说明文本。
如果实例未运行,则"恢复事务"页面包含以下选项:
实例名称: 创建实例时分配给实例的名称。该字段是只读的。
目标服务器: 另一个可以恢复当前实例上的事务的实例。
事务日志目录: 如果日志存储在共享文件系统中,则存储事务日志的目录。此设置不适用于存储在数据库中的事务日志。默认位于
/logs/tx域目录下。事务日志保存在
tx由集群配置的事务服务的事务日志位置设置指定的目录的子目录中。默认的"事务日志位置"值是"域属性"页面的"日志根"字段指定的目录,该页面位于 Apusic 应用服务器节点的"高级"选项卡下。

# 安全管理
使用"安全管理"页面启用或禁用安全管理。
启用安全管理时:
DAS 和域中的实例使用 SSL 证书来加密彼此发送的消息。
DAS 接受来自远程管理客户端(例如 asadmin 实用程序和 IDE)的管理消息。
"安全管理"页面包含以下信息。
- 启用安全管理员: 用于启用安全管理的按钮。仅当未启用安全管理时,才会显示此按钮。
注意: 如果域中的任何管理用户具有空密码,则尝试启用安全管理将失败。
禁用安全管理员: 用于禁用安全管理的按钮。仅在启用安全管理时才会显示此按钮。
管理别名: 引用 DAS 上的 SSL / TLS 证书的别名。DAS 使用此别名向实例标识自身。默认值为 s1as,仅当未启用安全管理时,才会显示此选项。
实例别名: 引用实例上的 SSL / TLS 证书的别名。实例使用此别名向 DAS 标识自己。默认值为 aas-instance。仅当未启用安全管理时,才会显示此选项。

# 查看访问日志
单击进去查看访问日志页面。可对访问日志进行搜索或下载。需要在实例的配置【HTTP服务】开启“访问日志记录”功能才能记录到访问日志。在页面中可条件搜索日志,或者选择日志文件,点击“下载”,下载相对于的日志。

# 资源
使用"资源"页面可以启用,禁用或创建与管理服务器关联的资源。

# 属性
服务器属性包括系统属性和实例属性,可以对属性进行添加删除等操作。

系统属性: 定义服务器级别的设置的公共值。您可以通过将其封装在$和大括号中来引用管理控制台文本字段中的系统属性。例如,要引用名为 prop-name 的属性,可以使用语法${prop-name}。
实例属性: 只用于当前实例中的属性,只在当前实例中有效,是通过${属性名称}引用。
对于每个属性,包含以下信息:
名称: 该属性的名称。
当前值: 属性的值。
覆盖值: 修改属性值,用于覆盖当前值。
系统预定义的系统属性:
| 属性名称 | 描述 |
|---|---|
| com.apusic.aas.installRoot | Apusic 应用服务器的安装目录 |
| com.apusic.aas.instanceRoot | Apusic 应用服务器域的根目录 |
| com.apusic.aas.hostName | 主机(机器)的名称 |
| com.apusic.aas.javaRoot | Java 运行时的安装目录 |
| com.apusic.aas.imqLib | 金蝶 Message Queue 软件的库目录 |
| com.apusic.aas.domainName | 域名。此属性不在默认配置中使用,但可用于自定义配置。默认值为 mydomain |
# 监视数据
服务器可以通过开启组件或服务的的监听功能,监听应用程序、服务器、资源的实时统计数据并显示记录。详细信息可查看【监视管理】模块。

# 批处理
# 批处理运行时配置

使用"批处理运行时配置"页面可以查看和更改批处理运行时的配置。批处理运行时使用托管执行程序服务和数据源来执行批处理作业。托管执行程序服务为作业提供线程,数据源存储作业信息。批处理运行时配置数据存储在 config 元素中 domain.xml。
"批处理运行时配置"页面包含以下信息:
实例名称/集群名称: 应用配置的 Apusic 集群或服务器实例的名称。这是一个只读字段。
执行者服务查找名称: 为批处理作业提供线程的托管执行程序服务的 JNDI 查找名称。默认的托管执行程序服务是 concurrent/__defaultManagedExecutorService。
在将批处理作业提交到批处理运行时之后,可以更改托管执行程序服务,而不会影响作业的执行。
数据源查找名称: 存储有关当前和过去批处理作业的信息的数据源的 JNDI 查找名称。默认数据源是 jdbc/__TimerPool。
在将第一个批处理作业提交到批处理运行时以执行后,请勿更改数据源。如果必须更改数据源,请停止并重新启动域,然后在启动或重新启动任何作业之前进行更改。但是,一旦数据源发生变化,存储在先前数据源中的信息就变得不可访问。
# 批处理执行
Apusic 应用服务器为批处理作业的调度和执行提供批处理运行时。批处理作业通常是长时间运行的,面向批量的任务,包含一系列步骤。批处理应用程序将作业提交到批处理运行时,并提供有关执行步骤的方式和时间的说明。批处理运行时处理这些步骤并将有关作业的信息存储在作业存储库中。在 Apusic 应用服务器中,作业存储库是一个数据库。
使用"批处理作业执行"页面可以查看有关已记录的批处理作业执行的详细信息。
"批处理作业执行"页面包含以下信息。
实例名称/集群名称: 应用配置的 Apusic 集群或服务器实例的名称。
批量作业: 实例或集群的已记录批处理作业执行列表。对于每次执行,将显示以下信息。
执行 ID: 分配给执行批处理作业的 ID。单击执行 ID 将打开"执行批处理作业执行详细信息"页面。第一次启动作业时以及每次重新启动现有执行时都会创建新的执行。
作业名: 工作的名称。
批处理状态: 批处理运行时设置的执行状态。
退出状态: Job XML 为作业或批处理应用程序设置的执行状态。默认情况下,除非明确覆盖退出状态,否则退出状态和批处理状态是相同的。
实例 ID: 分配给批处理作业实例的 ID。批处理作业的实例可以有多个执行。
开始时间: 执行开始的时间。
时间结束: 执行完成的时间。
# 证书管理
用于管理证书的模块。进入管理控制台后,选择服务器(管控服务器)后,然后再选择证书管理标签。
# 概念
证书: 公钥的载体,除了公钥外,里面还包括该证书的持有人的信息,例如姓名,地址...等。文件形式的证书后缀通常为 crt 或 cert。
证书库: 保存证书的存储库,通常的证书库格式有 JKS(只在 Java 程序中使用)和 pfx(或 p12),证书库中除了包含证书外,还可以包含私钥。在 SSL 配置中,有时(双向认证时)除了配置证书库外,还需要配置信任证书库,信任证书库是用于保存信任的第三方证书用的。
证书请求文件: 当向 CA 申请证书时,有时 CA 会要求提供证书请求文件(csr 文件),该文件中包含申请者的个人信息,可以通过记事本等工具打开。
单向认证/双向认证: 前者用于客户端认证服务器,即客户端认证服务器端传过来的证书;后者除了客户端需要认证服务器的证书外,服务器端也需要认证客户端的证书。直接信任该证书或信任该证书的颁发者证书都可以完成对该证书的认证。
# 密钥库实体
密钥库 keystore 是存储一个或多个密钥条目的文件,每个密钥条目以一个别名标识,它包含密钥和证书相关信息。
注意:
- 管控平台默认使用的密钥库实体别名为
kaas,default-config中的sec-admin-listener默认使用的密钥库实体别名为aas-instance。目前不能配置管控平台即sec-admin-listener的 SSL 证书。- 如若要配置国密证书,参考国密配置。

# 新增密钥库实体
点击"新建"进入新建密钥库实体页面。
| 配置项 | 说明 | 默认值 |
| 实例名称 | server;目前仅支持在实例 server 中管理证书 | server |
| 别名 | 指定存储此实体的别名。证书或密钥库文件没有特意说明的情况下,可任意命名;格式为包含字母、数字、横线或下划线,需唯一,必填项 | |
| 文件 | 上传证书或密钥库文件,支持 PEM 及 JKS 格式,必填项 | |
| 口令 | 上传的密钥库密码,有密码的时候需要输入,没有密码可不输入 | |
| 监听器 | 将条目添加到监听器中,留空表示添加到实例库中。建议填写 http-listener-2 |

# 删除密钥库实体
选择需要删除的密钥库实体,点击"删除",将会删除密钥库实体。删除后,已引用该实体的监听器将无法识别证书,需要重新选择密钥库实体才能正常使用。

# 密钥库实体引用
可在新建时添加"监听器",表示该监听器引用了该密钥库实体;同时在【配置管理】 -> 【server-config】 -> 【网络配置】 -> 【协议配置】->【SSL】设置"证书昵称"。只能设置一个密钥库实体别名,如果是在新建的时候设置,将会替换已有的别名。
设置"证书昵称"保存后,浏览器访问时点击 https 查看证书信息。
注意: 协议需要开启"安全性"才能使用 HTTPS 访问,证书才能生效。

# 信任库实体
信任库包含要信任的 CA 证书。

# 新增信任库实体
点击"新建"进入新建信任库实体页面。
| 配置项 | 说明 | 默认值 |
| 实例名称 | server;目前仅支持在实例 server 中管理证书 | server |
| 别名 | 指定存储此实体的别名。证书或信任库文件没有特意说明的情况下,可任意命名;格式为包含字母、数字、横线或下划线,需唯一,必填项 | |
| 文件 | 上传证书或信任库库文件,支持 PEM 、DER、 JKS 格式,必填项 | |
| 口令 | 上传的信任库文件的密码,有密码的时候需要输入,没有密码可不输入 | |
| 监听器 | 将条目添加到监听器中,留空表示添加到实例库中。建议填写 http-listener-2 |

# 删除信任库实体
选择需要删除的信任库实体,点击"删除",将会删除信任库实体。删除后,已引用该实体的监听器将无法识别证书,需要重新选择信任库实体才能正常使用。

# 信任库实体引用
可在新建时添加"监听器",表示该监听器引用了该信任库实体;同时在【配置管理】 -> 【server-config】 -> 【网络配置】 -> 【协议配置】设置"信任存储"为${com.apusic.aas.instanceRoot}/config/cacerts.jks。
注意: 协议需要开启"安全性"才能使用 HTTPS 访问,证书才能生效。
# 节点管理
使用系统管理员登录系统,对节点相关属性进行设置。
一个节点代表装有 Apusic 应用服务器软件的一台主机。对于 Apusic 应用服务器实例驻留的每个主机, 必须存在一个对应的节点。
安装完 Apusic 应用服务器默认自带一个本地节点 localhost-mydomain,在节点界面可以新增本地节点或者远程节点。
域可以对本机节点或者远程节点进行管理。

"节点"页面显示域中的节点列表。对于每个节点,将显示以下信息:
名称: 创建节点时分配给节点的名称。单击该名称将打开节点的"编辑节点"页面。
节点主机: 节点表示的主机的名称。
类型: 节点的类型,它是以下类型之一。
CONFIG: 该节点不支持远程通信。
SSH: 该节点支持通过安全 shell(SSH)进行通信。
实例: 驻留在节点上的实例列表,其中指示每个实例是否正在运行。
如果实例正在运行,则会显示复选标记(✓)。
如果实例已停止,!则会显示感叹号(!)。
单击实例的名称将打开实例的"常规信息"页面。
操作: 仅限 SSH 类型的节点: 指向节点的 Ping 操作的链接。单击 Ping 链接可测试节点是否可通过节点支持的通信协议访问。
CONFIG 节点无法执行任何操作。
节点表还包含以下选项:
新增: 用于创建节点的按钮。
删除: 用于删除一个或多个所选节点的按钮。
删除和卸载: 用于删除一个或多个所选节点的按钮,并从每个已删除节点所代表的主机上卸载 Apusic 应用服务器软件。
注意: 不会从 CONFIG 类型的节点所代表的任何主机上卸载 Apusic 应用服务器软件。对于 CONFIG 类型的节点,此按钮的操作与"删除"按钮的操作相同。
# 新建节点
使用"新建节点"页面创建 Apusic 应用服务器节点。节点表示安装了 Apusic 应用服务器软件的主机。对于 Apusic 应用服务器实例所在的每个主机,必须存在一个节点。
注意: 1、新建节点时不会创建实例,因而在节点目录下只显示有
aas目录,待该节点创建有节点信息时才会显示有${aas-install}/nodes目录。2、远程安装的Apusic应用服务器不包括域domains目录,通过agent das与DAS通讯,由DAS管理。
"新建节点"页面包含的选项取决于节点的类型。
节点类型分为"CONFIG"和"SSH";
"CONFIG"类型显示属性:
| 配置项 | 说明 | 默认值 |
| 名称 | 节点的名称。该名称在域中必须是唯一的,并且不能是另一个节点,集群,命名配置或 Apusic 应用服务器实例的名称,该名称不得为 domain,server 或 Apusic 应用服务器保留的任何其他关键字 | |
| 类型 | CONFIG: 该节点不支持远程通信。如果选择 CONFIG,则不显示 SSH 配置选项 | |
| 节点主机 | 节点表示的主机的名称 | |
| 节点目录 | 用于存放节点上所创建实例的文件目录路径 | ${com.apusic.aas.productRoot}/aas/nodes |
| 安装目录 | 主机上 Apusic 应用服务器软件的基本安装目录的父路径的完整路径。不设置时,默认为 AAS 的安装目录 | 默认为AAS的安装目录 |

"SSH"类型显示属性:
点击"确定"后,开始创建节点,同时安装并启动节点代理 agent。创建成功后,返回节点列表页面,显示有创建的节点信息。在节点安装目录下安装有 node-manager。
注意:
- 节点代理端口允许修改,但需要为有访问权限的端口。
- 如果 节点代理 端口冲突时,节点代理程序 将无法启动,需要更改节点代理 端口,但不影响节点的创建安装。
| 配置项 | 说明 | 默认值 |
| 名称 | 节点的名称。该名称在域中必须是唯一的,并且不能是另一个节点,集群,命名配置或 Apusic 应用服务器实例的名称,该名称不得为 domain,server 或 Apusic 应用服务器保留的任何其他关键字 | |
| 类型 | SSH: 该节点支持通过安全 shell(SSH)进行通信 | |
| 节点主机 | 节点表示的主机的名称 | |
| 节点目录 | 用于存放节点上所创建实例的文件目录路径 | ${com.apusic.aas.productRoot}/aas/nodes |
| 安装目录 | 主机上 Apusic 应用服务器软件的基本安装目录的父路径的完整路径。不设置时,默认为 AAS 的安装目录 | 默认为AAS的安装目录 |
| 节点代理端口 | 节点代理端口,指定 节点代理agent 管理端口, 用以管理代理程序,如负载均衡器、缓存集群实例等;默认 1099,端口需要对外开放。在创建类型为“SSH”的节点过程中会默认安装节点代理程序nodemanager,如果节点代理程序安装不成功或节点代理端口冲突,不会影响节点的安装和创建 | 1099 |
| 安装Apusic应用服务器 | 如果勾选了选项,则 DAS 会将 Apusic 应用服务器软件从 DAS 主机复制到节点主机。安装部分不包含 domains。要将 Apusic 应用服务器软件复制到主机,DAS 必须能够通过 SSH 与主机联系 | 不启用 |
| 强制 | 如果勾选,则即使验证节点参数失败,也会在 DAS 配置中创建节点。如果不勾选,则要验证节点的参数,DAS 必须能够通过 SSH 联系节点的主机 | 不启用 |
| SSH端口 | 用于 SSH 连接到此节点主机的端口。默认值为 22.如果 Node Host 选项设置为 localhost-domain,则忽略 SSH 端口选项 | 22 |
| SSH用户名 | 此节点主机上的用户将运行通过 SSH 连接到主机的进程。默认值是运行 DAS 进程的用户。要确保 DAS 可以读取此用户的 SSH 私钥文件,请指定正在运行 DAS 进程的用户 | |
| SSH用户认证 | 下拉列表,用于指定登录此节点主机时 SSH 用户的身份验证方式。可能的身份验证方法如下: 密钥文件: SSH 用户通过 SSH 私钥文件进行身份验证。如果选择此选项,请在"密钥文件"字段中指定文件的绝对路径。 口令: SSH 用户通过存储在 DAS 配置中的密码进行身份验证,如果选择此选项,则会激活 SSH 用户密码字段以使您能够提供密码。 口令别名: SSH 用户通过密码别名进行身份验证。如果选择此选项,请从"密码别名"下拉列表中选择密码别名。 | 密钥文件 |
| 设置SSH | 如果勾选上,Apusic 应用服务器将在节点主机上设置 SSH 密钥。Apusic 应用服务器通过从 DAS 主机复制现有密钥文件来设置 SSH 密钥,或者,如果需要,通过在复制文件之前生成文件来设置 SSH 密钥。仅当"SSH 用户身份验证"选项设置为"密钥文件"时,此选项才可用 | |
| 密钥文件 | SSH 用户的私有密钥文件的绝对路径。默认值为 id_rsa, id_dsa 或 SSH 用户 .ssh 目录中的身份。仅当"SSH 用户身份验证"选项设置为"密钥文件"时,此选项才可用 | |
| SSH用户口令 | SSH 用户的私有密钥文件的绝对路径。默认值为 id_rsa, id_dsa 或 SSH 用户 .ssh 目录中的身份。仅当"SSH 用户身份验证"选项设置为"口令"时,此选项才可用 | |
| 口令别名 | 选择口令别名。仅当"SSH 用户身份验证"选项设置为"口令别名"时,此选项才可用 | |
| License文件 | Apusic 应用服务器的许可证,不单独设置时,将会默认复制管理控制台的 license 至新建的节点。开启邮件验证功能后,license 到期前 7 天开始发送到期提醒邮件,需要更换 license 才会停止发送 |


# 编辑节点
在节点列表中点击节点名称,进入编辑节点界面,使用"编辑节点"页面更新 Apusic 应用服务器节点的配置数据。
# 一般信息
在节点的一般信息页面展示属性如下:
| 配置项 | 说明 | 默认值 |
| 启动节点代理 | 如果节点代理状态属于未知或已停止时,可点击"启动节点代理"。Agent 端口需要为未运行的端口 | |
| 停止节点代理 | 如果节点代理状态属于正在运行,可点击"停止节点代理"。节点代理停止后,该节点下的负载均衡器等实例将会无法连接 | |
| 名称 | 节点名称,不能编辑 | |
| 类型 | 根据新建时显示对应类型。CONFIG: 该节点不支持远程通信。SSH: 该节点支持通过安全 shell(SSH)进行通信 | |
| 节点主机 | 节点表示的主机的名称 | |
| 节点目录 | 用于存放节点上所创建实例的文件目录路径 | ${com.apusic.aas.productRoot}/aas/nodes |
| 安装目录 | 主机上 Apusic 应用服务器软件的基本安装目录的父路径的完整路径。不设置时,默认为 AAS 的安装目录 | 默认为AAS的安装目录 |
| 节点代理端口 | 节点代理端口,指定 节点代理agent 管理端口, 用以管理代理程序,如负载均衡器、缓存集群实例等;默认 1099,端口需要对外开放。在创建类型为“SSH”的节点过程中会默认安装节点代理程序nodemanager,如果节点代理程序安装不成功或节点代理端口冲突,不会影响节点的安装和创建 | 1099 |
| 强制 | 如果勾选,则即使验证节点参数失败,也会在 DAS 配置中创建节点。如果不勾选,则要验证节点的参数,DAS 必须能够通过 SSH 联系节点的主机 | 不启用 |
| SSH端口 | 用于 SSH 连接到此节点主机的端口。默认值为 22.如果 Node Host 选项设置为 localhost-domain,则忽略 SSH 端口选项 | 22 |
| SSH用户名 | 此节点主机上的用户将运行通过 SSH 连接到主机的进程。默认值是运行 DAS 进程的用户。要确保 DAS 可以读取此用户的 SSH 私钥文件,请指定正在运行 DAS 进程的用户 | |
| SSH用户认证 | 下拉列表,用于指定登录此节点主机时 SSH 用户的身份验证方式。可能的身份验证方法如下: 密钥文件: SSH 用户通过 SSH 私钥文件进行身份验证。如果选择此选项,请在"密钥文件"字段中指定文件的绝对路径。 口令: SSH 用户通过存储在 DAS 配置中的密码进行身份验证,如果选择此选项,则会激活 SSH 用户密码字段以使您能够提供密码。 口令别名: SSH 用户通过密码别名进行身份验证。如果选择此选项,请从"密码别名"下拉列表中选择密码别名。 | |
| 设置SSH | 如果勾选上,Apusic 应用服务器将在节点主机上设置 SSH 密钥。Apusic 应用服务器通过从 DAS 主机复制现有密钥文件来设置 SSH 密钥,或者,如果需要,通过在复制文件之前生成文件来设置 SSH 密钥。仅当"SSH 用户身份验证"选项设置为"密钥文件"时,此选项才可用 | |
| 密钥文件 | SSH 用户的私有密钥文件的绝对路径。默认值为 id_rsa, id_dsa 或 SSH 用户 .ssh 目录中的身份。仅当"SSH 用户身份验证"选项设置为"密钥文件"时,此选项才可用 | |
| SSH用户口令 | SSH 用户的私有密钥文件的绝对路径。默认值为 id_rsa, id_dsa 或 SSH 用户 .ssh 目录中的身份。仅当"SSH 用户身份验证"选项设置为"口令"时,此选项才可用 | |
| 口令别名 | 选择口令别名。仅当"SSH 用户身份验证"选项设置为"口令别名"时,此选项才可用 | |
| License文件 | Apusic 应用服务器的许可证,不单独设置时,将会默认复制管理控制台的 license 至新建的节点。开启邮件验证功能后,license 到期前 7 天开始发送到期提醒邮件,需要更换 license 才会停止发送 |
注意:
- 修改节点代理agent的管理端口需要停止agent再修改。
- 如要修改"节点主机""安装目录""节点目录",需要确认该目录下是否有 AAS,否则该节点将会无法使用。建议不修改"节点主机""安装目录""节点目录"。


# 负载均衡器实例
点击"负载均衡器实例",显示当前节点下所有的负载均衡器信息。可进行启动、停止、重新启动、删除等操作,点击名称可转至该负载均衡器实例编辑页面。

# 缓存集群实例
点击"缓存集群实例",显示当前节点下所有的缓存集群信息。可进行启动、停止删除等操作。

# 删除节点
在节点列表中选中需要删除或卸载的节点,可以进行删除或卸载操作。
删除: 用于删除一个或多个所选节点的按钮。删除操作仅限于从管控平台删除节点信息,不会从节点安装目录删除节点信息。
删除和卸载: 用于删除且卸载一个或多个所选节点的按钮,并从每个已删除节点所代表的主机上卸载 Apusic 应用服务器软件。卸载后节点代理 agent 线程也会被关闭。
注意:
- 不会从 CONFIG 类型的节点所代表的任何主机上卸载 Apusic 应用服务器软件。对于 CONFIG 类型的节点,此按钮的操作与"删除"按钮的操作相同。
- 当节点下有状态为"正在运行"的实例时,不能进行删除或卸载操作,需要手动停止实例,且删除实例才能删除或卸载节点。

# 独立实例
使用系统管理员登录系统,对独立实例相关属性进行设置。
使用"独立实例"页面可以创建和管理独立的 Apusic 应用服务器实例,希望达到一台服务器通过多个 HTTP 端口访问可使用创建独立实例方式。独立实例包括本地的独立实例和远程独立实例。

"独立实例"页面显示域中所有独立实例的列表。对于每个实例,提供以下信息。
名称: 创建实例时分配给实例的名称。单击该名称将打开实例的"常规信息"页面。
配置: 创建实例时为实例选择的配置。单击配置将打开实例的"配置"页面。
节点: 独立实例所在节点的名称。单击该名称将打开节点的"编辑节点"页面。
状态: 指示实例的运行状态。
"服务器实例"表还包含以下选项。
新建: 用于创建独立实例的按钮。
删除: 用于删除一个或多个所选独立实例的按钮。实例状态需要为"已停止"才能删除。
启动: 按钮以启动一个或多个选定的独立实例。
停止: 用于停止一个或多个所选独立实例的按钮。
独立实例有其安装目录,默认路径为${APUSIC_HOME}/nodes/[nodename]。
独立实例日志: 日志文件默认在独立实例安装目录下,如${APUSIC_HOME}/nodes/[nodename]/logs 下。
# 新建独立实例
使用"新建独立实例"页面创建独立的 Apusic 应用服务器实例。

新建独立实例包含以下选项:
注意: default-config 只能被复制,不能被引用。
| 配置项 | 说明 | 默认值 |
| 实例名称 | 设置独立实例名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 节点 | 定义实例可驻留的主机的现有节点的下拉列表。必须从列表中选择一个节点。如果要在运行域管理服务器(DAS)的主机上创建实例,请选择预定义的节点 localhost-domain,如需在远程服务器上新建实例,则需要先新增远程节点,新建实例时选择远程节点 | localhost-mydomain |
| 配置 | 实例可以使用的现有命名配置的下拉列表。必须从列表中选择一个配置。创建实例时,实例将使用所选配置。 · 复制所选配置 如果选择此选项,则会在创建实例时复制所选配置。为配置副本分配名称 instance-name-config,其中 instance-name 是在 Instance Name 字段中键入的实例的名称。 · 引用所选配置 如果选择此选项,则实例将使用指定的现有命名配置。 | default-config |
# 配置独立实例
在独立实例列表的配置栏点击独立实例的配置名称,进入独立实例的配置信息界面,可以对配置各组件服务,JVM 等进行修改配置。配置信息可参考配置管理。

# 应用程序

使用"应用程序"页面在选定的独立 Apusic 应用服务器实例上执行以下任务:
查看和管理已部署到实例的应用程序。
将更多应用程序部署到实例。
"实例名称"字段是一个只读字段,用于显示当前实例的名称。
"已部署的应用程序"页面显示部署到所选实例的应用程序列表。对于每个应用程序,提供以下信息。
名称: 应用程序的名称。
已启用: 指示应用程序是否已启用:
如果启用了应用程序,则会显示复选标记(✓)。
如果禁用该应用程序,则会显示十字(✗)。
引擎: 应用程序使用的容器类型。容器类型可以是以下任何类型:
- web
- webservices
- ejb
- connector
- appclient
- weld- Java EE 平台应用程序的上下文和依赖注入的容器
"已部署的应用程序"表头还包含以下选项。
部署: 用于部署应用程序的按钮。
取消部署: 按钮取消部署一个或多个选定的应用程序。
取消部署应用程序会从所有目标和域中删除该应用程序。取消部署应用程序时,应用程序页面上不再列出该应用程序,该页面显示 Apusic 应用服务器中部署的所有应用程序。
要仅从当前目标中删除应用程序,请使用此页面上的"删除"按钮。删除: 用于删除一个或多个所选应用程序的按钮。
删除应用程序仅从当前目标中删除应用程序。从目标中删除应用程序后,应用程序将继续列在"应用程序"页面上,该页面将显示 Apusic 应用服务器中部署的所有应用程序。该应用程序还部署在部署它的任何其他目标上。
要从所有目标和域中删除应用程序,请使用此页面上的"取消部署"按钮。更多操作 下拉列表,对一个或多个所选应用程序执行其他操作。
启用: 启用一个或多个选定的应用程序。
禁用: 禁用一个或多个选定的应用程序。
# 其他
独立实例一般信息、资源、属性、监视器、批处理等功能介绍可以参考服务器(管控服务器),功能类似。
# 集群管理
Apusic 应用服务器管控提供了集群图形化界面,便于用户对集群,集群实例、集群前置负载均衡器以及集群资源进行统一的配置管理。
# 服务器集群
创建和管理 Apusic 服务器 集群。集群是 Apusic 服务器实例的命名集合,通过可扩展性, 负载均衡和故障保护提供高可用性。
新建: 进入【服务器集群】页面,可创建服务器集群。
删除: 选择需要删除的服务器集群,点击"删除"将会将服务器集群信息删除。删除服务器集群信息前需要先把服务器集群中的实例删除。
启动集群: 选择服务器集群,点击"启动集群"将会把服务器集群中的实例启动。
停止集群: 选择服务器集群,点击"停止集群"将会把服务器集群中的实例停止运行。
状态: 显示服务器集群实例当前的负载状态,主要针对"弹性伸缩"功能,开启"弹性伸缩"功能后将会有负载信息。

# 新建服务器集群
点击"新建",进入新建服务器集群页面。
点击"确定"后,将会新建集群信息。在【配置】中显示有所创建的集群的配置信息。
| 配置项 | 说明 | 默认值 |
| 集群名称 | 设置独立实例名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 配置 | 该集群的配置文件,可选择"复制所选配置"或"引用所选配置"。 复制所选配置: 将会复制一份配置文件作为创建的集群的配置文件,如选择 default-config,选择复制后,创建集群时将会复制一份 default-config 文件作为集群的配置文件,命名规则为:[集群名称]-config。 引用所选配置: 将会使用所引用的配置文件作为创建的集群的配置文件,如选择 server-config 作为被引用文件,此时创建的集群配置文件与实例 server 一致。为便于管理,建议不使用"引用所选配置"。 注意:default-config 不能被引用 | default-config |
| 消息队列集群配置类型 | 默认使用带主中介的嵌入式常规集群 | |
| 实例 | 创建属于集群的实例,输入实例名称、权重,选择节点。集群实例在"新建集群"页面非必填项 |

# 编辑服务器集群
# 一般信息
服务器集群的一般信息页面有以下属性:
- 启动集群: 点击将会启动集群所有的实例。
- 停止集群: 点击将会停止集群所有的实例。
| 配置项 | 说明 | 默认值 |
| 集群名称 | 当前集群的命名,不能修改 | |
| 配置 | 当前集群的配置文件,点击将会跳转至配置文件部分 | |
| 缓存集群 | 当【缓存集群】模块有配置时,该项可选择对应的缓存集群,该服务器集群中的应用程序将会使用缓存集群功能。配置缓存集群后,需要重新加载服务器集群中的应用程序 | |
| 负载均衡器 | 当【负载均衡器】或【负载均衡器集群】模块有配置时,该项可选择。选择对应的负载均衡器或负载均衡器集群,可以通过负载均衡器访问应用程序。配置负载均衡器后可即时生效 | |
| GMS | 如果启用该选项, GMS 服务将在集群中的每个 Apusic Server 实例内作为生命周期模块启动 | |
| 多点传达端口 | GMS 用于监听组事件的通信端口 | |
| 多点传达地址 | GMS 将在其上监听组事件的地址。对每个集群必须是唯一的 | |
| 绑定接口地址 | DAS 上 GMS 所绑定到的网络接口。标记必须在 DAS 配置中的 ${gms-bind-interface-address} 属性中定义 | |
| 状态 | 显示当前服务器集群实例运行情况 | |
| 实例探测方法 | 设置实例探测方法。探测方式包括 UR、JDBC、 Ping 、Socket URL: 通过URL方式请求对应实例,返回需要的实例基础信息 JDBC: 通过JDBC方式。测试指定实例的Jndi数据源是否正确执行了指定的SQL语句 Ping: 通过Ping 方式判断该实例所在物理机是否Ping通 Socket: 通过Ping 方式判断该实例所在物理机IP以及端口正常可以连接 | |
| 弹性伸缩开关 | 状态为 on 时,集群将会开启弹性伸缩功能。详看[弹性伸缩功能](#弹性伸缩功能) |

# 弹性伸缩功能
开启弹性伸缩功能,将会根据设置的策略创建或关闭运行实例情况。
根据设置的"弹性伸缩检测间隔(秒)"检测节点的 CPU 或内存使用情况,达到"新增实例阈值"时将会提示进行实例调整,如果"弹性伸缩调整方式"为"自动",将会自动新增实例;如果"弹性伸缩调整方式"为"手动",将会在负载均衡器集群列表页面中的"状态"显示需要调整提示。
| 配置项 | 说明 | 默认值 |
| 弹性伸缩开关 | 设置为 on 将会开启弹性伸缩功能 | off |
| 弹性伸缩调整方式 | 自动: 应用服务器根据设置的弹性伸缩策略自动调整。 手动: 当指数达到弹性伸缩策略设置的值时,显示调整提示,需要手动调整 | 自动 |
| 弹性伸缩策略 | 设置弹性伸缩的策略,选项有CPU、内存 | CPU |
| 配置项 | 说明 | 默认值 |
| 弹性伸缩检测间隔(秒) | 进行弹性伸缩检测时间间隔,默认是 60 秒,表示每 60 秒检测一次。 | 60秒 |
| 操作冻结时间(秒) | 新增集群实例之后,开始刷新的等待时间,默认是 300 秒,表示 300 秒后进行检测 | 300秒 |
| 最少实例数 | 集群运行的最少实例数 | 2 |
| 最多实例数 | 集群运行的最多实例数 | 4 |
| 关闭实例 CPU 阈值(%) | 当平均 CPU 阈值达到或低于 20%时,关闭实例,从实例所在的节点 CPU 使用率高先后关闭 | 20% |
| 新增实例 CPU 阈值(%) | 当平均 CPU 阈值达到或高于 80%时,创建实例,从所有的节点 CPU 使用率低先后创建实例 | 80% |
- 内存。 设置为内存时,将会根据节点的内存情况进行弹性检测。
| 配置项 | 说明 | 默认值 |
| 弹性伸缩检测间隔(秒) | 进行弹性伸缩检测时间间隔,默认是 60 秒,表示每 60 秒检测一次。 | 60秒 |
| 操作冻结时间(秒) | 新增集群实例之后,开始刷新的等待时间,默认是 300 秒,表示 300 秒后进行检测 | 300秒 |
| 最少实例数 | 集群运行的最少实例数 | 2 |
| 最多实例数 | 集群运行的最多实例数 | 4 |
| 关闭实例内存 阈值(%) | 当平均内存 阈值达到或低于 20%时,关闭实例,从实例所在的节点 CPU 使用率高先后关闭 | 20% |
| 新增实例 内存 阈值(%) | 当平均内存 阈值达到或高于 80%时,创建实例,从所有的节点 CPU 使用率低先后创建实例 | 80% |
智能路由功能: 假如服务器集群的平均 CPU 使用率处于关闭实例 CPU 阈值(%)与新增实例 CPU 阈值(%)之间,有实例处于关闭实例 CPU 阈值(%)之下,同时存在实例处于新增实例 CPU 阈值(%)之上,根据 CPU 空闲率由高至低自动调整服务器集群实例的权重。


# 集群应用程序
使用"应用程序"页可对当前集群执行以下任务:
查看和管理已部署到集群的应用程序。
将多个应用程序部署到集群。
集群名称: 只读字段,其中显示当前集群的名称。
"应用程序"页显示已部署到当前集群的应用程序的列表。对于每个应用程序,均提供以下信息:
名称: 应用程序名称。
已启用: 指示应用程序是否已启用:
如果应用程序已启用,将会显示复选标记 (✓)。
如果应用程序已禁用,将会显示十字标记 (✗)。
引擎: 应用程序所用的容器类型。容器类型可为以下类型的任意一种:
- web
- webservices
- ejb
- connector
- appclient
- weld- Java EE 平台应用程序的 Contexts 和 DependencyInjection 的容器
"已部署的应用程序"表还包含以下选项:
部署: 用于部署应用程序的按钮。
取消部署: 按钮取消部署一个或多个选定的应用程序。
取消部署应用程序会从所有目标和域中删除该应用程序。取消部署应用程序时,应用程序页面上不再列出该应用程序,该页面显示 Apusic 应用服务器中部署的所有应用程序。
要仅从当前目标中删除应用程序,请使用此页面上的"删除"按钮。删除: 用于删除一个或多个所选应用程序的按钮。
删除应用程序仅从当前目标中删除应用程序。从目标中删除应用程序后,应用程序将继续列在"应用程序"页面上,该页面将显示 Apusic 应用服务器中部署的所有应用程序。该应用程序还部署在部署它的任何其他目标上。
要从所有目标和域中删除应用程序,请使用此页面上的"取消部署"按钮。更多操作 下拉列表,对一个或多个所选应用程序执行其他操作。
启用: 启用一个或多个选定的应用程序。
禁用: 禁用一个或多个选定的应用程序。
点击应用程序的名称,将进入该应用程序的编辑页面,详看应用管理对应章节的介绍。

# 实例
创建并管理当前集群的 Apusic 服务器 集群实例。能够"新建"、"删除"、"启动"、"停止"实例信息。
新建: 进入新建服务器集群实例页面,可为服务器集群添加实例信息。新增的服务器集群实例启动后实时加入服务器集群工作,配置文件将会同步更新。
删除: 选择服务器集群实例,点击"删除"可将服务器集群实例从该集群中删除,删除后配置文件将会同步更新。
启动: 选择服务器集群实例,点击"启动"将会启动所选择的服务器实例。
停止: 选择服务器集群实例,点击"启动"将会启动所选择的服务器实例。
集群服务器实例页面显示当前集群所有的实例信息,列表显示属性有:
名称: 集群实例名称,需保持唯一性,点击进入当前实例的一般信息页面。
LB 权重: 集群实例所占权重,分配后将会根据权重分担负载状态,默认为 100。
配置: 集群实例的配置文件,点击可进入配置设置页面。
节点: 集群实例所在的节点,点击可进入该节点编辑页面。
状态: 当前实例的运行状态。

# 新建服务器实例
点击"新建",输入以下属性:
实例名称: 服务器集群实例名称,需要保持唯一性。
节点: 创建的实例所在的节点。
点击"确定"。
集群实例位置保存在${APUSIC_HOME}/nodes/[node_name]/[cluster-instance_name]。
集群实例启动后会自动创建所有需要的文件,日志保存在${APUSIC_HOME}/nodes/[node_name]/[cluster-instance_name]/logs。
设置服务器集群实例的配置需要到[cluster-instance_name]-config 下设置。
需要成功启动服务器集群实例才能完全初始化配置文件。

# 集群实例管理
点击集群实例名称,进入该集群实例的管理页面,显示有一般信息、属性、监视数据。基本操作可参考服务器(管控服务器)。

# 资源
启用, 禁用或创建与实例相关联的资源。

# 属性
集群的属性信息,分为系统属性和集群属性。

# 批处理
设置集群的批处理配置环境,属性可参考批处理。

# 安装节点代理
在管理负载均衡器、会话管理器之前,需要在安装负载均衡器或会话管理器的服务器上安装节点代理 node-manager,用于监视其状态,以及远程执行启动、停止、重启等命令。
注意: 每个节点代理只能在同一个服务器管理一个负载均衡器。
# 独立安装节点代理
安装步骤:
获取安装包
node-manager.tar.gz或node-manager.zip。解压安装包安装。
Windows 下直接解压。
Linux 下执行 unzip node-manager.zip 进行解压。
- 配置负载均衡器节点代理的地址和端口,编辑"安装路径/node-manager/config/config.properties",填写 host(负载均衡器节点代理所在机器的 IP 地址)和 port(默认为 1099,需确定该端口没有被占用)。
- 启动负载均衡器节点代理。
Windows 下切换到"安装路径 node-manager\bin"目录下,以管理员身份执行 agent.cmd 命令启动。
Linux 下切换到"安装路径/node-manager/bin"目录下执行./agent.sh 命令启动。
或者使用后台启动命令: nohup ./agent.sh >/dev/null 2>&1 &。
# 节点安装节点代理
从 金蝶Apusic应用服务器 管控台安装远程节点时,将会自动安装节点代理,安装位置为${APUSIC_HOME}/aas/nodes/[NODE_NAME]/nodemanager/。默认端口为 1099,host 为服务器 IP。
# 缓存集群
设置缓存集群,实现分布式会话共享和同步。缓存集群页面显示有:
新建: 进入新建缓存集群页面。
删除: 选择缓存集群,点击删除将会删除该缓存集群。有正在运行的实例时不能删除;如果缓存集群已被服务器集群引用,需要取消引用才能删除。
名称: 缓存集群的名称。
类型: 缓存集群的类型。
使用状态: 被引用目标数。
运行状态: 该缓存集群中的所有缓存实例的运行状态。
启动: 点击将会运行该缓存集群下的所有缓存实例。
停止: 点击将会停止该缓存集群下的所有缓存实例。
重启: 点击将会重新启动该缓存集群下的所有缓存实例。

# 新建缓存集群
点击"新建",可创建缓存集群。创建缓存集群前,不管是哪种引用模式都需要先确保节点代理已安装且已启动。管理节点代理安装参考安装节点代理。
| 配置项 | 说明 | 默认值 |
| 缓存集群名称 | 设置缓存集群名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 缓存集群类型 | 选择缓存集群类型, hazelcast、amdc | hazelcast |
| 缓存集群模式 | 当“缓存集群类型”为“amdc"时显示该选项。模式有cluster、master-slave。 cluster:集群模式,当amdc集群设置为集群模式时,至少需要设置3个amdc节点实例;为确保高可用,还需要设置“跟随数量” master-slave:主从模式,当amdc集群设置为主从模式时,至少需要指定amdc主节点实例 | cluster |
| 跟随数量 | 当“缓存集群模式”为“cluster"时显示该选项。为保证高可用,需指定主节点跟随数量(从节点数),集群至少需要3个节点实例,“跟随数量”设置为0时,表示不挂载从节点实例,当amdc集群出现实例失效情况时,该集群下是所有节点都不能使用;“跟随数量”设置为1时,表示主节点实例下面至少需要挂载一个从节点实例,这时至少需要创建6个amdc实例;以此类推。 节点实例的主从状态由amdc自动分配 | |
| 外部集群 | 是否使用外部缓存实例,默认不开启,缓存实例安装在节点上,安装位置为${APUSIC_HOME}/nodes/[node_name]/[cacheins_name] | 不启用 |
| 要创建的缓存集群实例 | 创建缓存集群实例。根据具体缓存集群类型及缓存集群模式决定是否必填 |
点击"新建"后,显示:
| 配置项 | 说明 | 默认值 |
| 实例名称 | 自动生成,生成规则为【缓存集群名称】->【缓存集群类型】->【时间】,可修改,只能包含字母、数字、横线或下划线,需唯一 | |
| 节点 | 缓存实例安装在的节点,点击下拉框可选择当前管控台【节点管理】下的任意节点,节点需要启动节点代理 | |
| 端口 | 缓存实例的端口,可设置,端口需要有对外开放的权限。为空时,确定后会自动分配端口,默认范围为 5701 - 5800 |


- 外部集群: 是否使用外部缓存实例,开启后,"要创建的缓存集群实例"表格显示。
| 配置项 | 说明 | 默认值 |
| 实例名称 | 自动生成,生成规则为【缓存集群名称】->【缓存集群类型】->【时间】,可修改,只能包含字母、数字、横线或下划线,需唯一 | |
| 主 | 设置为集群实例的主实例,amdc集群的“缓存集群模式”为master-slave时需要设置 | |
| 节点代理IP | 节点代理 IP,即为节点代理器 NodeManager 安装在的 IP | |
| 节点代理端口 | 节点代理 端口,即为节点代理器 NodeManager的端口 | |
| 执行文件路径 | 执行文件路径,如hazelcast的执行文件路径为${HAZELCAST_INSTALL_DIR}/bin/start.sh; amdc的执行文件路径为${AMDC_INSTALL_DIR}/amdc-server | |
| 配置文件路径 | 配置文件路径,如hazelcast的配置文件路径为${HAZELCAST_INSTALL_DIR}/bin/hazelcast.xml; amdc的执行文件路径为${AMDC_INSTALL_DIR}/conf.yaml | |
| 端口 | 缓存实例的端口,可设置,端口需要有对外开放的权限。为空时,确定后会自动分配端口,默认范围为 5701 - 5800 |


确定后,成功创建缓存集群,返回列表页面,需要点击"启动"运行集群实例。
注意:
- 外部缓存实例和节点缓存实例不能同时在一个集群中。
- 在设置外部缓存实例时,需要注意同一个集群需要使用同一个版本的 Hazelcast,如使用 Hazelcast4.0.3,其他实例需要都为 Hazelcast4.0 系列,不能为 4.1/4.2 等。AAS 目前仅支持 Hazelcast4.0 以上的版本。
- 在新建缓存集群页面允许不创建缓存集群实例,但需要在编辑页面中为集群添加实例,否则无法启动。
# 编辑缓存集群
# 一般信息
点击缓存集群列表中缓存集群名称,进入该缓存集群的一般信息页面,显示有。
启动集群: 当集群实例处于停止状态时,可点击启动集群,当前集群下的所有实例执行启动操作。
停止集群: 当集群实例处于运行状态时,可点击停止集群,当前集群下的所有实例执行停止操作。
集群名称: 当前缓存集群的名称,不能编辑。
集群类型: 当前缓存集群的类型,不能编辑。
引用集群: 当前缓存集群引用类型,node 表示为节点缓存集群实例,external 表示为引用外部集群实例,不能编辑。
状态: 当前集群实例的状态。
注意: 应用程序运行过程中添加或修改服务器集群中的缓存集群选项,需要重新加载应用程序才能生效。

# 实例
显示当前缓存集群下所有缓存实例信息,可新建、删除、启动、停止、编辑。如果集群类型是“amdc”,为确保缓存集群的高可用,需要将集群停止再增减实例;如果集群模式为cluster,需要在“新建”时做好实例数量配置。
点击"新建",根据创建的集群是否引用类型显示属性。

点击实例名称,进入实例编辑页面,可进行编辑。Hazelcast 可编辑的属性为端口,修改时需要确保端口未被使用且有访问权限。当实例处于运行状态时,端口不能修改,需要停止运行实例才能修改端口。


# 缓存集群检验
根据新建缓存集群,并启动。如创建缓存集群 myhazelcast,使用节点缓存实例 myhazelcast-hazelcast-136、myhazelcast-hazelcast-74。
根据节点安装负载均衡器,新建负载均衡器,如节点安装负载均衡器 nginx74。如果使用的是 Apache,取消勾选"是否会话粘滞"。
根据新建服务器集群,如创建服务器集群 mycluster,包含实例 ins136,ins74。选择负载均衡器 nginx74,缓存集群 myhazelcast,启动服务器集群。

部署应用程序 testSession.war 到服务器集群 mycluster。
注意:
- 应用程序包为 war 文件才能开启缓存集群功能。
- 应用程序独立开启 session 集中缓存功能时,优先使用应用程序的 session 集中缓存配置。

防止管控平台的 session 被同步到应用程序,需要使用另外的浏览器通过负载均衡器方式访问应用程序 testSession,每访问一次,count+1,sessionid 一直为同一个。

当把缓存集群 myhazelcast 中的实例停止只保留一个运行时,sessionid 依然保持不变。应用程序运行过程中可以添加或删除服务器实例和缓存集群实例,不需要重新部署或重新加载应用程序。

应用程序运行过程中添加或修改服务器集群中的缓存集群选项,需要重新加载应用程序才能生效。


# 负载均衡器
使用系统管理员登录系统,对负载均衡器管理相关属性进行设置。
Apusic 应用服务器管控提供了负载均衡器管理的图形化界面,可以对前置机负载均衡器进行统一的配置管理,可以对 apache 、 nginx 、ALB进行统一配置管理。
负载均衡器验证详看服务器集群管理。

"负载均衡器"页面显示 Apusic 应用服务器上管理的负载均衡器列表。可以查看和管理已添加的负载均衡器,还可以新建更多负载均衡器资源进行管理。
对于每个负载均衡器,提供以下信息。
名称: 负载均衡器名称。
负载均衡器类型: 负载均衡器的类型,如 apache,nginx ,alb等。
状态: 表示负载均衡器在目标集群中的是否启用状态。
运行状态: 负载均衡器的运行状态,如"正在运行"、"已停止"等状态。
操作: 在操作栏中可以对负载均衡器进行启动、停止、重新启动等操作。
版本: 负载均衡器的版本信息。
"负载均衡器"表还包含以下选项:
新建: 新建管理负载均衡器。
删除: 删除管理负载均衡器。
# 新建负载均衡器
对于负载均衡器以及服务器集群的管控集中管理配置,Apusic 应用服务器提供了 Apache 、Nginx、ALB作为前置机;如果使用Apache,通过 mod_jk 方式代理 Apusic 应用服务器,需要创建或开启 JK 监听程序。
Apusic应用服务支持节点安装负载均衡器和引用外部负载均衡器。注意,不管是哪种引用模式都需要先确保节点代理已安装且已启动。
# 节点安装负载均衡器
Apusic应用服务器支持从已创建的节点中安装负载均衡器。节点连接方式需要为SSH;默认的节点localhost连接方式为config,不能安装负载均衡器。
点击"新建",进入新建负载均衡器页面,属性如下:
| 配置项 | 说明 | 默认值 |
| 负载均衡器名称 | 定义一个负载均衡器管理名称,需唯一,只能包含字母、数字、横线或下划线,需唯一 | |
| 负载均衡器类型 | 负载均衡器的类型。Apache、Nginx 或 ALB | apache |
| 是否失效转移 | “负载均衡器类型”为“apache"时显示该项。开启失效转移功能,当一个节点实例不能使用时将会自动将会话转移到另一个节点实例中 | 不开启 |
| 是否会话粘滞 | “负载均衡器类型”为“apache"时显示该项。开启会话粘滞功能,开启后,将会一直访问当前会话直至到会话失效 | 不开启 |
| 是否缓存静态资源 | 开启缓存静态资源 | 开启 |
| 是否支持 SSL | 开启 SSL,在新建页面确认是否开启,不支持在编辑页面编辑。默认不开启。开启后,支持单向认证和双向认证 | 不开启 |
| SSL 认证方式 | 开启 SSL显示该项。单向认证或双向认证 | 单向认证 |
| 证书文件 | 开启 SSL显示该项。上传证书文件,如 server.crt,上传后文件保存到负载均衡器安装目录 conf/ 下 | |
| 私钥文件 | 开启 SSL显示该项。上传私钥文件,如 server.key,上传后文件保存在负载均衡器安装目录 conf/ 下 | |
| 根证书 | 开启 SSL,“SSL认证方式”为“双向认证”时显示该项。上传根证书,如 ca.crt,上传后文件保存在负载均衡器安装目录 conf/ 下 | |
| 域名 | “负载均衡器类型”为“alb",开启SSL双向认证显示该项,需要根据证书的实际域名填写 | |
| 是否支持国密 | “负载均衡器类型”为“alb",开启SSL显示该项。勾选开启国密配置,需上传对应文件,格式要求.pem。开启ALB的国密功能需要上传两份证书文件和私钥文件 | 不开启 |
| 负载均衡SSL端口 | “负载均衡器类型”为“alb",开启支持国密显示该项。设置负载均衡SSL服务的端口;访问时访问该端口 | |
| 负载均衡算法 | 负载均衡器路由算法 | 按权重 |
| Apache 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按流量: 将根据服务器实例所在的服务器流量由大至小访问。 按繁忙程度: 将根据服务器实例所在的服务器 CPU 使用率由小至大访问 | |
| Nginx/ALB 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按访问 IP 的 HASH(会话粘滞): 将根据用户请求过来的 IP,然后映射成 hash 值,然后分配到一个特定的服务器里面。实现会话粘滞需要使用该算法。 按响应时间: 将根据服务器实例的响应时间由快至慢访问。 按访问 URL 的 HASH: 将根据 URL 的 HASH 访问。 按浏览器cookie(会话粘滞sticky):将添加sticky模块。节点安装nginx时才会显示该项 | |
| 是否引用外部负载均衡器 | 不勾选时表示在节点安装 | 启用 |
| 负载均衡监听 IP | 负载均衡器安装的 IP 地址 | |
| 负载均衡监听端口 | 自定义负载均衡器的端口,如 8085,需先确认所填端口在负载均衡器机器上是否空闲 | |
| 管理节点 | 选择负载均衡器的管理节点,即该负载均衡器需要安装在的节点。如选择 node74,该负载均衡器将会安装在 node74 上,安装位置为${NODE_HOME}/node74/[load_balancer_name] 注意:节点安装负载均衡器 apache 或 nginx 时需要有负载均衡器执行目录,默认为/opt/AAS/alb/ahs 或/opt/AAS/alb/nhs,该目录不能修改。如果该目录下已有文件,则无法创建对应的负载均衡器。需要确保/opt/AAS/alb/ahs 或/opt/AAS/alb/nhs 目录下无文件且需要有执行权限 | |
| 连接后端服务器超时时间(限制范围: 1-3600) | 设置连接后端服务器超时时间 | 5秒 |
| 请求后端处理超时时间(限制范围: 1-3600) | 设置请求后端处理超时时间 | 300秒 |
| 请求头读取超时时间(限制范围: 1-3600) | 设置请求头读取超时时间 | 30秒 |
| 请求体读取超时时间(限制范围: 1-3600) | 设置请求体读取超时时间 | 30秒 |
| 最大进程数(限制范围: 1-50) | 设置最大进程数 | 5 |
| 最大并发数(限制范围: 1-50000) | 设置最大并发数 | 5000 |


# 独立安装负载均衡器
在新建管理某个负载均衡器之前,请确保负载均衡器已安装,还需确保该负载均衡器所在机器上已安装了负载均衡器监视 agent 并已成功启动。节点代理安装请看独立安装节点代理。
使用系统管理员 admin 登录管控,切换到负载均衡器菜单页面,在页面点击【新建】按钮,新建管理负载均衡器。
负载均衡器新建选项包括如下:
| 配置项 | 说明 | 默认值 |
| 负载均衡器名称 | 定义一个负载均衡器管理名称,需唯一,只能包含字母、数字、横线或下划线,需唯一 | |
| 负载均衡器类型 | 负载均衡器的类型。Apache、Nginx 或 ALB | apache |
| 是否失效转移 | “负载均衡器类型”为“apache"时显示该项。开启失效转移功能,当一个节点实例不能使用时将会自动将会话转移到另一个节点实例中 | 不开启 |
| 是否会话粘滞 | “负载均衡器类型”为“apache"时显示该项。开启会话粘滞功能,开启后,将会一直访问当前会话直至到会话失效 | 不开启 |
| 是否缓存静态资源 | 开启缓存静态资源 | 开启 |
| 是否支持 SSL | 开启 SSL,在新建页面确认是否开启,不支持在编辑页面编辑。默认不开启。开启后,支持单向认证和双向认证 | 不开启 |
| SSL 认证方式 | 开启 SSL显示该项。单向认证或双向认证 | 单向认证 |
| 证书文件 | 开启 SSL显示该项。上传证书文件,如 server.crt,上传后文件保存到负载均衡器安装目录 conf/ 下 | |
| 私钥文件 | 开启 SSL显示该项。上传私钥文件,如 server.key,上传后文件保存在负载均衡器安装目录 conf/ 下 | |
| 根证书 | 开启 SSL,“SSL认证方式”为“双向认证”时显示该项。上传根证书,如 ca.crt,上传后文件保存在负载均衡器安装目录 conf/ 下 | |
| 域名 | “负载均衡器类型”为“alb",开启SSL双向认证显示该项,需要根据证书的实际域名填写 | |
| 是否支持国密 | “负载均衡器类型”为“alb",开启SSL显示该项。勾选开启国密配置,需上传对应文件,格式要求.pem。开启ALB的国密功能需要上传两份证书文件和私钥文件 | 不开启 |
| 负载均衡SSL端口 | “负载均衡器类型”为“alb",开启支持国密显示该项。设置负载均衡SSL服务的端口;访问时访问该端口 | |
| 负载均衡算法 | 负载均衡器路由算法 | 按权重 |
| Apache 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按流量: 将根据服务器实例所在的服务器流量由大至小访问。 按繁忙程度: 将根据服务器实例所在的服务器 CPU 使用率由小至大访问 | |
| Nginx/ALB 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按访问 IP 的 HASH(会话粘滞): 将根据用户请求过来的 IP,然后映射成 hash 值,然后分配到一个特定的服务器里面。实现会话粘滞需要使用该算法。 按响应时间: 将根据服务器实例的响应时间由快至慢访问。 按访问 URL 的 HASH: 将根据 URL 的 HASH 访问。 按浏览器cookie(会话粘滞sticky):将添加sticky模块。节点安装nginx时才会显示该项 | |
| 是否引用外部负载均衡器 | 不勾选时表示在节点安装 | 启用 |
| 负载均衡监听 IP | 负载均衡器安装的 IP 地址 | |
| 负载均衡监听端口 | 自定义负载均衡器的端口,如 8085,需先确认所填端口在负载均衡器机器上是否空闲 | |
| 节点代理IP | 监视负载均衡器的节点代理的 IP | |
| 节点代理端口 | 监视负载均衡器的节点代理的 端口 | |
| 负载均衡器命令文件路径 | 负载均衡器运行命令路径。示例: nginx - /usr/sbin/nginx; apache - /usr/sbin/apachectl; alb - ${安装位置}/bin/alb | |
| 负载均衡器配置文件路径 | 负载均衡器配置文件路径。示例: nginx - /usr/conf/nginx.conf; apache - /usr/conf/httpd.conf; alb - ${安装位置}/conf/conf.yaml | |
| 连接后端服务器超时时间(限制范围: 1-3600) | 设置连接后端服务器超时时间 | 5秒 |
| 请求后端处理超时时间(限制范围: 1-3600) | 设置请求后端处理超时时间 | 300秒 |
| 请求头读取超时时间(限制范围: 1-3600) | 设置请求头读取超时时间 | 30秒 |
| 请求体读取超时时间(限制范围: 1-3600) | 设置请求体读取超时时间 | 30秒 |
| 最大进程数(限制范围: 1-50) | 设置最大进程数 | 5 |
| 最大并发数(限制范围: 1-50000) | 设置最大并发数 | 5000 |


# 管理负载均衡器
Apusic 应用服务器的管控可以对负载均衡器进行管理操作,包括对负载均衡器进行新增、删除、启动、停止、重新启动,以及管理负载均衡器的目录集群。
删除负载均衡器需要先停止运行。

点击负载均衡器名称,进入该负载均衡器的编辑页面,显示有"一般信息"和"目标"。
| 配置项 | 说明 | 默认值 |
| 启动 | 当负载均衡器处于已停止状态时可点击"启动",启动负载均衡器,需要确保节点代理处于运行状态才能启动负载均衡器 | |
| 停止 | 当负载均衡器处于正在运行状态时可点击"停止",停止运行负载均衡器 | |
| 重新启动 | 当负载均衡器处于正在运行状态时可点击"重新启动",重新启动负载均衡器;或修改负载均衡监听端口时需要重新启动负载均衡器才能生效 | |
| 名称 | 负载均衡器的名称,不能编辑 | |
| 状态 | 负载均衡器的状态 | |
| 负载均衡器类型 | 负载均衡器的类型。Apache、Nginx 或 ALB。不能编辑 | |
| 版本 | 显示当前负载均衡器的版本 | |
| 是否失效转移 | “负载均衡器类型”为“apache"时显示该项。开启失效转移功能,当一个节点实例不能使用时将会自动将会话转移到另一个节点实例中 | 开启 |
| 是否会话粘滞 | “负载均衡器类型”为“apache"时显示该项。开启会话粘滞功能,开启后,将会一直访问当前会话直至到会话失效 | 开启 |
| 是否缓存静态资源 | 开启缓存静态资源 | 开启 |
| 是否支持 SSL | 开启 SSL,在新建页面确认是否开启,不支持在编辑页面编辑 | |
| SSL 认证方式 | 开启 SSL显示该项。单向认证或双向认证 | |
| 证书文件 | 开启 SSL显示该项。显示上传的证书文件 | |
| 私钥文件 | 开启 SSL显示该项。显示上传的私钥文件 | |
| 根证书 | 开启 SSL,“SSL认证方式”为“双向认证”时显示该项。显示上传的根证书 | |
| 域名 | “负载均衡器类型”为“alb",开启SSL双向认证显示该项,显示已设置的域名 | |
| 是否支持国密 | “负载均衡器类型”为“alb",开启SSL显示该项。显示开启状态,不支持编辑 | |
| 负载均衡SSL端口 | “负载均衡器类型”为“alb",开启支持国密显示该项。显示设置负载均衡SSL服务的端口;访问时访问该端口 | |
| 负载均衡算法 | 负载均衡器路由算法 | 按权重 |
| Apache 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按流量: 将根据服务器实例所在的服务器流量由大至小访问。 按繁忙程度: 将根据服务器实例所在的服务器 CPU 使用率由小至大访问 | |
| Nginx/ALB 算法包含 | 按权重: 将根据服务器实例的权重由高至低访问。 按访问 IP 的 HASH(会话粘滞): 将根据用户请求过来的 IP,然后映射成 hash 值,然后分配到一个特定的服务器里面。实现会话粘滞需要使用该算法。 按响应时间: 将根据服务器实例的响应时间由快至慢访问。 按访问 URL 的 HASH: 将根据 URL 的 HASH 访问。 按浏览器cookie(会话粘滞sticky):将添加sticky模块。节点安装nginx时才会显示该项 | |
| 是否引用外部负载均衡器 | 显示状态,不支持编辑 | |
| 负载均衡监听 IP | 负载均衡器安装的 IP 地址 | |
| 负载均衡监听端口 | 自定义负载均衡器的端口,如 8085,需先确认所填端口在负载均衡器机器上是否空闲 | |
| 节点代理IP | 监视负载均衡器的节点代理的 IP | |
| 节点代理端口 | 监视负载均衡器的节点代理的 端口 | |
| 负载均衡器命令文件路径 | 显示负载均衡器运行命令路径,不支持编辑 | |
| 负载均衡器配置文件路径 | 显示负载均衡器配置文件路径,不支持编辑 | |
| 管理节点 | 选择负载均衡器的管理节点,即该负载均衡器需要安装在的节点 | |
| 连接后端服务器超时时间(限制范围: 1-3600) | 设置连接后端服务器超时时间 | 5秒 |
| 请求后端处理超时时间(限制范围: 1-3600) | 设置请求后端处理超时时间 | 300秒 |
| 请求头读取超时时间(限制范围: 1-3600) | 设置请求头读取超时时间 | 30秒 |
| 请求体读取超时时间(限制范围: 1-3600) | 设置请求体读取超时时间 | 30秒 |
| 最大进程数(限制范围: 1-50) | 设置最大进程数 | 5 |
| 最大并发数(限制范围: 1-50000) | 设置最大并发数 | 5000 |


进入"目标",显示该负载均衡器所在的目标,即被引用的服务器集群。需要在服务器集群编辑页面设置。

# 负载均衡器集群
金蝶Apusic应用服务器支持负载均衡器集群功能,在 AAS 服务器集群中引用 LVS+keepalived+LB 模式的负载均衡器集群,提高服务器集群的抗负载能力,实现对 负载均衡器集群的管理。
# 概念
负载均衡集群(简称 LB 集群):
一般情况下,为了提升业务系统的处理能力和高可用性,业务系统会部署多个应用服务器实例,而为了统一用户的入口,在应用服务器实例前部署一个负载均衡器。在这种部署架构下,负载均衡器的单点失效,会导致业务系统访问失败。
负载均衡器集群就是为了实现负载均衡器的高可用,存在多个负载均衡器,当一个负载均衡器失效,自动切换到另外一个负载均衡器进行服务,解决负载均衡器的单点失效问题。
LVS(Linux Virtual Server,Linux 虚拟服务器):
是主流 linux 内核自带的 OSI 四层路由交换集群系统,根据目标地址(IP/MAC)和目标端口实现请求转发。
LVS 由 ipvs 和 ipvsadm 组成,ipvs(ip virtual server)实现了各种负载均衡调度算法,ipvsadm 则负责为 ipvs 编写规则,包括定义负载均衡器节点及负载均衡算法、定义后端真实服务器节点。用户通过 ipvsadm 创建规则,实现 lvs 集群功能。
LVS 有多种工作模式,来应对不同的网络环境和负载均衡需求,我们主要使用主流的直接路由模式即 DR 模式。直接路由模式通过负载均衡器节点上的 VIP(Virtual IP)接收请求,将请求报文的目标 MAC 地址修改为负载均衡算法选择的后端真实服务器的 MAC 地址完成请求的转发,再通过修改后端真实服务器响应报文的源 IP 地址为 VIP,实现负载均衡过程对用户的透明。
LVS 调度算法:
调度算法进行调度的策略与算法是 LVS 的核心技术,AAS 支持配置以下几种:
轮询调度(Round Robin 简称'RR')算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单。轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器。
加权轮询(Weight Round Robin 简称'WRR')算法主要是对轮询算法的一种优化与补充,LVS 会考虑每台服务器的性能,并给每台服务器添加一个权值,如果服务器 A 的权值为 1,服务器 B 的权值为 2,则调度器调度到服务器 B 的请求会是服务器 A 的两倍。权值越高的服务器,处理的请求越多。
源地址散列调度(Source Hashing 简称'SH')算法先根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。它采用的散列函数与目标地址散列调度算法的相同,它的算法流程与目标地址散列调度算法的基本相似。
最少连接调度(Least Connections 简称'LC')算法是把新的连接请求分配到当前连接数最少的服务器。最少连接调度是一种动态的调度算法,它通过服务器当前活跃的连接数来估计服务器的情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加 1;当连接中断或者超时,其连接数减 1。(集群系统的真实服务器具有相近的系统性能,采用最少连接调度算法可以比较好地均衡负载。)。
加权最少连接(Weight Least Connections 简称'WLC')算法是最少连接调度的超集,各个服务器相应的权值表示其处理性能。服务器的缺省权值为 1,系统管理员可以动态地设置服务器的权值。加权最少连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
keepalived 是专为 LVS 和 HA 设计的一款健康检查工具。
在 LVS-DR 集群模式中,LVS 存在单点故障且没有健康检查功能,keepalived 则补全了这一部分的缺陷。keepalived 同时监控两个 LVS 负载均衡器节点,当其中一个 LVS 节点出现故障时,自动将 VIP 漂移到另一台 LVS 上,实现高可用。
当任何一台后端真实服务器出现故障时,通过健康检查功能,将该节点从负载均衡列表中剔除。
# AAS 集群同负载均衡器集群之间的关系
双机高可用方法目前分为两种。
双机主从模式: 即前端使用两台服务器,一台主服务器和一台热备服务器,正常情况下,主服务器绑定一个虚拟 IP,提供负载均衡服务,热备服务器处于空闲状态;当主服务器发生故障时,热备服务器接管主服务器的虚拟 IP,提供负载均衡服务。
架构图:

双机主主模式: 即前端使用两台负载均衡服务器,互为主备,且都处于活动状态,同时各自绑定一个虚拟 IP,提供负载均衡服务;当其中一台发生故障时,另一台接管发生故障服务器的公网 IP(这时由非故障机器一台负担所有的请求)。
架构图:

# 环境准备
负载均衡器集群创建前需要在 AAS 中配置负载均衡器,参考负载均衡器配置。
负载均衡器集群使用前需要准备安装有 keepalived 和 ipvsadm 的负载调度服务器。
负载调度服务器配置虚拟 IP 参考虚拟 IP 配置。
负载调度服务器安装 keepalived 参考keepalived 安装。
负载调度服务器安装 ipvsadm 参考ipvsadm 安装。
# 负载均衡集群管理
AAS 支持配置和管理负载均衡器集群,可通过管控平台进行配置。
负载均衡器集群列表页面显示属性有:
名称: 负载均衡器集群的名称,点击进入"一般信息"页面。
类型: 负载均衡器集群的类型。
使用状态: 该负载均衡器集群被服务器集群引用的情况。
运行状态: 该负载均衡器集群的 keepalived 实例的状态,点击 keepalived 实例名称可进入该 keepalived 实例的详细信息页面。
负载均衡器使用状态: 该负载均衡器集群引用的负载均衡器实例情况,点击数字可进入"负载均衡器实例"页面。
新建: 点击进入"新建负载均衡器集群"页面创建负载均衡器集群。
删除: 选择负载均衡器集群点击"删除"可删除负载均衡器集群,需要删除 keepalived 实例才能删除集群。
启动集群: 选择负载均衡器集群点击"启动集群"将会启动该负载均衡器集群。会启动 keepalived 实例以及负载均衡器实例。Keepalived 实例为空时无法启动。
停止集群: 选择负载均衡器集群点击"停止集群"将会停止该负载均衡器集群。会停止 keepalived 实例但不会停止负载均衡器实例。

# 新建负载均衡器集群
进入【集群管理】 -> 【负载均衡器集群】,点击"新建",创建负载均衡器集群。新建负载均衡器集群页面包含以下属性:
| 配置项 | 说明 | 默认值 |
| 集群名称 | name;设置集群的名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 集群模式 | type;包括主备模式和双主模式 | |
| 虚拟IP | virtual-ip;未分配给真实主机的 IP,需要配置在负载调度服务器,即负载均衡器实例主机中。在"主备模式"下只需要配置一个"虚拟 IP";在"双主模式"下需要配置两个"虚拟 IP"。通过"虚拟 IP"访问集群 | |
| 域名 | domain-name;定义"虚拟 IP"的域名,此属性只显示在"双主模式"下;需要在客户端主机中配置域名,通过访问"域名"访问集群 | |
| 负载均衡转发规则 | lb-kind;DR(直接路由) | |
| 负载均衡策略 | lb-algo;选择负载均衡调度策略,包括轮询(rr)/加权轮询(wrr)/源地址 hash(sh)/最少连接(lc)/加权最少连接(wlc) | |
| 主备同步检查时间间隔(限制范围: 1-60) | advert-int,keepalived 实例心跳包发送周期 | 3秒 |
| 健康检查时间间隔(限制范围: 1-60) | style="width:55%"delay-loop,检查后端真实负载均衡器状态的时间间隔 | 6秒 |
| 会话保持超时时间(限制范围: 0-3600) | persistence-timeout,保持客户端请求在规定时间段内发送到同一个真实负载均衡器 | 0 |
| 健康检测方式 | TCP_CHECK,健康检测方式 | |
| 连接超时时间(限制范围: 1-60) | connect-timeout,负载均衡器实例连接的超时时间 | 6秒 |
| 检测失败后重连次数(限制范围: 1-10) | nb-get-retry,负载均衡器心跳检测失败后的重试次数, 如达到重试次数仍然失败, 将从服务器池中移除 | 3次 |
| 失败重连间隔时间(限制范围: 1-60) | delay_before_retry,重连负载均衡器的间隔时间 | 3秒 |
| 负载均衡器实例 | 所要关联的负载均衡器实例目标,请选择同一类型且相同端口号并配置有虚拟 IP 的实例,单击 shift 或 Ctrl 可选多个实例。在【负载均衡器】中创建负载均衡器后会同步显示在该处。必填项,至少需要有一个负载均衡器实例才能创建负载均衡器集群 | |
| 要创建的 keepalived 实例 | 可以点击"新建..."创建 keepalived 实例,也可以为空,后续再新建 | |
| 实例名称 | 设置 keepalived 实例的名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 选择主备 | is-master(true/false);设置该 keepalived 实例类型。集群模式为"主备模式"时,需创建一个主实例(master)和一个备实例(backup);集群模式为"双主模式"时,需要创建两个主实例(master) | |
| 节点代理 IP | agent-ip;节点代理所在的 IP,必填项 | |
| 节点代理端口 | agent-port;节点代理设置的端口,端口需有访问权限,必填项 | |
| 执行文件路径 | execute-file;keepalived 的执行文件,如${keepalived_root}/keepalived/sbin/keepalived。为空时,默认为/usr/sbin/keepalived | |
| 配置文件路径 | config-file;keepalived 的配置文件,如${keepalived_root}/keepalived/etc/keepalived/keepalived.conf。为空时,默认为/etc/keepalived/keepalived.conf |


# 编辑负载均衡器集群
点击负载均衡器集群名称,进入编辑负载均衡器集群页面。负载均衡器集群一般信息页面包含以下属性:
启动集群: 选择负载均衡器集群点击"启动集群"将会启动该负载均衡器集群。会启动 keepalived 实例以及负载均衡器实例。Keepalived 实例为空时无法启动。
停止集群: 选择负载均衡器集群点击"停止集群"将会停止该负载均衡器集群。会停止 keepalived 实例但不会停止负载均衡器实例。
| 配置项 | 说明 | 默认值 |
| 集群名称 | 集群的名称,只读模式 | |
| 集群模式 | 该负载均衡器集群的模式,只读模式 | |
| 虚拟IP | 配置的虚拟 IP,只读模式 | |
| 域名 | 配置的"虚拟 IP"的域名,此属性只显示在"双主模式"下;需要在客户端主机中配置域名,通过访问"域名"访问集群,允许修改 | |
| 负载均衡策略 | lb-algo;选择负载均衡调度策略,包括轮询(rr)/加权轮询(wrr)/源地址 hash(sh)/最少连接(lc)/加权最少连接(wlc) | rr |
| 主备同步检查时间间隔(限制范围: 1-60) | advert-int,keepalived 实例心跳包发送周期 | 3秒 |
| 健康检查时间间隔(限制范围: 1-60) | delay-loop,检查后端真实负载均衡器状态的时间间隔 | 6秒 |
| 会话保持超时时间(限制范围: 0-3600) | persistence-timeout,保持客户端请求在规定时间段内发送到同一个真实负载均衡器 | 0 |
| 健康检测方式 | TCP_CHECK,健康检测方式 | |
| 连接超时时间(限制范围: 1-60) | connect-timeout,负载均衡器实例连接的超时时间 | 6秒 |
| 检测失败后重连次数(限制范围: 1-10) | nb-get-retry,负载均衡器心跳检测失败后的重试次数, 如达到重试次数仍然失败, 将从服务器池中移除 | 3次 |
| 失败重连间隔时间(限制范围: 1-60) | delay_before_retry,重连负载均衡器的间隔时间 | 3秒 |
| 状态 | 显示keepalived实例的状态 |
注意: 修改属性后需要重启负载均衡器集群属性才会生效。

# 编辑 keepalived 实例信息
在 keepalived 实例信息页面可以对集群的 keepalived 实例进行管理。Keepalived 实例列表页面显示有如下属性:
实例名称: 当前集群下的 keepalived 实例名称。点击可查看该实例信息。
实例类型: 显示该 keepalived 实例的类型。
版本: 显示该 keepalived 实例的 keepalived 版本。
状态: 显示该 keepalived 实例的状态。默认每 6 秒获取一次状态,如果显示的状态为"未知",刷新一下就能获取到。
新建: 进入新建 keepalived 实例页面,可以新建 keepalived 实例信息。
删除: 选择 keepalived 实例,点击删除可删除实例信息。删除前需要停止实例。删除后,该实例信息从集群信息中删除,
domain.xml同步删除配置信息,keepalived 的文件不会删除,keepalived 的配置文件keepalived.conf每次被调用的时候会更新。启动: 选择 keepalived 实例,点击启动可启动实例。
停止: 选择 keepalived 实例,点击停止可停止实例。

新建 keepalived 实例
可以在【keepalived 实例】页面中新建 keepalived 实例,点击"新建",进入新建 keepalived 实例页面,显示以下属性
| 配置项 | 说明 | 默认值 |
| 集群名称 | 集群的名称,只读模式 | |
| 集群模式 | 该负载均衡器集群的模式,只读模式 | |
| 实例名称 | 设置 keepalived 实例的名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 选择主备 | is-master(true/false);设置该 keepalived 实例类型。集群模式为"主备模式"时,需创建一个主实例(master)和一个备实例(backup);集群模式为"双主模式"时,需要创建两个主实例(master) | |
| 节点代理 IP | agent-ip;节点代理所在的 IP,必填项 | |
| 节点代理端口 | agent-port;节点代理设置的端口,端口需有访问权限,必填项 | |
| 执行文件路径 | execute-file;keepalived 的执行文件,如${keepalived_root}/keepalived/sbin/keepalived。为空时,默认为/usr/sbin/keepalived | |
| 配置文件路径 | config-file;keepalived 的配置文件,如${keepalived_root}/keepalived/etc/keepalived/keepalived.conf。为空时,默认为/etc/keepalived/keepalived.conf |
注意:
- keepalived 需要正确安装,配置文件权限需要为 644。
- 节点代理需要处于运行状态。
- 建议只需创建两个 keepalived 实例,集群模式为"主备模式",需要创建一个主实例(master);集群模式为"双主模式"时,需要创建两个主实例(master),不能创建备实例。如果创建了超过两个 keepalived 实例,建议只启动两个。
- Keepalived 实例可以与负载均衡器实例在同一个服务器上。

# 编辑负载均衡器实例信息
在负载均衡器实例信息页面可以对集群的负载均衡器实例进行管理。加入负载均衡器集群的负载均衡器实例需要在引用前配置虚拟 IP 负载均衡器实例列表页面显示有如下属性:
集群名称: 负载均衡器实例所属集群的名称,只读模式。
名称: 负载均衡器实例的名称,点击进入该负载均衡器的详细信息页面。
负载均衡器类型: 显示当前的负载均衡器类型。
版本: 显示当前负载均衡器的版本。
权重: 该负载均衡器实例在负载均衡器集群中的占比,需要输入正整数。修改点击"保存"后需要重启负载均衡器集群才会生效。
运行状态: 该负载均衡器实例的运行状态。
操作: 启动、停止、重新启动。
更新: 点击进入选择"负载均衡器实例"页面,显示【负载均衡器】模块中的类型为 nginx 、 Apache、ALB 的负载均衡器。选择负载均衡器后,点击"确定"即可为负载均衡器集群选择负载均衡器实例。需注意:
负载均衡器所在的服务器需要配置虚拟 IP,该虚拟 IP 与负载均衡器集群一般信息填写的"虚拟 IP"需要一致。有"双主模式"时,需要配置两个虚拟 IP。
同一负载均衡器集群需要选择同一类型同一端口配置相同虚拟 IP 的负载均衡器。
选择确定后,需要重启负载均衡器集群才能生效。
负载均衡器被负载均衡器集群选择后不影响单独被服务器集群引用。
同一负载均衡器只能被一个负载均衡器集群引用。


# 配置文件
对应的 domain.xml 显示如下:
<lbs>
<load-balancers>
<load-balancer max-processes="5" is-external="true"
ip="172.20.140.43" agent-port="1099" max-connections="5000"
enable-gzip="on" type="nginx" ssl="false"
client-header-timeout="30" static-cache="true"
connect-timeout="5" session-sticky="false"
config-file-path="/program/nginx/conf/nginx.conf" port="8187"
failover="false" client-body-timeout="30" name="nginx43"
execute-file-path="/program/nginx/sbin/nginx"
load-balancer-cluster-name="mynginxcluster" socket-timeout="300"
agent-ip="172.20.140.43" algorithm="weight">
</load-balancer>
<load-balancer max-processes="5" is-external="false"
ip="172.20.140.40" max-connections="5000" enable-gzip="on"
type="nginx" ssl="false" client-header-timeout="30"
static-cache="true" connect-timeout="5" session-sticky="false"
port="8187" failover="false" client-body-timeout="30"
node-ref="node40" name="nginx40"
load-balancer-cluster-name="mynginxcluster" socket-timeout="300"
algorithm="weight">
</load-balancer>
</load-balancers>
<load-balancer-clusters>
<load-balancer-cluster connect-timeout="6" nb-get-retry="3"
delay-before-retry="3" advert-int="3" name="mynginxcluster"
lb-algo="rr" persistence-timeout="0" type="master_backup"
delay-loop="6" virtual-ip="172.20.140.233">
<keepalived-instance-ref ref="keepalived42"></keepalived-instance-ref>
<keepalived-instance-ref ref="keepalived11"></keepalived-instance-ref>
<load-balancer-ref ref="nginx43"></load-balancer-ref>
<load-balancer-ref ref="nginx40"></load-balancer-ref>
</load-balancer-cluster>
</load-balancer-clusters>
<keepalived-instances>
<keepalived-instance load-balance-cluster-name="mynginxcluster"
config-file="/usr/local/etc/keepalived/keepalived.conf"
name="keepalived42" agent-port="1399" is-master="true"
execute-file="/opt/testz/keealived/keepalived/bin/keepalived"
agent-ip="172.20.140.42">
</keepalived-instance>
<keepalived-instance load-balance-cluster-name="mynginxcluster"
config-file="/usr/local/keepalived/etc/keepalived/keepalived.conf"
name="keepalived11" agent-port="1399" is-master="false"
execute-file="/usr/local/keepalived/sbin/keepalived"
agent-ip="172.20.140.11">
</keepalived-instance>
</keepalived-instances>
</lbs>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 负载均衡集群检验
# 集群模式为"主备模式"
根据安装负载均衡器,新建负载均衡器,如安装负载均衡器 nginx40、nginx43,端口为 8187,配置虚拟 IP 为 172.20.140.233。
根据负载均衡器集群管理创建负载均衡器集群,如 mynginxcluster,集群模式为"主备模式",包含 keepalived 实例主实例 keepalived11 和备实例 keealived42,负载均衡器实例为 nginx40/nginx43,虚拟 IP 为 172.20.140.233。启动负载均衡器集群。
查看虚拟 IP 情况: IP addr。可以看到主实例 keepalived11 服务器上显示有虚拟 IP 172.20.140.233。而备实例 keepalived42 服务器没有该虚拟 IP。
根据新建服务器集群,如创建服务器集群 mycluster,包含实例 ins40,ins43。
进入服务器集群 mycluster 的"一般信息"页面,选择"负载均衡器"为 mynginxcluster(集群),点击"保存"。部署应用程序如 test1.war。启动服务器集群。

访问 http://172.20.140.233:8187/test1。能够正常访问。
停止 keepalived11,再访问 http://172.20.140.233:8187/test1,依然可以访问。再次查看 IP 情况,此时虚拟 IP 漂移至 keepalived42 中,keepalived11 没有显示该虚拟 IP。
启动 keepalived11,再访问 http://172.20.140.233:8187/test1,依然可以访问。再次查看 IP 情况,此时虚拟 IP 漂移至 keepalived11 中。
停止 nginx40,访问 http://172.20.140.233:8187/test1,依然可以访问,此时负载信息在 nginx43 上。
# 集群模式为"双主模式"
根据安装负载均衡器,新建负载均衡器,如安装负载均衡器 nginx40、nginx43,端口为 8187,配置虚拟 IP 为 172.20.140.245/172.20.140.233。
根据负载均衡器集群管理创建负载均衡器集群,如 mynginxcluster,集群模式为"双主模式",包含 keepalived 实例主实例 keepalived11 和主实例 keealived42,负载均衡器实例为 nginx40/nginx43,虚拟 IP 为 172.20.140.245/172.20.140.233,域名为 myaas。启动负载均衡器集群。
查看虚拟 IP 情况: IP addr 。两个虚拟 IP 随机分别移动到 keepalived 实例服务器中。
根据新建服务器集群,如创建服务器集群 mycluster,包含实例 ins40,ins43。
进入服务器集群 mycluster 的"一般信息"页面,选择"负载均衡器"为 mynginxcluster(集群),点击"保存"。部署应用程序如 test1.war。启动服务器集群。

客户端主机(如浏览器主机)配置 host 文件,分别为 172.20.140.233 myaas,172.20.140.245 myaas。
访问 http://myaas:8187/test1。能够正常访问。
任意停止一个 keepalived 实例,如 keepalived11,再访问 http://myaas:8187/test1。依然能够正常访问。再次查看 IP 情况,此时虚拟 IP 都漂移至 keepalived42 中,keepalived11 没有显示该虚拟 IP。
停止 nginx40,访问 http://myaas:8187/test1,依然可以访问,此时负载信息在 nginx43 上。
# 服务器集群取消引用负载均衡器集群
进入服务器集群 mycluster 的"一般信息"页面,将"负载均衡器"为其他项,点击"保存"。不需要重启服务器集群也可以生效。
再访问时,将会无法访问。如果处于会话中,需要会话超时才断开连接。
# 命令行创建负载均衡器集群
支持通过命令行创建负载均衡器集群。进入 asadmin 工具,执行以下命令创建负载均衡器集群。
register-HALoadBalancer-cluster --delayloop 3 --advertint 4 --delaybeforeretry 5 --nbgetretry 2 --lbalgo rr --persistencetimeout 60 --type master_backup --targets
nginx40(nginx/8187),nginx43(nginx/8187) --lbkind DR --connecttimeout 6 --virtualip 172.20.140.233 mynginxcluster
2
执行以下命令创建负载均衡器集群实例,即 keepalived 实例。创建主实例--master=true,创建备实例--master=false。--configfile、--executefile 可为空。
create-HALoadBalancer-instance --cluster mynginxcluster --master=true --action newInstance --agentip 172.20.140.42 --agentport 1399 --configfile=/usr/local/etc/keepalived/keepalived.conf --executefile=/opt/testz/keealived/keepalived/bin/keepalived keepalived42
# 附件
# 虚拟 IP 配置
创建 lvsdr.sh,添加以下内容,VIP 为需要设置的虚拟 IP。查看输出的网卡,例如 lo:0;如果需要同时配置多个虚拟 IP,还要修改 lo:0 为其他编号,如 lo:1。
#!/bin/bash
VIP=172.20.140.245
case "$1" in
start)
ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "lo:0 port starting"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "lo:0 port closing"
;;
*)
echo "Usage: $0 {start | stop}"
exit 1
esac
exit 0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
进入文件放置目录,执行 lvsdr.sh start,启动。
./lvsdr.sh start
进入文件放置目录,执行 lvsdr.sh stop,停止。
./lvsdr.sh stop
# keepalived 安装
- 使用
yum install -y keepalived安装。
yum install -y keepalived
编译安装。
- 进入解压包目录,执行
./configure --prefix=/usr/local/keepalived。
- 进入解压包目录,执行
./configure --prefix=/usr/local/keepalived
2. 执行 make && make install。
make && make install
此时在/usr/local/keepalived/中生成文件:
/usr/local/keepalived/etc/keepalived/keepalived.conf。
/usr/local/keepalived/etc/sysconfig/keepalived。
/usr/local/keepalived/sbin/keepalived。
3. 配置启动 keepalived。
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived
cp /opt/testz/keepalived/keepalived-2.1.0/keepalived/etc/init.d/keepalived /etc/init.d/keepalived
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
chkconfig --add keepalived
2
3
4
5
6
# ipvsadm 安装
使用 yum install -y ipvsadm 安装。
yum install -y ipvsadm
# 会话缓存
该模块主要用于管理会话管理器,可以针对每个应用配置会话集中存储,支持存储到 memcached、redis 中。
该模块只能新建或者编辑缓存管理器信息,不能对会话管理器做启动或停止操作;因而需要在外部启动会话管理器才能与会话管理器连接。
创建的会话管理器名称将会显示在【应用管理】的web应用程序部署或编辑页面,可根据实际需要将应用与会话管理器关联。
列表页面显示功能属性有:
- **新建:**点击进入新建会话缓存管理器页面
- **删除:**选择需要删除的会话缓存管理器,点击确认删除将会删除该会话管理器。如果该会话管理器已被引用,需要解除引用才能删除。该处的删除是指把会话管理器的配置从AAS中删除,不会删除实际安装的会话管理器
- **刷新:**点击刷新会话管理器状态
- **名称:**显示已创建的会话管理器的名称,点击将进入该会话管理器的编辑页面
- **类型:**显示该会话管理器的类型
- **使用状态:**显示当前会管理器被引用的目标数,支持同一会话管理被多个应用同时引用

# 新建会话缓存管理器
在【会话缓存】列表页面,点击“新建”,进入新建会话缓存管理器页面。“管理器类型”有redis、memcached。选择不同的类型需要配置不同属性
选择 Redis 显示以下字段
| 配置项 | 说明 | 默认值 |
| 管理器名称 | 设置缓存管理器的名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 管理器类型 | 选择该缓存管理器的类型,redis/memcached | redis |
| 立即存储属性修改 | session.setAttribute 方法调用后是否立刻存储到集中存储 | 不启用 |
| 连接耗尽时阻塞 | 是否开启当连接耗尽时连接阻塞功能 | 启用 |
| 淘汰策略类名 | 设置淘汰策略类名 | |
| 公平 | 是否启用公平配置 | 不启用 |
| 启动 jms 管理 | 是否启动 jms 管理 | 启用 |
| jms基础名 | 设置jms基础名 | |
| jms前缀名 | 设置jms前缀名 | |
| 启用后进先出 | 是否启用后进先出策略 | 启用 |
| 最大空闲连接数 | 设置最大空闲连接数 | 8 |
| 最大连接数 | 设置最大连接数 | 8 |
| 最大等待毫秒数 | 设置最大等待毫秒数,-1表示不启用 | -1 |
| 淘汰连接的最小空闲时间 | 设置淘汰连接的最小空闲时间 | 1800000 |
| 最小空闲连接数 | 设置最小空闲连接数 | 0 |
| 检查时淘汰的最大数目 | 设置检查时淘汰的最大数目 | 3 |
| 软淘汰的最小空闲时间 | 设置软淘汰的最小空闲时间 | -1 |
| 调用borrow Object方法时进行检查 | 是否启用调用borrow Object方法时进行检查 | 不启用 |
| 调用Create Object方法时进行检查 | 是否启用调用Create Object方法时进行检查 | 不启用 |
| 调用return Object方法时进行检查 | 是否启用调用return Object方法时进行检查 | 不启用 |
| 空闲时进行检查 | 是否启用空闲时进行检查 | 不启用 |
| 连接类型 | 设置redis的连接类型,可选项有single/sentinel/shard/cluster | single |
| 主机 | “连接类型”为single时显示;设置redis服务器地址,必填字段 | |
| 端口 | “连接类型”为single时显示;设置redis服务器端口号,必填字段 | |
| 超时时间 | “连接类型”为single/sentinel时显示;设置连接超时时间,选填字段 | |
| 密码 | “连接类型”为single/sentinel时显示;设置redis服务器密码,选填字段 | |
| 服务器列表 | “连接类型”为sentinel时显示;redis服务器列表,多个服务器使用逗号分开,例如: 192.168.101.44:26379,192.168.101.45:26379,192.168.101.46:26379 | |
| 主服务名称 | “连接类型”为sentinel时显示;masterName名称,必填字段 | |
| 分片列表 | “连接类型”为shard时显示;分片列表,多个用逗号,分开。例如:instance01(host=xxx;port=xxx;password=xxx;connectionTimeout=xxx;soTimeout=xxx;weight=xxx) | |
| 集群列表 | “连接类型”为cluster时显示;redis 集群列表,多个用逗号,分开。例如:host:port,host:port |


选择 memcached,显示以下字段:
| 配置项 | 说明 | 默认值 |
| 管理器名称 | 设置缓存管理器的名称,名称只能包含字母、数字、横线或下划线,需唯一 | |
| 管理器类型 | 选择该缓存管理器的类型,redis/memcached | redis |
| 立即存储属性修改 | session.setAttribute 方法调用后是否立刻存储到集中存储 | 不启用 |
| 服务器地址列表 | memcached服务器地址列表,格式为“ IP:端口号”,多个地址使用逗号分开,必填字段 | |
| 备份服务器地址列表 | memcached备份服务器地址列表,格式“ IP:端口号”,多个地址使用逗号分开。这个列表里面的地址数不能超过serverAddress里面的地址数 | |
| 权重 | 设置memcached的权重 | |
| 公平 | 是否启用公平配置 | 不启用 |
| 连接池大小 | 设置连接池大小 | 1 |
| 使用二进制协议 | 是否使用二进制协议 | 不启用 |
| 持久存储 | 是否启用持久存储 | 启用 |
| 启用一致性哈希算法 | 是否启用一致性哈希算法 | 不启用 |
| 连接超时时间 | 设置连接超时时间 | 10秒 |
| 操作超时时间 | 设置操作超时时间 | 3秒 |
| 尝试恢复会话时间间隔 | 设置尝试恢复会话时间间隔 | 2秒 |
| 会话空闲时间 | 设置会话空闲时间 | 5秒 |
| 检测会话超时时间间隔 | 设置检测会话超时时间间隔 | 1秒 |
| 读线程总量 | 设置读线程总量 | 1 |
| 写线程总量 | 设置写线程总量 | 0 |
| 启动心跳功能 | 是否启用启动心跳功能 | 启用 |
| selector池大小 | 设置selector池大小 | 1 |

# 引用会话缓存管理器
已配置的会话管理器,可以在【应用管理】中的应用程序被引用。进入web应用程序的部署属性或者编辑页面,显示有“会话储存”选项,选择需要关联的会话管理器名称即可被应用程序应用。
同一会话管理器可以被多个应用程序引用。

# 编辑会话缓存管理器
进入【会话缓存】页面,点击会话管理器名称,进入该会话管理器的编辑页面。
修改属性之后,如果该会话管理器已经被引用,需要重新加载应用程序属性才会生效。

# 删除会话缓存管理器
选择会话管理器名称,点击“删除”;确认删除后,将会删除该会话储存管理器。如果该会话管理器已被引用,需要取消引用才能删除。
# 应用管理
使用系统管理员登录系统,对应用程序相关属性进行设置。
应用程序界面用于管理当前域实例以及所有独立实例和集群实例的应用程序,应用程序可以是企业应用程序, Web 应用程序或各种类型的模块。通过单击重新加载链接重新启动应用程序或模块,此操作仅适用于启用了应用程序或模块的目标。

"应用程序"页面显示 Apusic 应用服务器上部署的应用程序列表。您可以查看和管理已部署的应用程序,还可以部署更多应用程序。
对于每个应用程序,提供以下信息。
名称: 应用程序名称。
部署顺序: 应用程序的部署顺序。具有较低编号的应用程序首先在服务器启动时加载。在部署顺序为 110 的应用程序之前加载部署顺序为 102 的应用程序。如果在部署应用程序时未指定部署顺序,则会分配默认部署顺序 100。如果两个应用程序具有相同的部署顺序,则首先加载首先部署的应用程序。如果应用程序具有依赖关系并且必须按特定顺序加载,则指定部署顺序非常有用。
状态: 应用程序在目标实例中的是否启用状态。
引擎: 应用程序使用的容器类型。容器类型可以是以下任何一种:
- web
- webservices
- ejb
- connector
- appclient
- weld(Java EE 平台应用程序的上下文和依赖注入的容器)
- eba
- osgi
操作: 指向部署后可在组件上执行的操作的链接: 为所有组件重新部署和重新加载,为 Web 应用程序和应用程序客户端启动,以及为应用程序客户端下载客户端存根。
"应用程序"表还包含以下选项。
部署: 用于部署应用程序的按钮。
取消部署: 按钮取消部署一个或多个选定的应用程序,会取消该应用程序在所有目标实例上的部署。
启用: 如果仅 server 存在默认服务器实例,则只显示“启动”按钮;如果存在多个实例,则在”目标“的”更多操作“中显示”启动“按钮。
禁用: 如果仅 server 存在默认服务器实例,则只显示“禁用”按钮;如果存在多个实例,则在”目标“的”更多操作“中显示”禁用“按钮。
过滤器: 按引擎过滤应用程序的下拉列表。
# 部署应用程序
使用"部署应用程序或模块"页面部署应用程序,应用程序可以采用打包的文件格式, 也可以指定为目录。
分为4个步骤,第一步为【部署应用】。该步骤主要为上传应用程序文件。”下一步“表示进入【部署属性】页面,”返回“表示返回列表页面
| 配置项 | 说明 | 默认值 |
| 路径 | 上传应用文件,可以选择“要上传到服务器的打包文件”或“可以从 Apusic 应用服务器访问的本地打包文件或目录” | 要上传到服务器的打包文件 |
| 要上传到服务器的打包文件 | 从本地选择应用程序部署,格式包括war, ear, eba, rar, jar, appClient | |
| 可以从 Apusic 应用服务器访问的本地打包文件或目录 | 从服务器选择应用程序包或者目录部署。“浏览文件”为上传打包文件,“浏览文件夹”为上传目录文件。 使用文件夹方式部署不能部署到远程实例,如果需要部署,需要在远程节点目录中创建一个与应用程序所在的位置相同的目录,且需要有对应权限。如应用程序所在的位置为/opt/testz/,远程目录也要有/opt/testz/,testz/下的内容需要相同 | |
| 上传 | 选择完成应用打包文件或者目录之后,需要点击“上传”按钮,上传后可以检测出该应用的类型。如果是ear包,将会检测出该应用程序包含的模块,如ejb/web等 |

第二步为【部署属性】。该步骤主要为配置应用程序相关属性。“上一步”表示返回【部署应用】页面,”下一步“表示进入【部署目标】页面,”返回“表示返回列表页面
| 配置项 | 说明 | 默认值 |
| 类型 | 应用程序的类型。可用的选择是: Web 应用程序 企业应用 程序 EBA应用程序 应用程序客户端 连接器模块 EJB Jar 其他 | 根据上传的应用打包文件显示对应类型 |
| 上下文路径 | 应用程序相对于服务器基础 URL 的路径,通常情况下应用程序的类型为web应用时设置。例如输入/test,访问时为 http://IP:PORT/test。不输入时会自动生成,一般为[应用程序名称]+日期 | |
| 应用程序名称 | 当前部署的应用程序名称,需要唯一 | 应用文件名称 |
| 选择部署模块 | 当企业应用程序有web/ejb或其他模块时会显示该属性;可根据需要选择部署模块。默认全选 | web、ejb都启用 |
| 可用性 | 如果选中复选框,则会为 Web 会话和有状态会话 Bean(SFSB)检查点以及可能的钝化启用高可用性。一般为配置了服务器集群才显示,使用 session 复制时需要勾选 | 不启用 |
| 状态 | 为真时,允许用户访问应用程序 | 启用 |
| 隐式 CDI | Java EE 的上下文和依赖注入(Contexts and Dependency Injection for Java EE,CDI)为真时,CDI beans 的隐式发现。 全局取消“隐式CDI”,在 config-server 下添加 <cdi-service enable-implicit-cdi="false"> </cdi-service> | 不启用 |
| 类加载策略 | 勾选父类加载器优先,不勾选子类加载器加载。除了java,javax, sun, org.xml.sax, org.w3c.dom, org.apache.taglibs.standard, com.sun.faces, org.apache.commons.logging 开头的包强制遵循双亲类加载机制(需通过额外jvm参数打破此机制)。通常用于应用程序与AAS有类冲突的情况 | 不启用 |
| 密级 | 为该应用程序设置密级,限制有权限的角色可操作 | 秘密 |
| OSGI类型 | 设置组件是否为已打包为 OSGi 绑定,一般在“类型”为“其他”才会显示 | 不启用 |
| Java Web Start | 为该应用程序设置密级,限制有权限的角色可操作 | 启用 |
| 预编译 JSP | 为真时,在部署期间预编译 JSP 页,文件解压在${DOMAIN_HOME}/generated/下 | 不启用 |
| 运行验证器 | 为真时,检验部署描述符的语法和语义。必须安装验证器程序包 | 不启用 |
| 强制重新部署 | 为真时,即使该应用程序已部署或者已存在, 也强制重新部署 | 不启用 |
| 保存状态 | 为真时,重新部署时保留 Web 会话, SFSB 实例和永久创建的 EJB 计时器 | 不启用 |
| 库 | 以逗号分隔的库 JAR 文件列表。按照相对或绝对路径指定库 JAR 文件。指定相对于 instance-root/lib/applibs 的相对路径。这些库按指定顺序提供给应用程序使用 | |
| 共享类库 | 设置该应用引用共享类库。可在【共享类库】配置 | 不启用 |
| 共享类库优先级 | 设置共享类库加载顺序,可设置项为: 共享类库优先:共享类库 >应用classes文件夹 >应用lib包 Classes目录优先:应用classes文件夹 >共享类库 >应用lib包 应用优先:应用classes文件夹 >应用lib包 >共享类库 | 应用优先 |
| 应用热加载 | 勾选表示启用应用热加载功能 | 不启用 |
| 应用热加载延迟时间 | 开启“应用热加载后,检测到应用发生修改后的延迟加载时间 | 60秒 |
| 会话储存 | 配置会话管理,可在【会话缓存】配置。设置后,该应用程序使用会话管理器 | 不启用 |
| 开启AAS内置组件 | 部署该应用程序时,需要同时开启AAS内置的组件。包括JPA、JSF、CDI、Bean Validation、JSONP、RESTful、Web Service。多选。该功能需要根据应用实际设置 | JPA、CDI、Web Service |
| 说明 | 部署说明 |

第三步为【部署目标】。该步骤主要为配置应用程序的部署目标,默认为server。“上一步”表示返回【部署属性】页面,”下一步“表示进入【部署清单】页面,”返回“表示返回列表页面。

第四步为【部署清单】。该步骤主要为展示应用程序的部署清单。“上一步”表示返回【部署目标】页面,”确定“表示将会开始部署该应用程序,部署成功后会返回列表页面,”返回“表示返回列表页面。

# 访问应用程序
默认监听端口情况下,可在浏览器中访问http://IP:6888/[context]或https://IP:6887/[context]。
也可在应用程序列表中的操作栏中点击【访问】按钮,出现应用程序链接页面,该页面中显示通过各目标实例访问应用的访问链接,点击链接可以访问到该应用。
如果是 ear 文件,需要进入编辑页面模块和组件部分进入"访问",或在浏览器手动输入访问地址。



# 管理应用程序目标
默认情况下只有“server”一个目标,创建多个实例后显示多个目标。使用"应用程序目标"页面可以查看可在其上启用应用程序的目标集群和独立服务器实例。选择目标后如果不能实时访问应用程序,需要点击"重新加载"加载应用程序。

"应用程序目标"页面包含以下信息。
- 目标名称: 集群或独立服务器实例的名称。
- 已启用: 如果应用程序在目标启用显示 true,如果应用程序将被禁用显示为 false。
- 虚拟服务器: 要将应用程序与目标上的特定虚拟服务器相关联,请选择"管理该目标的虚拟服务器"。
应用程序目标表还包含以下选项。
- 管理目标: 按钮来管理应用程序目标。
- 更多操作
启用: 在所选目标上启用应用程序的操作。
禁用: 禁用所选目标上的应用程序的操作。
注意:
1、应用程序属于多版本部署时,每次只能添加一个目标,不能批量添加。
# 编辑应用程序
在应用程序列表中,点击应用程序名称,会进入应用程序的详细信息界面,默认显示一般信息界面,在一般信息界面上可以对应用程序进行编辑操作。
使用"编辑应用程序"页面修改现有应用程序,一般情况下编辑保存后需要重新加载应用程序属性才能生效。
"编辑应用程序"页面包含以下部分或全部选项,具体取决于应用程序类型。
名称: 只读字段,显示您正在编辑的应用程序的名称。
状态: 应用程序在目标实例中的是否启用状态。
上下文路径: 对于 Web 应用程序,指定应用程序的路径。在 Web 应用程序的 URL 中,上下文路径紧跟在端口号(http://主机:端口/上下文路径/...)之后。例如,上下文根必须以正斜杠开头/hello。
**可用性:**如果选中复选框,则会为 Web 会话和有状态会话 Bean(SFSB)检查点以及可能的钝化启用高可用性。有服务器集群时才会显示该属性。
虚拟服务器: 与此应用程序关联的虚拟服务器。
描述: 应用程序的简短描述。
路径: 已部署应用程序的位置。这是一个只读字段。
部署顺序: 应用程序的部署顺序。
库: 应用程序所需的库 JAR 文件。这是一个只读字段。
模块和组件: 显示应用程序模块及其引擎名称的表。

# 应用程序部署描述符
在应用程序列表中,点击应用程序名称,会进入应用程序的详细信息界面,切换到描述符界面,可以查看到应用程序描述符,点击描述符名称可以查看到部署描述符详细。
部署描述符是一个 XML 文件, 描述应该如何部署 Java EE 应用程序或模块。每个部署描述符都有一个对应的文件类型定义 (DTD)文件或模式 (XSD) 文件。Apusic 应用服务器支持 Java EE 标准描述符, Apusic 应用服务器描述符和 WebLogic 描述符。

# 管理虚拟服务器
当 Apusic 应用服务器只有 server 一个实例时,在应用程序"一般信息"页面可管理"虚拟服务器"。Apusic 应用服务器存在多个实例时,应用程序的编辑页面有"应用程序目标"页面,使用虚拟服务器目标页面可以更改与应用程序或模块关联的目标虚拟服务器,给应用服务器设置了虚拟服务器后可以通过虚拟服务器访问应用。


在【虚拟主机】模块可以对虚拟服务器进行新增和管理。

# JNDI 映射
对于需要连接资源的应用程序,AAS-V10 支持 JNDI 映射,允许多个应用程序具有相同资源 JNDI 名称时可以连接不同的资源库,实现资源库分立。可以在部署应用程序时【添加属性】,或者进入应用程序的"一般属性"页面,【添加属性】。添加属性需要遵循命名规则,JDBC 资源的命名为: jndi-ds-[应用程序定义的 JNDI 名称],值为[映射到的 JNDI 名称];JMS 资源的命名为: jndi-jms-[应用程序定义的 JNDI 名称],值为[映射到的 JNDI 名称]。
例如案例应用程序 test10,定义的 JDBC 资源的名称为 jdbc/test。
新建 JDBC 资源: jdbc/test2。

在应用程序 test10 一般信息页面,【添加属性】: jndi-ds-jdbc/test,值为: jdbc/test2。此时应用程序 test10 连接的 JDBC 资源为 jdbc/test2。

例如案例应用程序 test10,定义的 JMS 资源的名称为 jdbc/testjms1。
新建 JMS 连接工厂: jms/ConnectionFactory。

在应用程序 test10 一般信息页面,【添加属性】: jndi-jms-jdbc/testjms1,值为: jms/ConnectionFactory。此时应用程序 test10 连接的 JMS 资源库为 jms/ConnectionFactory。

# 重新部署应用程序
在应用程序列表中的某个应用程序行点击【重新部署】按钮,进入应用重新部署界面。


使用"重新部署应用程序或模块"页面重新部署以前部署的应用程序。
"重新部署应用程序或模块"页面包含以下选项,具体取决于应用程序类型。
| 配置项 | 说明 | 默认值 |
| 路径 | 要部署的应用程序的归档的位置。 要上传到服务器的打包文件: 从本地选择应用程序部署。 可从 Apusic 应用服务器访问本地打包文件或目录: 从服务器选择应用程序包或者目录部署。 选择完成应用程序文件后需要点击“上传”按钮 | |
| 类型 | 应用程序的类型。可用的选择是: Web 应用程序 企业应用 程序 EBA应用程序 应用程序客户端 连接器模块 EJB Jar 其他 | 根据上传的应用打包文件显示对应类型 |
| 上下文路径 | 应用程序相对于服务器基础 URL 的路径,通常情况下应用程序的类型为web应用时设置。例如输入/test,访问时为 http://IP:PORT/test。不输入时会自动生成,一般为[应用程序名称]+日期 | |
| 应用程序名称 | 当前部署的应用程序名称,只读 | 应用文件名称 |
| 选择部署模块 | 当企业应用程序有web/ejb或其他模块时会显示该属性;可根据需要选择部署模块。默认全选 | web、ejb都启用 |
| 可用性 | 如果选中复选框,则会为 Web 会话和有状态会话 Bean(SFSB)检查点以及可能的钝化启用高可用性。一般为配置了服务器集群才显示,使用 session 复制时需要勾选 | 不启用 |
| 状态 | 为真时,允许用户访问应用程序 | 启用 |
| 隐式 CDI | Java EE 的上下文和依赖注入(Contexts and Dependency Injection for Java EE,CDI)为真时,CDI beans 的隐式发现。 全局取消“隐式CDI”,在 config-server 下添加 | 不启用 |
| 类加载策略 | 勾选父类加载器优先,不勾选子类加载器加载。除了java,javax, sun, org.xml.sax, org.w3c.dom, org.apache.taglibs.standard, com.sun.faces, org.apache.commons.logging 开头的包强制遵循双亲类加载机制(需通过额外jvm参数打破此机制)。通常用于应用程序与AAS有类冲突的情况 | 不启用 |
| 密级 | 为该应用程序设置密级,限制有权限的角色可操作 | 秘密 |
| OSGI类型 | 设置组件是否为已打包为 OSGi 绑定,一般在“类型”为“其他”才会显示 | 不启用 |
| Java Web Start | 为该应用程序设置密级,限制有权限的角色可操作 | 启用 |
| 预编译 JSP | 为真时,在部署期间预编译 JSP 页,文件解压在${DOMAIN_HOME}/generated/下 | 不启用 |
| 运行验证器 | 为真时,检验部署描述符的语法和语义。必须安装验证器程序包 | 不启用 |
| 强制重新部署 | 为真时,即使该应用程序已部署或者已存在, 也强制重新部署 | 不启用 |
| 保存状态 | 为真时,重新部署时保留 Web 会话, SFSB 实例和永久创建的 EJB 计时器 | 不启用 |
| 库 | 以逗号分隔的库 JAR 文件列表。按照相对或绝对路径指定库 JAR 文件。指定相对于 instance-root/lib/applibs 的相对路径。这些库按指定顺序提供给应用程序使用 | |
| 共享类库 | 设置该应用引用共享类库。可在【共享类库】配置 | 不启用 |
| 共享类库优先级 | 设置共享类库加载顺序,可设置项为: 共享类库优先:共享类库 >应用classes文件夹 >应用lib包 Classes目录优先:应用classes文件夹 >共享类库 >应用lib包 应用优先:应用classes文件夹 >应用lib包 >共享类库 | 应用优先 |
| 应用热加载 | 勾选表示启用应用热加载功能 | 不启用 |
| 应用热加载延迟时间 | 开启“应用热加载后,检测到应用发生修改后的延迟加载时间 | 60秒 |
| 会话储存 | 配置会话管理,可在【会话缓存】配置。设置后,该应用程序使用会话管理器 | 不启用 |
| 开启AAS内置组件组件 | 部署该应用程序时,需要同时开启AAS内置的组件。包括JPA、JSF、CDI、Bean Validation、JSONP、RESTful、Web Service。多选。该功能需要根据应用实际设置 | JPA、CDI、Web Service |
| 说明 | 部署说明 |
# 重新加载应用程序
在应用列表某行应用数据的操作栏中点击【重新加载】按钮,会对应用进行重新启动与加载操作。

# 应用程序多版本部署
应用服务器支持同一应用部署多个版本功能,且允许同时启动多个版本。设置应用程序上下文路径相同时,表示在部署应用多版本。
进入管控平台中的【应用程序】,点击"部署"。
上传文件,如 test--123.war。
"类型": Web 应用程序。
"上下文路径": test。
"应用程序名称": test--123。
点击"确认"。
成功部署应用程序 test--123。

访问应用程序,http://IP:6888/test,此时显示的是 test--123 的内容。保持访问状态。
再部署 test--456.war 的新版本,test--456.war。点击"部署"。
上传文件,如 test--456.war。
"类型": Web 应用程序。
"上下文路径": test。
"应用程序名称": test--456。
点击"确认"。
成功部署应用程序 test--456。

此时 test--123 和 test--456 的状态都为启用。

使用不同浏览器访问应用程序,http://IP:6888/test,此时显示的是 test--456 的内容。

把显示为 test--123 的内容的浏览器关闭,再打开,再次访问 http://IP:6888/test,此时显示的是 test--456 的内容。
应用多版本同时启动时,如果浏览器已经在访问应用程序,则再次部署其他版本时,该浏览器访问的还是原始版本;如果把浏览器关闭后再打开,再次访问应用程序时,访问的就是最新的版本。
如果应用程序有多个版本同时运行,且浏览器没有处于已经访问该应用程序的状态,此时访问应用程序会访问最新部署的版本。
如果应用程序有多个版本同时运行,且设置了"部署顺序",重启实例后再访问应用程序,会优先访问"部署顺序"较低数字的版本。
注意: 应用多版本部署功能仅限于类型为 Web 应用程序。
# 应用程序配置虚拟路径
Apusic 应用服务器支持虚拟路径里面定义任意的路径存档附件,输入 url 就可以访问到。通过添加 alternatedocroot 实现相关功能。
操作如下:
添加 apusic-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app error-url="">
<property name="alternatedocroot_1" value="from=/mydir/* dir=/opt/testz" />
</aas-web-app>
2
3
4
5
name="alternatedocroot_1" : 唯一属性名称。
value="from=/mydir/* :为访问路径 dir 为虚拟路径。
dir=/opt/testz" :为文件的实际路径。
注意: /opt/testz 文件夹底下必须要有 mydir 同名文件夹,例如下面例子访问的是
/opt/testz/mydir下的一张图片。
- 应用程序添加
apusic-web.xml。value="from=/mydir/*。

- 文件的实际路径。目录
/opt/testz下有与apusic-web.xml设置的值mydir。
- 访问目录。访问时访问
apusic-web.xml设置的value="from=/mydir/*,即目录mydir下的一张图片,此时实际访问的是/opt/testz/mydir下的图片。

# 应用程序类库
应用程序类库页面列出该应用程序的类库,可进行新增或删除操作。
点击"新建",可以为应用程序添加类库。添加后需要重新加载应用程序才会生效。

# 应用程序增量更新
应用程序允许增量更新,即补充更新应用程序, 使用时需注意保持更新文件内容路径与应用中需要的一致。
注意: 若更新文件存在则会被覆盖, 请谨慎使用。
如更新 WEB-INF\lib 下的 jar 文件,需要目录一致再打包成 .zip 文件上传。
进入应用程序的【增量更新】,点击"新建",上传 .zip 文件。

确定之后.zip文件上传,应用程序会重新加载,实时更新 .zip 中对应的文件。

上传之后,${DOMAIN_HOME}/mydomain/下生成 addition/目录,显示有增量更新记录。
# 应用程序 Apusic 配置文件可视化
应用程序允许在管控平台设置 Apusic 配置信息,如类加载策略等。
设置类加载策略需要在应用程序部署的时候设置,不能在编辑页面中设置。此时 domain.xml 中该应用程序有属性<property name="delegate" value="true"></property>。表示当应用程序与 AAS 有类冲突时,优先加载公共类。

设置 Apusic 配置的其他项,可以在【应用程序】的"其他属性"中设置。需要添加前缀"apusic-",如果是在编辑页面中设置,需要重新加载应用程序才能生效。常用配置项有:
prefer-app-pkg针对特定的类优先加载应用的(避免引起其他异常),值一般为特定包名或类名,分隔符为';'。include-pkg优先加载 AAS V10 中的类,分隔符为';'。preferJars设置jar的优先加载方式(可以是文件夹或者jar 逗号或者冒号分隔),例如设置值为“WEB-INF/preferLib,WEB-INF/extra/aas.jar”default-charset设置默认编码格式。useMyFaces一般不设置,使用 jsf 框架 MyFaces 冲突时使用。ignore-resources排除资源扫描(仅扫描应用,忽略 AAS V10 中的资源)ignore-class-prefix排除类扫描, 设置忽略 class 列表(需先设置 delegate 为 false,优先加载应用类,如果 WebAppClassLoader 没有加载到,则不再委托给 AAS V10 的父类加载器去加载)。ignore-parents-files排除功能开关,避免 spi 机制扫描到 AAS V10 相关类引起的冲突,要结合 delegate="false"。ignore-resource-cache排除缓存开关,避免 spi 机制扫描到 AAS V10 相关类引起的冲突,要结合 delegate="false"。ignore-resource-cache-suffix通过后缀(文件名)排除缓存,避免 spi 机制扫描到 AAS V10 相关类引起的冲突,要结合 delegate="false"。ignore-resource-cache-patterns通过正则表达式 排除缓存,避免 spi 机制扫描到 AAS V10 相关类引起的冲突,要结合 delegate="false"。alternatedocroot_*添加虚拟路径,详看应用程序配置虚拟路径部分。cookie-samesite配置 cookie 跨域配置 SameSite;值可以为 None(没有限制)\Strict(严格,完全禁止第三方获取 cookie,跨站点时,任何情况下都不会发送 cookie;只有当前网页的 URL 与请求目标一致,才会带上 Cookie)\Lax(防范跨站,大多数情况下禁止获取 cookie,除非导航到目标网址的 GET 请求(链接、预加载、GET 表单))。BuiltinWebserviceEnabled配置是否开启AAS内置webservice组件,值为true表示启用,值为false表示禁用。BuiltinCDIEnabled配置是否开启AAS内置CDI组件,值为true表示启用,值为false表示禁用。BuiltinJPAEnabled配置是否开启AAS内置JPA组件,值为true表示启用,值为false表示禁用。BuiltinJSFEnabled配置是否开启AAS内置JSF组件,值为true表示启用,值为false表示禁用。BuiltinBeanValidationEnabled配置是否开启AAS内置BeanValidation组件,值为true表示启用,值为false表示禁用。BuiltinJSONPEnabled配置是否开启AAS内置JSONP组件,值为true表示启用,值为false表示禁用。BuiltinRESTFULEnabled配置是否开启AAS内置RESTFul组件,值为true表示启用,值为false表示禁用。

例如: jersey 版本冲突(客户应用也带有不同版本 jersey,它通过 spi 机制加载到了 AAS V10 中的 jersey 部件,由于版本不一致导致异常),解决的配置如下:
<?xml version="# 0" encoding="UTF-8"?>
<aas-web-app error-url="">
<class-loader delegate="false">
<property name="ignoreParentsFiles" value="true"></property>
<property name="ignoreResources" value="META-INF/services/org.glassfish.jersey.server.spi.ComponentProvider;META-INF/services/org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider"></property>
<property name="ignoreClassPrefix" value="org.glassfish.jersey"></property>
</class-loader>
</aas-web-app>
2
3
4
5
6
7
8
# 应用程序热加载
应用程序允许热加载,当更新应用程序中的 jar、class 文件,可以不手动重新加载应用程序,自动重新加载类信息。
注意: 若更新文件存在则会被覆盖, 请谨慎使用。
针对指定应用程序开启热加载功能的开启方法:
进入应用程序的一般信息页面,勾选。
应用热加载: 勾选表示启用应用热加载功能。
应用热加载延迟时间: 检测到应用发生修改后的延迟加载时间,默认 60 秒。
点击“保存”。

应用程序更新 jar、class 文件后,检测到有修改,日志打印更新提示。
全局开启方法: 在 JVM 选项中添加-Dapusic.class.reload.enabled=true;添加-Dapusic.class.reload.delay=60,检测到应用修改,表示 60s 后开始更新。添加或修改 JVM 选项需要重启实例才会生效。

# 应用程序开启JSP热加载
部署到AAS的应用程序默认情况下关闭JSP热加载,可以通过配置aas-web.xml 或 apusic-web.xml开启。
<?xml version="1.0" encoding="UTF-8"?>
<aas-web-app>
<context-root>/hello</context-root>
<jsp-config>
<property name="development" value="true" />
<property name="modificationTestInterval" value="0" />
</jsp-config>
</aas-web-app>
2
3
4
5
6
7
8
development:JSP热加载开关,值为true/false
modificationTestInterval :检测jsp更新间隔
# 应用程序设置停止时销毁应用创建的线程池、定时器
应用服务器支持应用停止时销毁应用创建的定时器,线程池,防止内存泄露。可通过配置参数clearReferencesStopThreads 用于停止Thread和线程池线程;clearReferencesStopTimerThreads 用于停止Timer线程;默认情况下值为false。支持三种配置方式:
1、管控部署应用页面增加其他属性
在应用程序中的**“其他属性”**中添加
apusic-clear-references-stop-threads,值为true
apusic-clear-references-stop-timer-threads,值为true
2
注意:
如果是在部署时添加的参数,将应用程序停止运行,已产生的线程池或定时器会被销毁。
如果是在编辑页面中添加,需要“重新加载”应用程序参数才会生效;对于已产生的线程池或定时器,需要重启实例才能关闭。

2.应用配置 META-INF/context.xml 文件
在context.xml中添加
<Context clearReferencesStopThreads="true" clearReferencesStopTimerThreads="true"></Context>
3.服务器配置 aas-web.xml 或 apusic-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app error-url="">
<class-loader delegate="false"/>
<property name="clearReferencesStopThreads" value="true">
<property name="clearReferencesStopTimerThreads " value="true">
</aas-web-app>
2
3
4
5
6
7
# 指定应用访问URL列表的IP
当点击应用列表重点”访问“,显示的访问URL的IP与实际需要的网卡不一致时,可以指定网卡。

原有逻辑: 1.分析机器hostname ip 如果不是127开头就直接返回 2.遍历网卡ip 如果不是 172 、 192.168 、 10 开头的ip(私有ip)就直接返回 3.如果也没有,就会返回私有ip
以下两种设置方法:
1.设置httplistener的监听地址为指定网卡(缺点:限制了监听地址)

2.新建本地节点,将本地节点的ip修改为对应网卡ip(缺点:额外新建节点)

# 禁止访问指定URL
1、通过security constraint 定义 一个由URL映射的资源集合的访问权限
如果 Web 应用程序使用了 servlet, 可以使用批注来表示安全约束信息。 例如可以使用 @HttpConstraint ,并且(可选)使用 @HttpMethodConstraint 批注中的批注 @ServletSecurity 以指定安全约束。
如果 Web 应用程序没有使用 Servlet,则可指定 security-constraint 部署描述符中的安全约束元素 文件。身份验证机制不能使用注释来表示, 因此,如果您使用 BASIC 以外的任何身份验证方法 BASIC ( 默认值),部署描述符是必需的。
* BASIC 认证机制是 HTTP/1.0 规范中定义的一种认证方式,它要求客户端在每个请求中发送用户名和密码。当客户端请求一个受保护的资源时,服务器会响应一个 401 Unauthorized 的状态码,要求客户端提供用户名和密码。客户端可以通过在 HTTP 请求标头中添加一个 Authorization 标头来提供用户名和密码
2、Web 资源集合
1)web-resource-name 资源名称,可选
2)url-pattern 用于列出 请求要保护的 URI
(1) 前缀匹配:/cart/* ( / 开头)
(2) 后缀匹配:*.js ( *. 开头)
3)http-method 或 http-method-ommission 用于指定应保护哪些方法或应保护哪些方法被排除在保护之外。以下任一情况被保护:
(1) 如果集合中没有命名 HTTP 方法(这意味着所有方法都受到保护)
(2) 存在于http-method标签中
(3)不存在于http-method-ommission标签中
3、指定授权约束
授权约束( auth-constraint )包含 role-name 元素。可以使用任意数量的role-name 元素 。
授权约束(authorization constraint)建立了对认证的要求,并命名了被授权访问 URL 模式和 HTTP 方法的角色,这些 URL 模式和 HTTP 方法由此安全约束(security constraint)声明。如果没有授权约束,容器必须在不需要用户认证的情况下接受请求。如果有授权约束但没有在其中指定角色,则容器不会在任何情况下允许对受限制的请求进行访问。这里指定的每个角色名称必须对应于为此 Web 应用程序定义的 security-role 元素的角色名称,或者是特殊保留的角色名称 *,表示 Web 应用程序中的所有角色。角色名称是区分大小写的。为应用程序定义的角色必须映射到服务器上定义的用户和组,除非使用默认的主体到角色映射。
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted Files</web-resource-name>
<url-pattern>/path/to/file</url-pattern>
<!-- http-method设置为空,代表所有方法都被保护 -->
</web-resource-collection>
<!-- auth-constraint设置为空,代表任何用户都无法访问 -->
<auth-constraint />
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>file</realm-name>
</login-config>
</web-app>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
示例:禁止访问/myAServlet/ 下和.js格式所有URL
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>hello</display-name>
<distributable/>
<security-constraint>
<web-resource-collection>
<web-resource-name>AAAARestricted URLs1</web-resource-name>
<url-pattern>/myAServlet/*</url-pattern>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Restricted Files</web-resource-name>
<url-pattern>*.js</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Restricted Area</realm-name>
</login-config>
<servlet>
<servlet-name>index</servlet-name>
<servlet-class>com.servlet.AServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>index</servlet-name>
<url-pattern>/myAServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>index2</servlet-name>
<servlet-class>com.servlet.BServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>index2</servlet-name>
<url-pattern>/myAServlet/myBServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>index3</servlet-name>
<servlet-class>com.servlet.CServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>index3</servlet-name>
<url-pattern>/myAServlet/myCServlet</url-pattern>
</servlet-mapping>
</web-app>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 配置全局apusic-web.xml
当应用程序与应用服务器存在类冲突,或者应用程序需要配置属性时,可以通过添加 apusic-web.xml 到 WEB_INF 中。同时可以配置全局apusic-web.xml,命名为default-apusic-web.xml,放至${DOMAIN_HOME}/mydomain/config/目录下。优先加载应用中的apusic-web.xml,再加载default-apusic-web.xml。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app error-url="">
<class-loader delegate="false"/>
</aas-web-app>
2
3
4
5
# 应用备份
应用服务器支持应用备份与恢复功能,减少因误操作给应用带来的影响。
进入【应用管理】,点击应用列表中的“备份”,开始备份该应用程序;备份完成后该应用备份成功,显示在“备份列表”页面中。

【备份列表页面】包括以下操作和属性。
| 配置项 | 说明 | 默认值 |
| 应用名称 | 备份的应用名称,默认由[应用名称][备份日期时间戳]组成 | |
| 备份时间 | 该应用文件备份的时间 | |
| 文件大小 | 备份的应用文件大小 | |
| 目标 | 该备份应用文件所在的目标实例。存在的目标才会显示,已被删除的目标不会显示 |
删除:选择需要删除的应用,点击“删除”后显示确认删除提示,确定后将会删除该应用,备份应用文件从备份目录删除。
恢复:选择需要恢复部署的应用文件,点击“恢复”;确认恢复部署提示后,进入恢复部署页面。需注意:
- 恢复部署应用会强制覆盖现同名应用,需谨慎操作。
- 【恢复部署页面】不允许选择实例,只能实例原路恢复部署。
- 如果集群中有实例已被删除或有通讯等问题时,该实例不允许恢复部署,正常实例可以恢复部署。
- 如果需要恢复部署的应用已经被卸载,需要到应用回收站还原应用后才能在“应用备份列表”中恢复部署;如若彻底卸载,该备份文件不能恢复部署。

可以进入【域配置】-【应用程序配置】,设置“应用备份目录”,该目录需要有对应的权限,默认值为${com.apusic.aas.instanceRoot}/backup_app/。

# 应用回收站
应用服务器支持应用回收站功能,减少因误操作给应用带来的影响。
进入【域配置】-【应用程序配置】,勾选“应用回收站功能开关”,保存,开启应用回收站功能。编辑该功能保存后实时生效,无需重启应用服务器。
对应的属性有:
| 配置项 | 说明 | 默认值 |
| 应用回收站功能开关 | 开启后,卸载的应用放置回收站 | 关闭 |
| 应用回收站文件有效期 | 卸载后的应用文件存放的有效时间,0表示永久保留 | 180天 |
| 应用回收站目录 | 指定的应用回收站目录,需要有对应的权限 | ${com.apusic.aas.instanceRoot}/recover |

卸载应用程序后,进入【应用管理】,点击“回收站”,进入【应用程序回收站】页面,展示被卸载的应用文件。应用程序回收站目录,默认为“${com.apusic.aas.instanceRoot}/recover” 存放卸载的文件。如果是节点实例,在节点的对应位置新建该目录,存放从节点实例卸载的应用文件。

页面对应的属性有:
| 配置项 | 说明 | 默认值 |
| 应用名称 | 卸载的应用名称,默认由[应用名称][卸载日期时间戳]组成 | |
| 卸载时间 | 该应用文件被卸载的时间 | |
| 文件大小 | 该卸载的应用文件大小 | |
| 目标 | 根据所选实例显示当前实例所有已被卸载的应用文件;如若实例或集群被删除,不再显示被删除的实例或集群曾经卸载的应用文件 | server |
删除:彻底删除应用文件。选择需要删除的应用程序,点击“删除”,确认删除后,将会删除在应用回收站的应用文件;此时“应用回收站目录”同时删除该应用文件。
还原:还原应用程序。选择需要还原的应用程序,点击“还原”,跳转还原部署页面,“确定”后开始还原操作。还原的应用程序包移至
${com.apusic.aas.instanceRoot}/restore/。如果是节点实例,会在节点实例对应位置创建该目录,还原该节点实例的应用程序时,此目录存放对应的应用文件。- 如果应用名称已存在,需要先取消部署已有的应用才能进行还原操作。
- 【还原部署页面】不允许选择实例,只能根据实例原路还原。
- 如果集群中有实例已被删除或有通讯等问题时,该实例不允许还原应用,正常实例可以还原。

# 应用文件防篡改
支持配置业务应用中指定的文件或目录受到防篡改功能保护,受防篡改功能保护的文件或目录被覆盖时,能够及时发现并被恢复。
进入【应用管理】页面,点击应用列表中的“防篡改”,进入“防篡改编辑”页面。

页面可配置应用文件防篡改策略,保存。配置后实时生效。
| 配置项 | 说明 | 默认值 |
| 名称 | 该应用名称,只读字段 | |
| 启用 | 是否启用防篡改功能 | 不启用 |
| 防篡改文件设置 | 配置防篡改文件,点击“防篡改文件”,支持配置文件夹、文件名、文件前缀、文件后缀,如.js表示保护应用目录下所有的.js文件;多个用英文逗号分隔。 点击“防篡改文件正则表达式”时,支持正则表达式方式输入,如(.)*/hello/WEB-INF/(.)*$。为空时表示所有文件受防篡改保护 | |
| 排除文件设置 | 配置排除文件,即所配置的文件不受防篡改策略保护,点击“排除文件”,支持配置文件夹、文件名、文件前缀、文件后缀;多个用逗号分隔。点击“排除文件正则表达式”时,支持正则表达式方式输入。为空时表示所有文件受防篡改保护 | |
| 检测时间 | 设置应用文件检测时间间隔 | 10秒 |

# ear应用支持多个文件夹分隔不同的jar依赖
支持ear应用加载应用根目录及一级目录下面的类库,提高可维护性,避免类冲突,有助于模块化开发。
在应用目录中新建META-INF/aas-application.xml,设置compatibility值为was,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<aas-application>
<compatibility>was</compatibility>
</aas-application>
2
3
4
# 跳过jar的注解扫描
添加文件 ${com.apusic.aas.instanceRoot}/config/ignoreJars 进行jar的注解扫描跳过(多个需要换行),加快部署的速度。
# 监视管理
系统管理员登录系统,使用"监视"页面可以配置集群和非集群服务器实例的服务监控配置,并且可以查看到每个实例的应用程序、服务器信息、实例资源等监控数据,还可以查看图形化监控数据。

对于每个服务器实例,提供以下信息。
- 实例名称: 服务器实例的名称。单击实例名称以转到实例的"常规信息"页面。
- 集群名称: 服务器实例所属的集群的名称(如果它是集群实例)。单击集群名称以转至集群的"常规信息"页面。
- 操作: 允许在服务器实例上执行以下操作的链接。
- 配置监视: 显示集群或独立实例配置的"监视服务"页面,在该界面设置各服务组件的监控级别。
- 查看监控数据: 允许查看对应实例的以下类型的监视数据的链接。
- 应用程序: 点击"应用程序"链接,跳转到对应实例的"应用程序监视"页面,查看该实例的应用程序监视数据。
- 服务器: 点击"服务器"链接,跳转到对应实例的"服务器监控"页面,查看该实例服务器监视数据。
- 资源: 点击"资源"链接跳转到对应实例的"资源监视"页面,查看该服务器的资源监视数据。
- 图形监控: 点击"图形监控"链接跳转到对应实例的"图形监控"页面,查看该服务器的图形监视数据。
- 监控回放: 点击"监控回放"链接跳转到对应实例的"监控回放"页面,查看该服务器的监控回放数据。
- 类信息跟踪: 点击"类信息跟踪"链接跳转到对应实例的"类信息跟踪"页面,查看该服务器的类信息跟踪数据。
- SQL 追踪: 点击"sql 追踪"链接跳转到对应实例的"SQL 追踪"页面,查看该服务器的 SQL 追踪信息。
- JNDI 树: 点击"JNDI 树"链接跳转到对应实例的"JNDI 树"页面,查看该服务器的 JNDI 信息。
- 线程: 点击"线程"链接跳转到对应实例的"线程"页面,查看该服务器的线程 信息。
- 快照: 点击"快照"链接跳转到对应实例的"快照"页面,查看该服务器的快照信息。
- FGC监控: 点击“FGC监控”跳转到“FGC监控”页面,查看FGC监控信息
# 开启监视功能
服务器配置,监视功能默认都为关闭,可以点击导航栏"监视管理"跳转到服务器配置的监视服务界面,点击操作"配置监视",对各组件的监视级别进行设置,级别设置为"低"或"高"启用组件或服务的监视功能。


# 监视应用程序
如需监视应用程序,需在监视服务配置界面设置"Web Container"组件的监视级别为"高"或者"低",开启后,如果服务器中有应用程序运行,在应用程序监视界面可以查看到监视统计数据。
应用程序监听界面可以查看到应用的 Servlet、会话、请求、以及 JSP 等的统计信息。
点击【刷新】按钮可以刷新监视数据为最新的统计数据。

应用程序监听界面可以选择需要查看的应用程序和组件的应用监视数据。

# 监视服务器
如需监视服务器相关信息,同样需要在监视服务配置界面对相应的组件开启监视功能,设置级别为"高"或低,开启后可以在服务器查看到相应的监视统计数据,可以点击【刷新】按钮获取最新的监视统计信息。每 60S 自动刷新,可以点击"刷新"进行手动刷新;点击"暂停"停止刷新。

可以过来查看某个虚拟服务或者 http 监听服务的监视统计数据。

点击某一线程,将进入该线程的监视信息页面。

# 监视资源
如需监视服务器资源相关信息,同样需要在监视服务配置界面对相应的组件开启监视功能,设置级别为"高"或低,开启后可以在服务器查看到相应的监视统计数据,可以点击【刷新】按钮获取最新的监视统计信息。

# 图形监控
在监视服务配置界面对相应的组件开启监视功能,设置级别为"高"或"低",开启后可以在图形监控页签查看到监视数据。每 5S 自动刷新一次,点击"暂停"可以停止刷新。可选择“jvm/cpu/thread/jdbc/session。

# 监控回放
在监视服务配置界面开启监控回放功能,设置监控数据总量,默认为 8000 条;设置监控抽样时间(秒),默认为 30 秒,表示每 30 秒进行一次监控保存。开启后可以在监控回放页面查看到回放数据。

对应的监控项需要开启才能有监控数据。可以选择时间段进行搜索,点击“暂停”可停止监控,页面不再刷新,但数据还是会记录;点击“播放”页面将会继续刷新数据。点击“减速”可以放慢播放速度;点击“加速”可以加快播放速度。

# 类信息跟踪
进入"类信息跟踪"页面,可以查看 AAS 所有类加载的信息。左侧树状图显示 AAS 所有类名称,右侧显示当前选中的类加载器详细信息。
选中左侧树状图节点,右侧显示对应节点类名称信息。
在条件查询输入"类名称"全称,如"com.opensymphony.xwork2.util.ValueStack",点击"搜索",将会显示所有使用该类名称的应用类加载信息;如果类名称不存在,会显示对应错误提示;左侧节点可以与查询条件输入框组合查询。

# SQL 追踪
进入"sql 追踪"页面,可以开启 sql 追踪功能。追踪列表显示事件、连接池名称、sql 语句、执行次数、执行时长、最大时长、执行时间、堆栈信息。

开启 sql 追踪功能条件:
- 确保实例管理服务-JMX 连接器中的"安全性"未开启。

- 确保 jdbc 连接池属性"包装 JDBC 对象"勾选。

如果是独立实例或集群实例:
配置集群或独立实例管理服务,确保安全性未开启。
集群或独立实例管理服务页面,"地址"修改为
${JMX_SYSTEM_CONNECTOR_URL}。

- 进入集群或独立实例系统设置,添加系统属性
JMX_SYSTEM_CONNECTOR_URL,默认值为0.0.0.0,保存。

- 配置属性
JMX_SYSTEM_CONNECTOR_URL的实例值,覆盖值为该实例所在 IP。

- 启动或重启集群或独立实例。
点击"开启追踪""开启堆栈",选择需要查看的数据源,将会显示当前实例下该数据源的 sql 追踪信息。

点击"显示配置",将会显示可以配置的信息。数据源需要开启才能追踪;可以"设置追踪事件",点击"提交配置",则设置成功。

# JNDI 树
进入"JNDI 树"页面,可以查看 AAS 所有 JNDI 信息。

# 线程
进入【线程】页面,可以监控运行中的繁忙线程、阻塞线程、长线程信息。
- 实例名称: 当前监控长线程的实例。
- 刷新频率: 前端页面刷新的频率,默认10秒。
- 暂停: 点击将会暂停刷新页面,不会影响监控任务。如果已经开启监控,后台还会进行数据监控。点击后按钮变为“自动刷新”;再次点击“自动刷新”按钮变为“暂停”。
- 刷新: 手动刷新页面数据。
- 保存: 修改配置后,点击“保存”才能生效。

# 繁忙线程
可以收集最忙的前10个线程CPU使用率和打印堆栈,允许下载堆栈信息.
- 开启繁忙线程监控: 是否开启繁忙线程监控。默认不启用。
- 繁忙线程检测周期: 每隔一段时间进行繁忙线程检测,默认为200ms(最低200ms) 。
- 下载: 点击将会再次获取,下载再次获取的信息;下载文件为
.zip,堆栈信息为.txt。 - 停止: 选择线程,点击“停止”将会手动停止繁忙线程。

# 阻塞线程
可以监控阻塞线程,允许下载堆栈信息.
- 开启阻塞线程监控: 是否开启阻塞线程监控。默认不启用。
- 下载: 点击将会再次获取,下载再次获取的信息;下载文件为
.zip,堆栈信息为.txt。 - 停止: 选择线程,点击“停止”将会手动停止繁忙线程。

# 长线程
可以查看当前的长线程信息。对于请求过长的线程,可根据需要停止线程,防止线程长期被无效占用,并提供查看当前线程调用栈的功能。
开启长线程监控: long-thread-enabled;是否开启长线程监控。默认不启用。
长线程阈值: long-thread-threshold;监控指定阈值以上的长线程,默认为 60 秒。
长线程检测周期: long-thread-monitor-cycle-time;每隔一段时间进行长线程检测,默认为 3 秒。
日志记录路径: long-thread-log-file-path;指定长线程堆栈信息输出的日志文件路径;默认为
${com.apusic.aas.instanceRoot}/logs/longthread下载: 点击将会再次获取,下载再次获取的信息;下载文件为
.zip,堆栈信息为.txt。停止: 选择线程,点击“停止”将会手动停止线程。

也可以通过以下方式开启:
- 开启日志监控
【配置管理】 -> 【server-config】 -> 【日志配置】 -> 【日志级别】 -> “添加日志记录程序” -> javax.enterprise.web.admin -> 日志级别: 深度追踪。
或修改配置文件 logging.properties 添加 javax.enterprise.web.admin.level=FINEST。
注意:
- 独立实例或集群实例需要单独在"[instance_name]-config"下设置。
- 集群实例需要在实例的系统属性下添加属性: imq.hostname,值为实例监听的 IP 地址。

- 配置长线程定义时间
可以根据用户需求自行设置长线程定义时间;默认为 60s。
修改 domain.xml 添加。
<jvm-options>-Daas.longrunrequest.threshold=XXX</jvm-options>
或进入管控台,【配置管理】 -> 【server-config】 ->【 JVM 配置】->【 JVM 选项】,添加 JVM 选项:
-Daas.longrunrequest.threshold=XXX
XXX 为定义时间,时间单位为秒。

- 长线程监控
部署应用程序,如 monitor.war。访问${context_root}/m。
查看请求信息,进入管控台,服务器(管理服务器)-监视数据-服务器-server-LongRunRequest;此前应先确认 http server 监控是否开启: 进入管控台,监视数据-server-配置监视-http Service。
同时查看日志,日志会返回线程信息、开始时间、结束时间等信息。

# 快照
生成线程快照、堆内存快照、JVM 快照、进程快照(core 文件)、GC 快照、服务器日志快照、访问日志快照、配置文件快照,可根据 CPU、内存设置自动生成快照。
快照文件存放在${instanceRoot}/snapshots/。一般命名为[快照类型]\_[日期]。

配置自动生成快照
CPU(%): 生成快照 CPU 阈值,-1 代表不启用,默认为 -1。生成 JVM 快照,快照类型为进程快照。
内存(%): 生成快照内存阈值,-1 代表不启用,默认为 -1。生成 JVM 快照,快照类型为进程快照。
阈值检测间隔: 检测阈值的时候间隔,默认为 60 分钟。
修改保存后直接生效。
对应 domain.xml配置:
<monitoring-service cpu-threshold="-1" memory-threshold="-1"
monitor-cycle-time="60">
<module-monitoring-levels jvm="HIGH" jdbc-connection-pool="HIGH"
http-service="HIGH"></module-monitoring-levels>
</monitoring-service>
2
3
4
5
# 线程快照
"线程快照"以.txt 文件生成;点击操作中的"下载"可以下载文件并查看。
- 间隔时间: 设置线程采集的间隔时间,单位为秒,默认值为1秒。
- 采样次数: 设置该次采样的次数,默认3次。

# 堆内存快照
"堆内存快照"以.hprof 文件生成;点击操作中的"下载"可以下载文件并查看。

# JVM 快照
"JVM 快照"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。

# 进程快照(core 文件)
"进程快照(core 文件)"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。该功能需要在服务器上安装 gdb。

# GC 快照
"GC 快照"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。

# 服务器日志快照
"服务器日志快照"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。

# 访问日志快照
"访问日志快照"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。该功能需要的【配置】->【[instance]-config】->【HTTP 服务】中开启"访问日志记录",开启后实例需要重启。

# 配置日志快照
"配置日志快照"以.zip 文件生成;点击操作中的"下载"可以下载文件并查看。

# 性能采集
可以对CPU使用情况进行监控,收集数据,可生成火焰图。
采样事件: CPU。根据CPU使用情况进行采样
持续时间: 采样的持续时长,单位为秒,默认值为60秒
报告格式: 生成报告的格式,单选
Flamegraph: 生成火焰图,文档格式
实例名称+时间戳.htmlJfr: 生成jfr文档,文档格式为
实例名称+时间戳.jfr

# 删除快照
选择快照文件,点击"删除",确认删除后可以删除快照文件。

# FGC监控
FGC监控页面可以实时获取垃圾回收信息,显示FullGC开始时间、结束时间、持续时长、回收前详情、原因、回收后详情、累计回收次数。
点击“开启追踪”,将会开启监控垃圾回收信息;
点击“关闭追踪”,将会关闭监控垃圾回收信息。

# 资源管理
使用系统管理员登录系统,对资源进行统一管理。
Apusic 应用服务器管控提供对系统所有实例资源进行统一管理功能,包括 JDBC, JMS, JNDI, JavaMail 会话, 资源适配器配置, 连接器等类型的资源。
# 添加资源
在资源界面,点击【添加资源】按钮进行添加资源操作,资源格式为 xml 文件,选择资源目标后保存。


# JDBC
# JDBC 连接池
JDBC 连接池包含一组 JDBC 连接,它们是在注册连接池时创建的。连接池使用 JDBC 驱动程序来创建物理数据库连接。应用程序从池中借用连接并使用此连接,然后关闭连接以将其返还给该池。要创建 JDBC 资源,请指定关联的连接池。多个 JDBC 资源可以指定一个连接池。

连接池是用于特定数据库的一组可重复使用的连接。由于每创建一个新的物理连接都会耗费时间,因此服务器维护可用连接池来提高性能。应用程序请求连接时可以从池中获取一个连接。应用程序关闭连接时,连接将返回到池中。
使用管理控制台创建连接池时,您是在定义与特定数据库的连接的各个方面。
使用"JDBC 连接池"页可以配置 JDBC 连接池。
对于每个连接池,将提供以下信息,domain.xml 对应位置<resources><jdbc-connection-pool></jdbc-connection-pool></resources>:
刷新时间间隔: 默认 30 秒,定时是检测 JDBC 连接池的状态。
池名称: 连接池的名称。
资源类型: 连接池的资源类型。包括 javax.sql.XADataSource(全局事务)、java.sql.ConnectionPoolDataSource(本地事务)、javax.sql.DataSource(仅本地事务)和 java.sql.Driver。
类名称: 实现 javax.sql.XADataSource、java.sql.ConnectionPoolDataSource、javax.sql.DataSource 或 java.sql.DriverAPI 的特定于提供方的类名称。
说明: 连接池的简短说明。
"连接池"表还包含以下选项:
新建: 用于创建新连接池的按钮。
删除: 用于删除一个或多个所选连接池的按钮。
# 新建 JDBC 连接池
点击"新建",进入新建 JDBC 连接池页面。
| 配置项 | 说明 | 默认值 |
| 连接池名称 | name,自定义连接池名称,必填 | |
| 资源类型 | res-type,包括 javax.sql.XADataSource(全局事务)、java.sql.ConnectionPoolDataSource(本地事务)、javax.sql.DataSource(仅本地事务)和 java.sql.Driver,根据需要选择 | |
| 数据库驱动程序供应商 | 可以选择或输入数据库驱动程序供应商,选择后下一步会带出默认属性 | |
| 数据源类名称 | datasource-classname,选择或输入实现 DataSource 和/或 XADataSource API 的特定于供应商的类名。需要与"资源类型"相对应,如达梦数据库选择的资源类型为 javax.sql.DataSource,数据源类名称需要为 dm.jdbc.pool.DmdbDataSource | |
| 驱动程序类名称 | driver-classname,选择或输入实现 java.sql.Driver 接口的特定于供应商的类名。需要与"资源类型"相对应,如达梦数据库选择的资源类型为 java.sql.Driver,数据源类名称需要为 dm.jdbc.driver.DmDriver | driver-classname |
| 部署顺序 | deployment-order,指定服务器启动时资源的加载顺序。先加载较低的数字 | |
| Ping | ping,启用后,该池在创建或重新配置期间执行试通命令以识别并警告其属性的任何错误值 | |
| URL | ||
| 用户名 | ||
| 口令 | ||
| 初始和最小池大小 | steady-pool-size,在池中维护的连接的最小和初始数量 | 8 |
| 最大池大小 | max-pool-size,可以为满足客户机请求而创建的连接的最大数量 | 32 |
| 池调整大小数量 | pool-resize-quantity,池空闲超时到期时要删除的连接的数量 | 2 |
| 空闲超时 | idle-timeout-in-seconds,连接在池中可以保持空闲的最长时间。0 代表对空闲的连接不进行验证 | 300秒 |
| 最长等待时间 | max-wait-time-in-millis,发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 非事务处理连接 | non-transactional-connections,返回非事务处理连接 | 不启用 |
| 事务处理隔离 | transaction-isolation-level,包括 Read Uncommitted(读未提交)、Read Committed(读已提交)、Repeatable Read(可重复读取)、Serializable(可串行化),如果未指定, 则使用 JDBC 驱动程序的默认级别 | |
| 隔离级别 | is-isolation-level-guaranteed,是否需要启用事务处理隔离,所有连接都使用同一隔离级别 | 启用 |
| 添加 JDBC 驱动包 | ||
| 其他属性 | 根据需要添加属性 |




# 编辑 JDBC 连接池
点击列表中的连接池名称,进入编辑页面。
包括一般信息、高级属性、其他属性,可以对其进行编辑,修改后点击"保存"生效。
可以加载默认值、刷新、ping。
| 配置项 | 说明 | 默认值 |
| 连接池名称 | name,连接池名称,只读字段 | |
| 资源类型 | res-type,显示创建时设置的类型 | |
| 密级 | 设置密级 | |
| 数据源类名称 | datasource-classname,显示实现 DataSource 和/或 XADataSource API 的特定于供应商的类名 | |
| 驱动程序类名称 | driver-classname,显示实现 java.sql.Driver 接口的特定于供应商的类名 | |
| Ping | ping,启用后, 该池在创建或重新配置期间执行试通命令以识别并警告其属性的任何错误值 | |
| 部署顺序 | deployment-order,指定服务器启动时资源的加载顺序。先加载较低的数字 |
池设置
| 配置项 | 说明 | 默认值 |
| 初始和最小池大小 | steady-pool-size,在池中维护的连接的最小和初始数量 | 8 |
| 最大池大小 | max-pool-size,可以为满足客户机请求而创建的连接的最大数量 | 32 |
| 池调整大小数量 | pool-resize-quantity,池空闲超时到期时要删除的连接的数量 | 2 |
| 空闲超时 | idle-timeout-in-seconds,连接在池中可以保持空闲的最长时间。0 代表对空闲的连接不进行验证 | 300秒 |
| 最长等待时间 | max-wait-time-in-millis,发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 最大生存时间 | 连接自创建开始的最大生存时间 | 0秒 |
事务处理
| 配置项 | 说明 | 默认值 |
| 非事务处理连接 | non-transactional-connections,返回非事务处理连接 | 不启用 |
| 事务处理隔离 | transaction-isolation-level,包括 Read Uncommitted(读未提交)、Read Committed(读已提交)、Repeatable Read(可重复读取)、Serializable(可串行化),如果未指定, 则使用 JDBC 驱动程序的默认级别 | |
| 隔离级别 | is-isolation-level-guaranteed,是否需要启用事务处理隔离,所有连接都使用同一隔离级别 | 启用 |
高级属性
| 配置项 | 说明 | 默认值 |
| Statement 超时 | 用于终止异常错误长时间运行查询的连接的超时属性。-1 表示未启用 | -1 |
| 语句高速缓存大小 | statement-cache-size,设置为非零正数值 (例如 10) 时, 启用高速缓存 | |
| 初始 SQL | init-sql,指定每当从池创建连接时就执行的 SQL 字符串 | |
| SQL 跟踪监听程序 | 实现 com.apusic.aas.api.jdbc.SQLTraceListener 接口的类的逗号分隔列表, ,通常由用户自定义。该功能与【SQL 追踪】、【日志记录程序】中的 com.apusic.aas.jdbc.pools.trace 类似 | |
| 包装 JDBC 对象 | 设置为"真"时, 应用程序将获取 Statement, PreparedStatement, CallableStatement, ResultSet, DatabaseMetaData 的已包装 jdbc 对象 | 真 |
| 池化 | 设置为"假"时, 禁用池的连接共享 | 真 |
连接设置
| 配置项 | 说明 | 默认值 |
| 验证连接时间间隔 | 指定连续请求验证连接 (最多一次) 之间的时间间隔(单位)。0表示未启用该属性 | 0 |
| 连接泄露超时 | 设置确定为连接泄露超时的时间,0 表示无连接泄露检测 | |
| 连接泄露回收 | 如果启用该选项, 则连接泄漏超时后, 池将回收泄漏的连接 | 不启用 |
| 语句泄露超时 | 设置确定为语句泄露超时的时间,0 表示无语句泄漏检测 | |
| 连接泄露回收 | 如果启用该选项, 则语句泄漏超时后, 池将回收泄漏的语句 | 不启用 |
| 创建重试尝试次数 | 尝试创建新连接的次数。0 表示不进行重试,连接失败时该连接会一直是失败的状态,不进行重新连接 | 0 |
| 重试时间间隔 | 尝试创建连接时两次重试之间的时间间隔。当"创建重试尝试次数"值大于 0 时有效 | 10秒 |
| 延迟关联 | 对连接执行操作时, 连接将延迟关联 | 不启用 |
| 延迟连接登记 | 仅当在方法中实际使用资源时才将资源添加至事务处理 | 不启用 |
| 与线程关联 | 当同一线程需要连接时, 它可以重复使用已与该线程关联的连接 | 不启用 |
| 匹配连接 | 启用或禁用池的连接匹配 | 启用 |
| 最大连接使用次数 | 连接将被池重用指定次数, 超出此数目后连接会关闭。0 表示未启用该功能 | 0 |
连接验证
| 配置项 | 说明 | 默认值 |
| 连接验证 | is-connection-validation-required,为真时,验证连接, 连接失败时允许服务器重新连接 | 不启用 |
| 验证方式 | validationmethod,包括 table(数据表)、custom-validation(自定义验证)、meta-data(元数据)、auto-commit(自动提交)默认情况下使用 auto-commit,开启【连接验证】,设置【一旦失败】或【创建重试尝试次数】,连接失败后需要重新连接时使用 auto-commit 的方式即可重新连接。有些驱动无法使用 auto-commit 的方式,这个时候就尝试用别的【验证方式】,例如 table | |
| 表名 | 如果验证方式选择了 table,需选择或输入表名。该表名为该连接池中的任意可使用的表,该表可以为空表 | |
| 验证类名 | 如果验证方式选择了 custom-validation,需要指定验证类名称 | |
| 一旦失败 | 为真时,连接失败时关闭所有连接并重新连接, 否则只在使用时重新连接 | 不启用 |
| 允许非组件调用方 | 为真时,启用由非组件调用方 (例如 ServletFilter) 使用的池 | 不启用 |
其他属性
| 配置项 | 说明 | 默认值 |
| 添加 JDBC 驱动包 | 上传数据库驱动程序包。数据库驱动包上次到${APUSIC_HOME}/domains/mydomain/lib/ext 目录下,如果数据源被其他的独立实例和集群使用,会自动拷贝数据源驱动到独立实例和集群实例的相应的目录下 | |
| 其他属性 | 管理连接池的其他属性,例如URL等 |








# 删除 JDBC 连接池
选择JDBC连接池,点击“删除”,确定后将会删除该JDBC连接池。删除JDBC连接池会同时把该连接池的资源删除,请谨慎操作。

# JDBC 资源
Java 数据库连接 (JDBC) 资源 (数据源)为应用程序提供连接到数据库的方法。通常,管理员会为域中部署的应用程序所访问的每个数据库创建一个 JDBC 资源;也可为一个数据库创建多个 JDBC 资源。

应用程序通过在 Java 命名和目录接口 (JNDI) API 树中查找数据源,然后请求连接来从连接池获取数据库连接。与数据源关联的连接池提供到应用程序的连接。
使用"JDBC 资源"页可以配置 JDBC 资源。
对于每个资源,将提供以下信息:
JNDI 名称: 标识 JDBC 资源的唯一名称。
状态: 说明资源在目标实例上的启用状态。
连接池: 与资源关联的 JDBC 连接池。
说明: 资源的简短说明。
"资源"表还包含以下选项:
新建: 用于创建新资源的按钮。
删除: 用于删除一个或多个所选资源的按钮。
启用: 用于启用一个或多个所选资源的按钮。
禁用: 用于禁用一个或多个所选资源的按钮。
# 新建 JDBC 资源
点击"新建",进入新建 JDBC 资源页面。输入对应信息,确定后成功创建JDBC资源,显示在列表页面中。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识 JDBC 资源的唯一名称,需要与应用程序定义的一致 | |
| 状态 | 说明资源在目标实例上的启用状态 | 启用 |
| 连接池 | 与资源关联的 JDBC 连接池,这里只能选择一个连接池 | |
| 密级 | 设置该JNDI资源的密级 | 秘密 |
| 说明 | 资源的简短说明 | |
| 目标 | 该JDBC资源所属的服务器实例目标,部署在选中的实例目标可以连接该JDBC资源;存在多个实例或服务器集群时显示该项,可以多选 | server |
# 编辑JDBC 资源
点击JNDI名称,进入编辑JDBC 资源页面。修改后,如果已被应用程序引用,需要重新加载应用程序修改的属性才能生效。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识 JDBC 资源的唯一名称,需要与应用程序定义的一致 | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 连接池 | 与资源关联的 JDBC 连接池,这里只能选择一个连接池 | |
| 密级 | 设置该JNDI资源的密级 | 秘密 |
| 部署顺序 | 指定服务器启动时资源的加载顺序。先加载较低的数字 | 100 |
| SQL语句 | 执行SQL语句,需要有权限,详看【执行SQL语句开启方法】 | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该JDBC资源设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |

执行SQL语句开启方法
编辑 JDBC 资源界面可以在该数据源中执行 sql 语句。
- 默认不开启 sql 安全,在 jdbc 资源的 sql 语句框中可以执行包括 select,create,insert,update,delete,drop 等 sql 语句。
- 开启 sql 安全,在 jdbc 资源的 sql 语句框中就只能执行 select 语句。
开启方法: 在 JVM 选项中添加"-Dapusic.console.sql.disabled=true"
- 因涉及到数据库安全问题,执行的结果不会打印到 AAS 中,开启【SQL 追踪】功能可以看到记录的执行结果状态信息。

# 删除 JDBC 资源
选择JDBC资源,点击“删除”,确定后将会删除该JDBC资源。

# JDBC 多数据源资源
JDBC 多数据源资源为应用程序提供了连接多个数据库的方法。设置多数据源资源,一个 JDBC 资源可以同时连接多个连接池。

# 新建 JDBC 多数据源资源
点击"新建",进入新建 JDBC 资源页面。输入对应信息,确定后成功创建JDBC资源,显示在列表页面中。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识 JDBC 资源的唯一名称,需要与应用程序定义的一致 | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 连接池 | 与资源关联的 JDBC 连接池,多选 | |
| 密级 | 设置该JNDI资源的密级 | 秘密 |
| 算法类型 | 指本次使用数据源的 getConnection()获得连接后,下次再获得连接的方式。有两项可选: 负载均衡: 下次随机在连接池中随机选取一个非本次池获得连接。 故障转移: 每次获得连接都始终在目前使用的池中获取,直到目前使用的连接池出现问题,则从其他连接池中获取连接作为 fail-over。 忙时转移: 可选项,如果当前使用的连接池连接数达到最大值,则会从其他池获取连接。最大连接数在 JDBC 连接池中设置。 | 故障转移 |
| 检测时间 | 测试连接的时间间隔 | 5秒 |
| SQL语句 | 测试连接的 SQL 语句。多数据源资源在返回连接时并不会先检测连接可用,而是采用周期轮询的方法检测各个连接池,如果某个连接池不可用,会在获取连接时去处这个连接池。由于采用周期轮询,所以不能保证获得的连接一定可用,必须要在应用中捕获 SQLException,然后重试才能获得新的可用连接,所以此处的高可用并不是应用透明的 | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该JDBC资源设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |
注意:
- 更改算法类型、检测语句和时间间隔不需要重启应用即可生效。
- 更改多数据源中的连接池,加减池后,需要重新获取 JNDI 中的数据源对象或重启应用。
- JNDI 名称唯一,且不能与 JDBC 资源的 JNDI 名称重复。
- JDBC 连接池的资源类型需要一致才能在多数据源资源中正常使用。
- 算法类型: 指本次使用数据源的 getConnection()获得连接后,下次再获得连接的方式。有两项可选:
- 负载均衡: 下次随机在连接池中随机选取一个非本次池获得连接。
注意: 需要在应用中保持数据源 JNDI 对象的引用才能够获得负载均衡的能力,也就是说每次从同一个数据源对象获得新的数据库连接才能实现负载均衡。

- 故障转移: 每次获得连接都始终在目前使用的池中获取,直到目前使用的连接池出现问题,则从其他连接池中获取连接作为 fail-over。
- 忙时转移: 可选项,如果当前使用的连接池连接数达到最大值,则会从其他池获取连接。最大连接数在 JDBC 连接池中设置。

# 编辑JDBC多数据源 资源
点击JNDI名称,进入编辑JDBC 多数据源资源页面。修改后,如果已被应用程序引用,需要重新加载应用程序修改的属性才能生效。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识 JDBC 资源的唯一名称,只读字段 | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 连接池 | 与资源关联的 JDBC 连接池,多选 | |
| 密级 | 该JNDI资源的密级 | |
| 算法类型 | 指本次使用数据源的 getConnection()获得连接后,下次再获得连接的方式。有两项可选: 负载均衡: 下次随机在连接池中随机选取一个非本次池获得连接。 故障转移: 每次获得连接都始终在目前使用的池中获取,直到目前使用的连接池出现问题,则从其他连接池中获取连接作为 fail-over。 忙时转移: 可选项,如果当前使用的连接池连接数达到最大值,则会从其他池获取连接。最大连接数在 JDBC 连接池中设置。 | 故障转移 |
| 检测时间 | 测试连接的时间间隔 | 5秒 |
| SQL语句 | 测试连接的 SQL 语句。多数据源资源在返回连接时并不会先检测连接可用,而是采用周期轮询的方法检测各个连接池,如果某个连接池不可用,会在获取连接时去处这个连接池。由于采用周期轮询,所以不能保证获得的连接一定可用,必须要在应用中捕获 SQLException,然后重试才能获得新的可用连接,所以此处的高可用并不是应用透明的 | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该JDBC资源设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |

# 删除 JDBC多数据源 资源
选择JDBC多数据源资源,点击“删除”,确定后将会删除该JDBC多数据源资源。

# 共享类库
Apusic 应用服务器支持类共享,使多个应用程序可以共享资源。
【新建】
共享类库名: 设置共享类库名称,如 sharelib。
【编辑】
上传: 上传类文件。
上传类库之后会在${DOMAIN_HOME}/mydomain/lib/shared 下创建类库文件夹。

部署应用程序页面的"共享库"提供选择框。
部署应用程序,如 test1.war,选择共享类库,此时该应用程序将会从加载共享类库中的类信息。
注意:
- 应用程序需要为 war 文件。
优先加载应用程序中的类,共享类库中的类与应用程序冲突时默认只加载应用程序中的类。

# JMS 资源
JMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
# 连接工厂
Java 消息服务 (JMS) 连接工厂是允许应用程序以编程方式创建其他 JMS 对象的对象。

# 新建 JMS 连接工厂
点击“新建”,进入新建JMS连接工厂页面。输入对应属性,确定后完成新建,新建的JMS连接工厂资源显示在列表中。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识JMS连接工厂的唯一名称,需要与应用程序定义的一致 | |
| 资源类型 | 选择该资源的资源类型,可选项为javax.jms.ConnectionFactory、javax.jms.QueueConnectionFactory、javax.jms.TopicConnectionFactory,单选 | javax.jms.TopicConnectionFactory |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 初始和最小池大小 | 在池中维护的连接的最小和初始数量 | 1连接数 |
| 最大池大小 | 可以为满足客户机请求而创建的连接的最大数量 | 250连接数 |
| 池调整大小数量 | 池空闲超时到期时要删除的连接的数量 | 2连接数 |
| 空闲超时 | 连接在池中可以保持空闲的最长时间 | 300秒 |
| 最长等待时间 | 发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 一旦失败 | 连接失败时关闭所有连接并重新连接, 否则只在使用时重新连接 | 不启用 |
| 事务处理支持 | 事务处理支持级别。以向下兼容的方式覆写资源适配器中的事务处理支持属性。XATransaction/LocalTransaction/NoTransaction | |
| 连接验证 | 验证连接, 连接失败时允许服务器重新连接 | 不启用 |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该连接工厂设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |


# 编辑JMS连接工厂
点击JNDI名称,进入编辑JMS连接工厂页面。修改后,如果已被应用程序引用,需要重新加载应用程序修改的属性才能生效。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识JMS连接工厂的唯一名称,只读字段 | |
| 资源类型 | 显示该资源的资源类型,只读字段 | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 初始和最小池大小 | 在池中维护的连接的最小和初始数量 | 1连接数 |
| 最大池大小 | 可以为满足客户机请求而创建的连接的最大数量 | 250连接数 |
| 池调整大小数量 | 池空闲超时到期时要删除的连接的数量 | 2连接数 |
| 空闲超时 | 连接在池中可以保持空闲的最长时间 | 300秒 |
| 最长等待时间 | 发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 一旦失败 | 连接失败时关闭所有连接并重新连接, 否则只在使用时重新连接 | 不启用 |
| 事务处理支持 | 事务处理支持级别。以向下兼容的方式覆写资源适配器中的事务处理支持属性。XATransaction/LocalTransaction/NoTransaction | |
| 连接验证 | 验证连接, 连接失败时允许服务器重新连接 | 不启用 |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该连接工厂设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |

# 删除JMS连接工厂
选择JMS连接工厂资源,点击“删除”,确定后将会删除该JMS连接工厂资源。

# 目标资源
JMS 目标充当消息的资料档案库。

# 新建JMS目标资源
点击“新建”,进入新建JMS目标资源页面。输入对应属性,确定后完成新建,新建的JMS目标资源显示在列表中。部署应用,如 sample 中的 mdb.ear,应用程序会根据 JNDI 名称自动匹配 JMS 资源。
创建目标资源,包括以下属性:
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识JMS目标资源的唯一名称,需要与应用程序定义的一致 | |
| 资源类型 | javax.jms.Queue 或 javax.jms.Topic | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 物理目标名称 | 消息队列中介中的目标名称。如果目标不存在, 则它将在需要时自动创建 | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该目标资源设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |

# 编辑JMS目标资源
点击JNDI名称,进入编辑JMS目标资源页面。修改后,如果已被应用程序引用,需要重新加载应用程序修改的属性才能生效。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 显示JMS目标资源的唯一名称,只读字段 | |
| 资源类型 | javax.jms.Queue 或 javax.jms.Topic | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 物理目标名称 | 消息队列中介中的目标名称。如果目标不存在, 则它将在需要时自动创建 | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 为该目标资源设置其他属性 | |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |

# 删除JMS目标资源
选择JMS目标资源,点击“删除”,确定后将会删除该JMS目标资源。

# JavaMail 会话
Apusic 应用服务器包括 JavaMail API。通过 JavaMail,可以从 Java 应用程序访问网络或 Internet 上支持 Internet 消息访问协议 (IMAP)和简单邮件传输协议 (SMTP) 的邮件服务器。
使用"JavaMail 会话"页可以配置 JavaMail 会话。
对于每个 JavaMail 会话,将提供以下信息:
JNDI 名称: 标识 JavaMail 会话的唯一名称。
已启用: 如果会话已启用,则为"真";如果会话已禁用,则为"假"。
说明: JavaMail 会话的说明。
"JavaMail 会话"列表还包含以下选项:
新建: 用于创建新 JavaMail 会话的按钮。
删除: 用于删除一个或多个所选 JavaMail 会话的按钮。
启用: 用于启用一个或多个所选 JavaMail 会话的按钮。
禁用: 用于禁用一个或多个所选 JavaMail 会话的按钮。

# 新建 JavaMail会话
点击“新建”,进入新建JavaMail会话页面。输入对应属性,确定后完成新建,新建的JavaMail会话显示在列表中。部署应用后,应用程序会根据 JNDI 名称自动匹配 JavaMail会话。
基本属性有:
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 标识JavaMail会话的唯一名称,需要与应用程序定义的一致 | |
| 邮件主机 | 标识 JavaMail 会话的唯一名称,如: mail.163.com | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 默认用户 | 连接至邮件服务器时提供的用户名,如: 135******43\@163.com | |
| 默认发件人地址 | 默认用户的电子邮件地址,如: 35******43\@163.com | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 设置其他属性 | |
| 存储协议 | IMAP 或 POP3 | IMAP |
| 存储协议类 | 设置存储协议类名 com.sun.mail.imap.IMAPStore;POP3 为 com.sun.mail.pop3.POP3Store | |
| 传输协议 | 设置传输协议,默认为 smtp | |
| 传输协议类 | 设置传输协议类,默认为 com.sun.mail.smtp.SMTPTransport | |
| 调试 | 选中"调试"复选框, 为此邮件会话启用附加调试输出 (包含协议跟踪)。设置为"详细"或"更详细"以生成调试输出并将其包含在系统日志文件中 | 不启用 |
| 目标 | 该JNDI所属的服务器实例目标,部署在选中的实例目标可以连接该JNDI资源;存在多个实例或服务器集群时显示该项,可以多选 | server |


其他属性: 如果需要配置其他属性,可添加;如:
mail.smtp.ssl.trust: * mail.smtp.ssl.enable: false mail.smtp.port": 25 mail.pop3.ssl.enable": true mail.smtp.host: smtp.163.com mail.pop3.host: pop.163.com mail.smtp.auth: true mail.pop3.password: (输入密码,有授权码需要输入授权码,163 邮箱使用的是授权码) mail.smtp.password: (输入密码,有授权码需要输入授权码,163 邮箱使用的是授权码) mail.pop3.ssl.trust: * mail.pop3.port: 9951
2
3
4
5
6
7
8
9
10
11

# 编辑JavaMail会话
点击JNDI名称,进入编辑JavaMail会话页面。修改后,如果已被应用程序引用,需要重新加载应用程序修改的属性才能生效。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 显示JavaMail会话的唯一名称,只读字段 | |
| 邮件主机 | 标识 JavaMail 会话的唯一名称,如: mail.163.com | |
| 状态 | 显示资源在目标实例上的启用状态 | 启用 |
| 默认用户 | 连接至邮件服务器时提供的用户名,如: 135******43\@163.com | |
| 默认发件人地址 | 默认用户的电子邮件地址,如: 35******43\@163.com | |
| 说明 | 资源的简短说明 | |
| 其他属性 | 设置其他属性 | |
| 存储协议 | IMAP 或 POP3 | IMAP |
| 存储协议类 | 设置存储协议类名 com.sun.mail.imap.IMAPStore;POP3 为 com.sun.mail.pop3.POP3Store | |
| 传输协议 | 设置传输协议,默认为 smtp | |
| 传输协议类 | 设置传输协议类,默认为 com.sun.mail.smtp.SMTPTransport | |
| 调试 | 选中"调试"复选框, 为此邮件会话启用附加调试输出 (包含协议跟踪)。设置为"详细"或"更详细"以生成调试输出并将其包含在系统日志文件中 | 不启用 |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |

# 删除JavaMail会话
选择JavaMail会话,点击“删除”,确定后将会删除该JavaMail会话。

# 资源适配器配置
资源适配器配置提供资源适配器的配置信息。

使用"新建资源适配器配置"页可以创建新的资源适配器配置。
对于每个资源适配器配置资源,将提供以下信息:
资源适配器名称: 要配置的资源适配器的名称。
线程池 ID: 要用于资源适配器配置的线程池。
其他属性: 资源适配器的其他属性。可用属性为 ra.xml 文件中 resourceadapter-class 元素所引用类的 setter 方法的名称,该文件定义了资源适配器 JavaBeans 组件的类名。对此处定义的属性的任何修改都会覆盖 ra.xml 中的默认值。
# 并发资源
并发资源是为 Java EE 应用程序。在应用服务器中,配置并发资源使它们可供应用程序组件(如 servlet 和 ejb)使用。
# 上下文服务
上下文服务用于创建动态代理对象,这些对象捕获容器,并使应用程序能够稍后在该上下文中运行。上下文的容器将传播到执行任务的线程。默认带有 JNDI 名称为 concurrent/__defaultContextService 的上下文服务。

# 新建上下文服务
创建一个新的上下文服务,供 servlet 和 ejb 等应用程序组件使用。
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 上下文服务的 JNDI 名称;唯一值,必填 | |
| 上下文信息 | 要传播到其他线程的容器上下文。如果禁用,则忽略所选上下文。有 Classloader、JNDI、Security、WorkArea | |
| 状态 | 是否启用 | 启用 |
| 说明 | 简短描述 | |
| 其他属性 | 设置其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |

# 编辑上下文服务
可以点击上下文服务的名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 显示上下文服务的 JNDI 名称;只读 | |
| 上下文信息 | 要传播到其他线程的容器上下文。如果禁用,则忽略所选上下文。有 Classloader、JNDI、Security、WorkArea | |
| 状态 | 是否启用 | 启用 |
| 说明 | 简短描述 | |
| 其他属性 | 设置其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |

# 删除上下文服务
选择上下文服务的名称,点击“删除”将会删除该配置;删除后,该上下文服务不再工作。

# 线程工厂
应用程序使用托管线程工厂按需创建托管线程。默认带有 JNDI 名称为 concurrent/__defaultManagedThreadFactory 的托管线程工厂。
对于每个工厂 ,将提供以下信息:
- JNDI 名称: 标识 托管线程工厂的唯一名称。
- Logical JNDI Name: 该托管线程工厂的Logical JNDI Name,没有设置时会自动生成。
- 上下文信息: 该托管线程的上下文信息。
- 线程优先级: 该线程的优先级,优先加载数值小的线程工厂。
- 状态: 显示该线程工厂启用情况。
- 描述: 该线程工厂的说明。
页面中还包含以下选项:
新建: 用于创建新托管线程工厂的按钮。
删除: 用于删除一个或多个所选 托管线程工厂的按钮。
启用: 用于启用一个或多个所选 托管线程工厂的按钮。
禁用: 用于禁用一个或多个所选托管线程工厂的按钮。

# 新建托管线程工厂
创建一个新的托管线程工厂,供 servlet 和 ejb 等应用程序组件使用。
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 上下文服务的 JNDI 名称;唯一值,必填 | |
| 上下文信息 | 要传播到其他线程的容器上下文。如果禁用,则忽略所选上下文。有 Classloader、JNDI、Security、WorkArea | |
| 状态 | 是否启用 | 启用 |
| 优先级 | 设置该线程的优先级,优先加载数值小的线程工厂 | 5 |
| 说明 | 简短描述 | |
| 其他属性 | 设置其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |

# 编辑托管线程工厂
可以点击托管线程工厂JNDI名称进入编辑页面对相关属性进行编辑。

# 删除托管线程工厂
选择托管线程工厂JNDI名称,点击“删除”将会删除该配置;删除后,该托管线程工厂不再工作。

# 托管执行者服务
应用程序使用托管执行器服务异步执行提交的任务。
对于每个托管执行者服务,将提供以下信息:
- JNDI 名称: 标识托管执行者服务的唯一名称。
- **Logical JNDI Name:**该托管执行者服务的Logical JNDI Name,没有设置时会自动生成。
- **上下文信息:**该托管执行者服务的上下文信息。
- **线程优先级:**该线程的优先级,优先加载数值小的托管执行者服务。
- 状态: 显示该托管执行者服务启用情况。
- 描述: 该托管执行者服务的说明。
页面中还包含以下选项:
新建: 用于创建新托管执行者服务的按钮。
删除: 用于删除一个或多个所选托管执行者服务的按钮。
启用: 用于启用一个或多个所选托管执行者服务的按钮。
禁用: 用于禁用一个或多个所选托管执行者服务的按钮。

# 新建托管执行者服务
创建一个新的托管器服务,供 servlet 和 ejb 等应用程序组件使用。
基本属性包括:
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 托管执行者服务的 JNDI 名称;唯一值,必填 | |
| 上下文信息 | 要传播到其他线程的容器上下文。如果禁用,则忽略所选上下文。有 Classloader、JNDI、Security、WorkArea | |
| 状态 | 是否启用 | 启用 |
| 长时间执行的任务 | 是否为长时间执行的任务 | 不启用 |
| 寻找 | 在任务被认为没有响应之前可以执行的秒数 | 0秒 |
| 优先级 | 给创建的线程分配优先级,优先加载数值小的服务 | 5 |
| 说明 | 简短描述 | |
| 核心大小 | 要保存在线程池中的线程数 | 0 |
| 最大池大小 | 线程池能包含的最大的线程数 | 2147483647 |
| Keep Alive | 当线程数大于内核大小时,线程可以保持空闲的秒数 | 60秒 |
| 线程存活时间 | 在清除之前,线程池中可以保留的秒数 | 0秒 |
| 任务队列容量 | 可以存储在任务队列中等待执行的已提交任务的数量 | 2147483647 |
| URL匹配前缀 | 用于设置VIP线程池,多个 URL 需要用英文分号;隔开 | |
| 其他属性 | 设置其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |

线程池设置。
- 核心大小: 要保存在线程池中的线程数,默认为 0。
- 最大池大小: 线程池能包含的最大的线程数,默认为 2147483647。
- Keep Alive: 当线程数大于内核大小时,线程可以保持空闲的秒数,默认为 60 秒。
- 线程存活时间: 在清除之前,线程池中可以保留的秒数,默认为 0 秒。
- 任务队列容量: 可以存储在任务队列中等待执行的已提交任务的数量,默认为 2147483647。
- **URL匹配前缀:**用于设置VIP线程池,多个 URL 需要用英文分号;隔开。
- 其他属性: 如若有其他属性,可自行添加。

# 配置 VIP 线程池
可通过托管执行者服务配置 VIP 线程池。主要是解决某些请求访问特别慢,且当此类请求较多时,容易引起整个系统阻塞,影响其他功能的访问。引入 VIP 线程池后,能够对请求进行区分(根据 url),针对这些慢的资源进行隔离,从而保护系统。
在【托管执行者服务】页面点击"新建",进入新建页面,"JNDI 名称"在不冲突情况下可任意取合法值,在"线程池设置"中设置"URL 匹配前缀",例如/slow-test,多个 URL 需要用英文分号;隔开。创建成功后,应用程序上下文为/slow-test 的应用程序使用该 VIP 线程池。
注意: 修改后需要重启实例 VIP 线程池才会生效。

如示例,上下文路径设置为/slow-test,访问可查看到当前线程名称为设置的 VIP 线程池。


# 编辑托管执行者服务
可以点击托管执行者JNDI名称进入编辑页面对相关属性进行编辑。

# 删除托管执行者服务
选择托管执行者服务JNDI名称,点击“删除”将会删除该配置;删除后,该托管执行者服务不再工作。

# 周期性执行者服务
应用程序使用托管调度执行器服务在特定时间异步执行提交的任务。默认有 JNDI 名称为 concurrent/__defaultManagedScheduledExecutorService 的周期性执行者服务。
对于每个周期性执行者服务,将提供以下信息:
- JNDI 名称: 标识周期性执行者服务的唯一名称。
- **Logical JNDI Name:**该周期性执行者服务的Logical JNDI Name,没有设置时会自动生成。
- **上下文信息:**该周期性执行者服务的上下文信息。
- **线程优先级:**该线程的优先级,优先加载数值小的周期性执行者服务。
- 状态: 显示该周期性执行者服务启用情况。
- 描述: 该周期性执行者服务的说明。
页面中还包含以下选项:
新建: 用于创建新周期性执行者服务的按钮。
删除: 用于删除一个或多个所选周期性执行者服务的按钮。
启用: 用于启用一个或多个所选周期性执行者服务的按钮。
禁用: 用于禁用一个或多个所选周期性执行者服务的按钮。

# 新建周期性执行者服务
创建一个新的周期性执行者服务,供 servlet 和 ejb 等应用程序组件使用。
基本属性包括:
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 标识托管周期执行者服务的唯一名称,必填 | |
| 上下文信息 | 要传播到其他线程的容器上下文。如果禁用,则忽略所选上下文。有 Classloader、JNDI、Security、WorkArea | |
| 状态 | 是否启用 | 启用 |
| 长时间执行的任务 | 是否为长时间执行的任务 | 不启用 |
| 寻找 | 在任务被认为没有响应之前可以执行的秒数 | 0秒 |
| 优先级 | 给创建的线程分配优先级,优先加载数值小的服务 | 5 |
| 说明 | 简短描述 | |
| 核心大小 | 要保存在线程池中的线程数 | 0 |
| 最大池大小 | 线程池能包含的最大的线程数 | 2147483647 |
| Keep Alive | 当线程数大于内核大小时,线程可以保持空闲的秒数 | 60秒 |
| 线程存活时间 | 在清除之前,线程池中可以保留的秒数 | 0秒 |
| 任务队列容量 | 可以存储在任务队列中等待执行的已提交任务的数量 | 2147483647 |
| 其他属性 | 设置其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |


# 编辑周期性执行者服务
可以点击周期性执行者服务JNDI名称进入编辑页面对相关属性进行编辑。

# 删除周期性执行者服务
选择周期性执行者服务JNDI名称,点击“删除”将会删除该配置;删除后,该周期性执行者服务不再工作。

# JNDI资源
# 外部资源
外部 JNDI 资源可以访问外部 JNDI 资料档案库,如 LDAP 服务器。

使用"外部资源"页可以配置外部 JNDI 资源。
对于每个外部资源,将提供以下信息:
JNDI 名称: 标识外部资源的唯一名称。
已启用: 如果外部资源已启用,则为"真";如果外部资源已禁用,则为"假"。
资源类型: 外部资源的类型。
说明: 外部资源的说明。
"资源"表还包含以下选项:
新建: 用于创建新外部资源的按钮。
删除: 用于删除一个或多个所选外部资源的按钮。
启用: 用于启用一个或多个所选外部资源的按钮。
禁用: 用于禁用一个或多个所选外部资源的按钮。
# 创建外部资源
创建外部 JNDI 资源, 以便应用程序能够获取对存储在外部资料档案库中的资源的访问权限。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 外部 JNDI 资源名称 | |
| 资源类型 | 该外部资源的类型,可选择已有的或按照 xxx.xxx 格式输入全限定类型 (例如 javax.jms.Topic) | |
| 工厂类 | 资源的工厂类; 实现 javax.naming.spi.ObjectFactory。默认为 com.apusic.aas.resources.custom.factory.PropertiesFactory | |
| JNDI 查找 | 应用程序查找资源时所使用的名称 | |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |
# 编辑外部资源
可以点击外部资源JNDI名称进入编辑页面对相关属性进行编辑。
# 删除外部资源
选择外部资源JNDI名称,点击“删除”将会删除该配置;删除后,该外部资源不再工作。
# 定制资源
定制资源可以指定定制服务器范围资源对象工厂。

使用"定制资源"页可以配置定制 JNDI 资源。
对于每个定制资源,将提供以下信息:
JNDI 名称: 标识定制资源的唯一名称。
已启用: 如果定制资源已启用,则为"真";如果定制资源已禁用,则为"假"。
资源类型: 定制资源的类型。
说明: 定制资源的说明。
"资源"表还包含以下选项:
新建: 用于创建新定制资源的按钮。
删除: 用于删除一个或多个所选定制资源的按钮。
启用: 用于启用一个或多个所选定制资源的按钮。
禁用: 用于禁用一个或多个所选定制资源的按钮。
# 创建定制资源
创建资源, 确保已将资源引用和 EJB 引用链接至经过配置的服务器范围资源, 如 server-xml 中的定制资源和外部资源标记所定义。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 定义 JNDI 资源名称 | |
| 资源类型 | 该定制资源的类型,可选择已有的或按照 xxx.xxx 格式输入全限定类型 (例如 javax.jms.Topic) | |
| 工厂类 | 资源的工厂类; 实现 javax.naming.spi.ObjectFactory。默认为 com.apusic.aas.resources.custom.factory.PropertiesFactory | |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |
# 编辑定制资源
可以点击定制资源JNDI名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 定义 JNDI 资源名称,只读 | |
| 资源类型 | 该定制资源的类型,可选择已有的或按照 xxx.xxx 格式输入全限定类型 (例如 javax.jms.Topic) | |
| 工厂类 | 资源的工厂类; 实现 javax.naming.spi.ObjectFactory。默认为 com.apusic.aas.resources.custom.factory.PropertiesFactory | |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 所属的服务器实例目标,存在多个实例或服务器集群时显示该项,可以多选 | server |
# 删除定制资源
选择定制资源JNDI名称,点击“删除”将会删除该配置;删除后,该定制资源不再工作。
# 连接器
连接器模块 (也称为资源适配器) 为 Java 组件,允许应用程序与企业信息系统(EIS) 软件进行交互。EIS 程序包括各种类型的系统: 企业资源规划(ERP)、大型机事务处理处理、非关系数据库和消息传送系统,例如 Java 消息服务 (JMS) 等。
# 连接器资源
连接器资源是一个程序对象, 可以为应用程序提供到企业信息系统 (EIS)的连接。
对于每个连接器资源,将提供以下信息:
JNDI 名称: 标识连接器资源的唯一名称。
已启用: 如果连接器资源已启用,则为"真";如果连接器资源已禁用,则为"假"。
连接池: 该连接器资源对应的连接池。
说明: 连接器资源的说明。
"资源"表还包含以下选项:
新建: 用于创建新连接器资源的按钮。
删除: 用于删除一个或多个所选连接器资源的按钮。
启用: 用于启用一个或多个所选连接器资源的按钮。
禁用: 用于禁用一个或多个所选连接器资源的按钮。

# 新建连接器资源
使用"新建连接器资源"页可以创建新的资源适配器配置。
对于每个连接器资源,将提供以下信息:
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | 定义JNDI 名称 | |
| 连接池名称 | 新连接器资源所属的连接池 | |
| 说明 | 简单描述 | |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 |
# 编辑连接器资源
可以点击连接器资源JNDI名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| JNDI 名称 | JNDI 资源名称,只读 | |
| 连接池名称 | 新连接器资源所属的连接池 | |
| 部署顺序 | 指定服务器启动时资源的加载顺序,先加载较低的数字 | 100 |
| 说明 | 简单描述 | |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 |
# 删除连接器资源
选择连接器资源JNDI名称,点击“删除”将会删除该配置;删除后,该连接器资源不再工作。
# 连接器连接池
单击"新建"以创建新的连接器连接池。创建连接池之前, 请先部署连接器模块。连接器模块可以从应用程序页面部署。
对于每个连接器连接池,将提供以下信息:
池名称: 标识连接器连接池的唯一名称。
资源适配器: 对应的资源适配器。
连接定义: 该连接器连接池的连接定义。
说明: 连接器资源的说明。
"资源"表还包含以下选项:
新建: 用于创建新连接器连接池的按钮。
删除: 用于删除一个或多个所选连接器连接池的按钮。

# 新建连接器连接池
使用"新建连接器连接池"页可以创建新的资源适配器配置。
对于每个连接器连接池,将提供以下信息:
| 配置项 | 说明 | 默认值 |
| 名称 | 标识连接器连接池的唯一名称 | |
| 资源适配器 | 与连接器连接池关联的资源适配器 | |
| 连接定义 | 连接器连接池的连接定义。列表中的选项取决于所选的资源适配器。连接定义指明 ra.xml 文件中资源适配器的 connection-definition 元素 | |
| ping | 如果启用此选项,则在创建或重新配置过程中,将对连接池进行试通操作,以识别其属性的任何错误值并发出警告 | 不启用 |
| 说明 | 资源的简短说明 | |
| 初始和最小池大小 | 连接器连接池中连接的最小数目 | 8 |
| 事务处理支持 | 选择的事务处理支持将以向下兼容方式覆盖与此连接池关联的资源适配器中的事务处理支持属性。也就是说,它支持的事务处理级别可以比资源适配器中指定的事务处理级别低或与其相同,但不能指定更高的级别 | |
| 最大池大小 | 连接器连接池中连接的最大数目 | 32 |
| 池调整大小数量 | 池空闲超时到期时要删除的连接的数量 | 2 |
| 空闲超时 | 连接在池中可以保持空闲的最长时间 | 300秒 |
| 最长等待时间 | 发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 一旦失败 | 连接失败时关闭所有连接并重新连接, 否则只在使用时重新连接 | 不启用 |
| 事务处理支持 | 事务处理支持级别。以向下兼容的方式覆写资源适配器中的事务处理支持属性。XATransaction/LocalTransaction/NoTransaction | |
| 连接验证 | 验证连接, 连接失败时允许服务器重新连接 | 不启用 |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 |
# 编辑连接器连接池
可以点击连接器连接池名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| 池名称 | 标识连接器连接池的唯一名称,只读 | |
| 资源适配器 | 与连接器连接池关联的资源适配器 | |
| 连接定义 | 连接器连接池的连接定义。列表中的选项取决于所选的资源适配器。连接定义指明 ra.xml 文件中资源适配器的 connection-definition 元素 | |
| ping | 如果启用此选项,则在创建或重新配置过程中,将对连接池进行试通操作,以识别其属性的任何错误值并发出警告 | 不启用 |
| 说明 | 资源的简短说明 | |
| 初始和最小池大小 | 连接器连接池中连接的最小数目 | 8 |
| 事务处理支持 | 选择的事务处理支持将以向下兼容方式覆盖与此连接池关联的资源适配器中的事务处理支持属性。也就是说,它支持的事务处理级别可以比资源适配器中指定的事务处理级别低或与其相同,但不能指定更高的级别 | |
| 最大池大小 | 连接器连接池中连接的最大数目 | 32 |
| 池调整大小数量 | 池空闲超时到期时要删除的连接的数量 | 2 |
| 空闲超时 | 连接在池中可以保持空闲的最长时间 | 300秒 |
| 最长等待时间 | 发送连接超时之前调用方等待的时间 | 60000毫秒 |
| 一旦失败 | 连接失败时关闭所有连接并重新连接, 否则只在使用时重新连接 | 不启用 |
| 事务处理支持 | 事务处理支持级别。以向下兼容的方式覆写资源适配器中的事务处理支持属性。XATransaction/LocalTransaction/NoTransaction | |
| 连接验证 | 验证连接, 连接失败时允许服务器重新连接 | 不启用 |
| 状态 | 是否启用 | |
| 其他属性 | 添加其他属性 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 |
# 删除连接器连接池
选择连接器连接池名称,点击“删除”将会删除该配置;删除后,该连接器连接池不再工作。
# 管理对象资源
受管理对象资源提供了专门的功能,该功能由已部署连接器模块的资源适配器定义。
对于每个管理对象资源,将提供以下信息:
- JNDI 名称: 标识管理对象资源的唯一名称。
- 已启用: 如果管理对象资源已启用,则为"真";如果管理对象资源已禁用,则为"假"。
- **状态:**该资源被目标实例引用情况
- 资源类型: 该管理对象资源对应的资源类型。
- 说明: 管理对象资源的说明。
"资源"表还包含以下选项:
新建: 用于创建新管理对象资源的按钮。
删除: 用于删除一个或多个所选管理对象资源的按钮。
启用: 用于启用一个或多个所选管理对象资源的按钮。
禁用: 用于禁用一个或多个所选管理对象资源的按钮。

# 新建对象资源
使用"新建管理对象资源"页可以创建新的管理对象资源。要创建新的管理对象资源, 请指定唯一的 JNDI 名称, 再选择资源适配器, 然后选择资源类型和 (可选的) 类名
对于每个管理对象资源资源,将提供以下信息:
| 配置项 | 说明 | 默认值 |
| 名称 | 标识受管理对象资源的唯一名称 | |
| 资源适配器 | 受管理对象资源的资源适配器,从已部署的资源适配器 (连接器模块) 列表中选择 | |
| 资源类型 | 受管理对象资源的 Java 类型 (例如 javax.jms.Topic) | |
| 类名 | 与资源类型关联的实现类名 | |
| 说明 | 资源的简短说明 | |
| 状态 | 是否启用 | |
| 其他属性 | 受管理对象资源的其他属性。可用属性取决于连接器连接池的资源适配器。可以使用在此表中指定的名称/值对,覆盖由资源适配器提供方定义的属性默认值 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 |
# 编辑对象资源
可以点击对象资源名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| JNDI名称 | 标识受管理对象资源的唯一名称,只读 | |
| 资源适配器 | 受管理对象资源的资源适配器,从已部署的资源适配器 (连接器模块) 列表中选择 | |
| 资源类型 | 受管理对象资源的 Java 类型 (例如 javax.jms.Topic) | |
| 类名 | 与资源类型关联的实现类名 | |
| 部署顺序 | 指定服务器启动时资源的加载顺序。先加载较低的数字 | 100 |
| 说明 | 资源的简短说明 | |
| 状态 | 是否启用 | |
| 其他属性 | 受管理对象资源的其他属性。可用属性取决于连接器连接池的资源适配器。可以使用在此表中指定的名称/值对,覆盖由资源适配器提供方定义的属性默认值 | |
| 目标 | 连接器资源的集群和独立实例。使用"添加"和"全部添加"按钮将所需目标移动到"所选目标"列。使用"删除"和"全部删除"按钮将任何不需要的目标移动到"可用目标"列。仅当在域中已创建集群或独立实例时才会显示此选项 | server |
# 删除对象资源
选择对象资源JNDI名称,点击“删除”将会删除该配置;删除后,该对象资源不再工作。
# 工作安全映射
工作安全映射将资源适配器 EIS 主用户或 EIS 用户组提交的工作的调用方身份映射到 Apusic Server 安全域中的适当主用户或用户组。

# 新建工作安全映射
使用"新建工作安全映射"页可以创建新的资源适配器配置。
对于每个工作安全映射资源,将提供以下信息:
| 配置项 | 说明 | 默认值 |
| 安全映射名称 | 工作安全映射的名称 | |
| 组 | 如果选中"组映射"单选按钮,则文本字段必须指定每个后端 EIS 用户组与在 Apusic Server 安全域中定义的相应用户组的映射。可使用逗号分隔列表指定多个映射 | |
| 主用户 | 如果选中"主用户映射"单选按钮,则文本字段必须指定每个后端 EIS 主用户与在 Apusic Server 安全域中定义的相应主用户的映射。可使用逗号分隔列表指定多个映射 | |
| 资源适配器 | EIS 的资源适配器 | |
| 说明 | 资源的简短说明 |
# 编辑工作安全映射
可以点击安全映射名称进入编辑页面对相关属性进行编辑。
| 配置项 | 说明 | 默认值 |
| 安全映射名称 | 工作安全映射的名称,只读 | |
| 组 | 如果选中"组映射"单选按钮,则文本字段必须指定每个后端 EIS 用户组与在 Apusic Server 安全域中定义的相应用户组的映射。可使用逗号分隔列表指定多个映射 | |
| 主用户 | 如果选中"主用户映射"单选按钮,则文本字段必须指定每个后端 EIS 主用户与在 Apusic Server 安全域中定义的相应主用户的映射。可使用逗号分隔列表指定多个映射 | |
| 资源适配器 | EIS 的资源适配器 | |
| 部署顺序 | 指定服务器启动时资源的加载顺序。先加载较低的数字 | 100 |
| 说明 | 资源的简短说明 |
# 删除工作安全映射
选择安全映射名称,点击“删除”将会删除该配置;删除后,该资源不再工作。
# OSGI Bundle储存库
该模块主要用于管理OSGI Bundle,部署使用 Java EE 和 OSGi 技术的模块应用程序需要使用该项。OSGI Bundle资源上传后,默认保存到${APUSIC_HOME}/domains/mydomain/lib/bundle-repository/。

# 添加OSGIBundle资源
点击“新建”,进入“添加Bundle”页面,可上传Bundle文件,限制文件类型为.jar或.cba。

添加Bundle文件之后,可以部署相关应用程序。在应用程序的【模块信息】中可查看模块信息,当模块有新版本时,可以启用新版本;同时可以“启用”或“禁用”拓展模块,设置完成后,点击“保存”即可生效

# 删除OSGIBundle资源
选择Bundle名称,点击“删除”将会删除该资源;如果该资源已被引用,需要取消关联才能删除。

# 熔断限流功能
熔断限流功能主要用于对高并发流量进行熔断、限流、整形,以防止流量过大压垮系统。
在domain.xml根元素下配置规则,总共有三种类型的规则:
- flow-rule: 限流规则
- degrade-rule: 熔断规则
- system-rule: 系统规则
配置样例如下:
<domain>
<flow-controls>
<system-rule cpu-usage="0.2" resource-name="/jsp/index.jsp" />
</flow-controls>
</domain>
2
3
4
5
# 规则介绍
flow-rule: 限流规则,配置之后对指定的应用URL进行限流。主要属性有:
| 配置项 | 说明 | 默认值 |
| resource-name | 必填项。配置需要限流的url,以/开头,需要带上context path;例如:/jsp/index.jsp,其中jsp是context path | |
| grade | 值为qps/thread;是根据qps进行限流还是根据线程数限流 | thread |
| count | 必填项。qps值或thread 值 | |
| control-behavior | 值为reject/ warm_up/ rate_limiter/ warm_up_rate_limiter 1、reject表示超过限额就直接拒绝报错; 2、warm-up:需要配合warm-up-period-sec参数一起使用:在该参数指定的时间内慢慢上升至指定的tps; 3、rate-limiter:需要结合max-queue-time-ms一起使用:按指定的qps匀速通过流量,超过qps的部分进入队列排队,排队时间超过max-queue-time-ms指定的时间才报错; 4、warm_up_rate_limiter:结合了warm-up和rate-limiter两者的功能 | reject |
| max-queue-time-ms | 排队时间,单位为毫秒 | |
| warm-up-period-sec | 预热时间,单位为秒 |
| 配置项 | 说明 | 默认值 |
| resource-name | 必填项。配置需要限流的url,以/开头,需要带上context path;例如:/jsp/index.jsp,其中jsp是context path | |
| grade | 值为rt/exception_ratio/exception_count 1、rt:表示根据慢请求比例进行熔断,慢请求的界定由count指定,单位是ms,慢请求比例由slow-ratio-threshold参数指定; 2、exception_ratio:异常比例,取值范围0到1 3、exception_count:异常数,都是由count指定 | rt |
| count | 必填项。取值的含义依赖于grade | |
| time-window-seconds | 熔断时长,这段时间内所有请求都会失败,超过这个时间后,会允许部分请求通过,然后根据这些请求的响应结果来决定是否解除熔断或继续熔断 | |
| min-request-amount | 最小请求数,默认值是5。这个值以内的请求通通放行 | 5 |
| slow-ratio-threshold | 慢请求比例,取值范围0到1 | 1 |
| stat-interval-ms | 统计时间段 | 1000ms |
system-rule: 系统规则,主要用于自适应限流。主要属性有:
| 配置项 | 说明 | 默认值 |
| resource-name | 必填项。配置需要限流的url,以/开头,需要带上context path;例如:/jsp/index.jsp,其中jsp是context path | |
| system-load | 系统负载,对应于操作系统top指令的load指标;当系统负载达到设置的值时会对设置的URL进行限流。如果系统负载超过指定的值则还要判断currentThread > maxSuccessQps * minRt/ 1000才进行限流,其中maxSuccessQps表示曾经qps的最大值,minRt表示曾经最小的响应时间,这两者的乘积表示系统理论上的最大负载 | |
| cpu-usage | CPU使用率,取值范围0到1;当CPU使用率超过设置的值时会对设置的URL进行限流 | |
| qps | qps数;当qps超过设置的值时会对设置的URL进行限流 | |
| average-rt-ms | 平均响应时间;当平均响应时间超过设置的值时会对设置的URL进行限流 | |
| max-threads | 最大线程数;当线程数超过设置的值时会对设置的URL进行限流 | 5 |
| slow-ratio-threshold | 慢请求比例,取值范围0到1;当满请求的比例超过设置的值时会对设置的URL进行限流 | 1 |
| stat-interval-ms | 统计时间段 | 1000ms |
# 配置方法
在domain.xml根元素下配置规则,示例如下:
<domain>
<flow-controls>
##对URL/test/index.jsp根据qps进行限流,当qps值超过100,URL开始限流##
<flow-rule grade="qps" count="100" resource-name="/test/index.jsp" control-behavior="reject"></flow-rule>
##对URL/test1/index.jsp根据qps进行限流,当预热时间超过10秒后qps值超过100,URL开始限流##
<flow-rule warm-up-period-sec="10" grade="qps" count="100" resource-name="/test1/index.jsp" control-behavior="warm_up"></flow-rule>
##对URL/jsp/index.jsp根据线程数进行限流,当预热时间超过10秒后qps值超过100,URL开始限流##
<flow-rule warm-up-period-sec="10" grade="thread" count="100" resource-name="/jsp/index.jsp" control-behavior="warm_up"></flow-rule>
##对URL/test1/testel.jsp按指定的qps匀速通过流量,超过qps的部分进入队列排队,排队时间超过max-queue-time-ms指定的时间5ms才报错##
<flow-rule warm-up-period-sec="10" max-queue-time-ms="5" grade="qps" count="100" resource-name="/test1/testel.jsp" control-behavior="warm_up_rate_limiter"></flow-rule>
##对URL/test1/testException.jsp当预热时间超过10秒后,按指定的qps匀速通过流量,超过qps的部分进入队列排队,排队时间超过max-queue-time-ms指定的时间5ms才报错##
<flow-rule max-queue-time-ms="5" grade="qps" count="100" resource-name="/test1/testException.jsp" control-behavior="rate_limiter"></flow-rule>
##对URL/jsp/degrade.jsp根据慢请求进行熔断,当请求响应时间超过200ms定义为慢请求,当慢请求比例超过0.2时开始对URL进行熔断,熔断时长为10秒,10秒后释放请求,要是慢请求比例还超过比例,继续熔断##
<degrade-rule slow-ratio-threshold="0.2" time-window-seconds="10" grade="rt" count="200" resource-name="/jsp/degrade.jsp"></degrade-rule>
##对URL/test/testException.jsp设置系统规则,如果qps、响应时间、线程数、cpu使用率超过指定的值则进行限流,如果系统负载超过指定的值则还要判断currentThread > maxSuccessQps * minRt/ 1000才进行限流,其中maxSuccessQps表示曾经qps的最大值,minRt表示曾经最小的响应时间,这两者的乘积表示系统理论上的最大负载##
<system-rule cpu-usage="0.2" system-load="30" qps="100" average-rt-ms="6000" max-threads="300" resource-name="/test/testException.jsp" />
</flow-controls>
</domain>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 配置管理
系统管理员登录系统,使用"配置管理"页可管理配置并查看使用这些配置的独立服务器实例和集群。
default-config 配置由 Apusic 应用服务器预定义。创建域时,将自动为域管理服务器 (DAS) 创建 server-config 配置。

# 管理服务
# 配置 JMX 连接器
使用"编辑 JMX 连接器"页可以编辑符合 JSR 160 标准的 JMX 连接器,默认关闭,修改后需要重启实例使配置生效。

"编辑 JMX 连接器"页包含以下选项:
| 配置项 | 说明 | 默认值 |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| 名称 | JMX 连接器名称。这是只读字段 | |
| JMX 协议 | 此 JMX 连接器支持的协议的名称。这是只读字段 | |
| JMXServiceURL | JMX 服务 URL。这是只读字段 | |
| 是否启用 | 是否开启JMX 服务,修改需要重启AAS | 关闭 |
| 安全性 | 如果选中"已启用"复选框,则将对 JMX 通信进行加密。默认情况下禁用此选项 | 不启用 |
| 地址 | JMX 连接器服务器存根在其中注册的命名服务的 IP 地址。这不是进行实际 JMX 通信的服务器套接字的端口。这是启动 RMI 注册表的网络接口的地址。如果系统有多个网络接口,请修改此值,以便仅选择某个特定的接口。设置后,结合端口值,可以使用 Jconsole 连接。默认值为 0.0.0.0。修改后建议重启实例使其生效 | 0.0.0.0 |
| 端口 | 命名服务 (RMI 注册表) 监听 RMI 客户机连接的端口号。此命名服务的唯一用途是下载 RMI 存根。如果默认端口已占用,则使用空闲端口。合法值为 1 到 65535。在 UNIX 系统上,创建用于监听 1 到 1024 端口的套接字需要超级用户权限。 | 8686 |
| 安全域名称 | 代表特殊管理领域的名称。所有验证均由此领域处理 | admin-realm |
| 其他属性 | JMX 连接器的其他属性。默认情况下,已指定若干属性 |
# 配置 SSL
使用 SSL 页可以修改 JMX 连接器的 SSL 设置。
只有在"编辑 JMX 连接器"页上为 JMX 连接器启用了安全性时,此页上的设置才有意义。
SSL 页包含以下选项:
| 配置项 | 说明 | 默认值 |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| 开启国密 | 需要配置国密证书时才开启该项 | 不启用 |
| SSL3 | 如果选中此复选框,则将为 JMX 连接器启用 SSL3 协议 | 不启用 |
| TLS | 如果选中此复选框,则将为 JMX 连接器启用 TLS 协议 | 启用 |
| TLS1.1 | 如果选中此复选框,则将为 JMX 连接器启用 TLS1.1 协议 | 启用 |
| TLS1.2 | 如果选中此复选框,则将为 JMX 连接器启用 TLS 1.2协议 | 启用 |
| 客户机验证 | 如果选中此复选框,则客户机在每次请求时必须向服务器表明自己的身份 | 不启用 |
| 证书昵称 | 证书数据库或 PKCS#11 标记中的服务器证书昵称。在证书中,名称格式为 tokenname:nickname。在此属性中包含名称的 tokenname:部分是可选的 | kaas |
| 密钥库 | 密钥库文件的名称 (${com.apusic.aas.instanceRoot}/config/keystore.jks 或 config/keystore.jks) | |
| 信任算法 | 要用于证书路径验证的信任管理算法的名称 (例如,PKIX) | |
| 最大证书长度 | 证书路径中可以存在的非自发行中间证书的最大数目。只有在"信任算法"字段设置为 PKIX 时,才会使用此字段。如果值为 0,则表示路径只能包含单个证书。如果值为 -1,则表示路径长度不受限制 (没有最大长度)。如果设置小于 -1 的值,则会导致抛出异常错误。 | 5 |
| 信任存储 | 信任存储文件的名称 (例如, ${com.apusic.aas.instanceRoot}/config/cacerts.jks 或 config/cacerts.jks) | |
| 信任存储密码 | 信任存储文件对应的密码 | |
| 密码套件 | 可以在其中添加或删除密码套件的区域。如果不添加任何密码套件,则将使用所有密码套件 |

# JVM选项
使用【JVM 选项】页可以指定运行 Apusic 应用服务器的 Java 应用程序启动器(Java) 的选项。-D 选项用于指定特定于 Apusic 应用服务器的属性。
默认存储位置为 domain.xml。
<configs>
<config name="server-config">
<jvm-options></jvm-options>
</config>
</configs>
2
3
4
5
# JVM 常规设置
Java 虚拟机 (JVM) 使 Java 字节代码可以在物理计算机上运行。调整 JVM 设置可以提高性能和避免出现内存分配错误。
Java 虚拟机包含在 Java Platform, Standard Edition (Java SE 平台)中,该平台是 Apusic 应用服务器所需要的。不正确的 JVM 设置将导致服务器无法运行,因此在更改这些设置时应当谨慎。
注意: 术语"Java 虚拟机"和"JVM"表示用于 Java 平台的虚拟机。
"JVM 常规设置"页包含以下选项:
| 配置项 | 说明 | 默认值 |
| 加载默认值 | 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改 | |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| Java 主目录 | Java SE 软件 (该软件是运行 Apusic 应用服务器所需的软件) 的安装目录的名称 | ${com.apusic.aas.javaRoot} |
| Javac 选项 | Java 编程语言编译器的命令行选项。部署 Enterprise JavaBeans (EJB) 组件后,Apusic 应用服务器将运行编译器 | |
| 调试 | 使用 Java 平台调试器体系结构 (JPDA) 启用调试。勾选,重启时以调试模式启动 | 不启用 |
| 调试选项 | 指定启用调试时传递到 JVM 的 JPDA 选项。默认的调试端口为8000;如果无法连接实际 IP,在"address"中添加 IP,如 address=172.20.140.40:8000 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=172.20.140.40:8000 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 |
| RMI 编译选项 | rmi 编译器的命令行选项。部署 EJB 组件后,Apusic 应用服务器将运行 rmi 编译器 | -iiop -poa -alwaysgenerate -keepgenerated -g |
| 字节码预处理程序 | 用于字节码预处理的类的名称。使用逗号分隔类名 | |
| JVM其他属性 | JVM 的其他属性 |

# JVM 路径设置
使用"JVM 路径设置"页可以配置本机库路径。以下所有路径连接起来组成本机库路径:
本机库路径前缀
服务器的本机库路径 (即 as-install/lib)。
64 位本机库目录 (如果适用)。
用于启动 Apusic 应用服务器的 JVM 的 java.library.path 变量值(该值在各种操作系统中有所不同)。
在"JVM 分析器设置"页上指定的任何路径 (如果启用了分析器)。
本机库路径后缀。

# JVM 选项
使用"JVM 选项"页可以指定运行 Apusic 应用服务器的 Java 应用程序启动器(Java) 的选项。-D 选项用于指定特定于 Apusic 应用服务器的属性。
要修改选项,请编辑该选项的"值"字段。
要添加选项,请单击"添加 JVM 选项"按钮。在显示的空白行中,在"值"字段中键入选项信息。
如果选项信息包含一个或多个空格,请将整个字符串括在双引号中。
要删除选项,请选中要删除的选项的"值"字段左侧的复选框,然后再单击"删除"。
要设置"垃圾回收器",点击垃圾回收器的选项,保存,即可设置"垃圾回收器"。如果需要修改“垃圾回收器”,需要先删除原来的,再选择新的。
注意: 修改 JVM 选项需要重启实例才能生效。
| 配置项 | 说明 | 默认值 |
| -Djava.awt.headless=true | 激活 headless 模式。在系统可能缺少显示设备、键盘或鼠标这些外设的情况下可以使用该模式 | |
| -Djdk.corba.allowOutputStreamSubclass=true | 可以将这个内容设为 true,以确保能建立 org.omg.CORBA_2_3.portable.OutputStream 的子类别 | |
| -Djdk.tls.rejectClientInitiatedRenegotiation=true | 设置重协商服务 | ${com.apusic.aas.javaRoot} |
| -Djavax.xml.accessExternalSchema=all | 设置访问限制 | |
| -Djavax.management.builder.initial=com.apusic.enterprise.v10.admin.AppServerMBeanServerBuilder | 设置 MBeanbuilder | |
| -XX:+UnlockDiagnosticVMOptions | 打开诊断 VMOptions | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 |
| -Djava.security.policy=${com.apusic.aas.instanceRoot}/config/server.policy | 指定安全策略文件目录 | |
| -Djava.security.auth.login.config=${com.apusic.aas.instanceRoot}/config/login.conf | 设置登录配置文件 | |
| -Dcom.sun.enterprise.security.httpsOutboundKeyAlias=kaas | 设置证书别名 | |
| -Djava.net.preferIPv4Stack=true | 允许 IPv4 堆栈 | |
| -Xmx1024m | 设置最大内存 | |
| -Xms526m | 设置最小内存 | |
| -Djavax.net.ssl.keyStore=${com.apusic.aas.instanceRoot}/config/keystore.jks | 设置 ssl 的 keyStore 文件路径 | |
| -Djavax.net.ssl.trustStore=${com.apusic.aas.instanceRoot}/config/cacerts.jks | 设置 ssl 证书位置 | |
| -Djdbc.drivers=org.apache.derby.jdbc.ClientDriver | 指定数据库驱动包 | |
| -DANTLR_USE_DIRECT_CLASS_LOADING=true | 设置直接类加载 | |
| -Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory | 设置环境工厂类 | |
| -Dcom.apusic.aas.additionalOSGiBundlesToStart=org.apache.felix.shell,org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.apache.felix.gogo.command,org.apache.felix.shell.remote,org.apache.felix.fileinstall | 设置启动的 bundles | |
| -Dosgi.shell.telnet.port=6866 | telnet 端口 | |
| -Dosgi.shell.telnet.maxconn=1 | 设置 telnet 最大连接数 | |
| -Dosgi.shell.telnet.ip=127.0.0.1 | 设置TelnetIP | |
| -Dfelix.fileinstall.dir=${com.apusic.aas.installRoot}/modules/autostart/ | 指定一个目录来安装和启动第一次放置在那里的捆绑包 | |
| -Dfelix.fileinstall.poll=5000 | 扫描felix.fileinstall.dir时间间隔 | |
| -Dfelix.fileinstall.log.level=2 | 日志级别 | |
| -Dfelix.fileinstall.bundles.new.start=true | 新建启动 | |
| -Dfelix.fileinstall.bundles.startTransient=true | 开启事务 | |
| -Dfelix.fileinstall.disableConfigSave=false | 设置配置持久化 | |
| -XX:NewRatio=2 | 设置新生代和老年代的比值 | |
| -Dcom.ctc.wstx.returnNullForDefaultNamespace=true | 为默认名称空间返回 Null | |
| -Daas.longrunrequest.threshold=60 | 定义长线程时间为 60 | |
| -Dapusic.http.getHostFromNameService.enabled=true | 开启获取客户端的域名 | |
| -Dcom.apusic.security.ssl.EnableGMTLS=false | 开启国密证书验证 | |
| -Dapusic.admin.useIp.enabled=true | 设置通过IP通讯 | |
| -DAPUSIC_DISABLE_CONSOLE_LOG=true | 设置是否关闭启动时输出日志,默认关闭 | |
| -Dapusic.http.errorpage.custom.enabled=true | 开启自定义错误页面 | |
| -Dapusic.http.errorpage.custom.file=/opt/ApusicAS/error.html | 设置指定返回错误页面 | |
| -Djava.security.egd=file:/dev/urandom | 设置处理随机数文件位置 | |
| -Dcom.apusic.lookupFromJars.disabled=true | 设置关闭jar包的META-INF/resources目录资源扫描 | |
| -Dapusic.servlet.class.loader.not.found.cache.threshold=5 | 指定多次查找不到类时才抛出ClassNotFoundException的次数,默认值为0 |

垃圾回收器
Parallel(并行)收集器
-XX:+UseParallelGC
-XX:+UseParallelOldGC
G1(并发)收集器
-XX:+UseG1GC
Serial(串行)收集器
-XX:+UseSerialGC
CMS(并发)收集器
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
# JVM 分析器设置
分析器工具可生成用于分析性能和识别潜在瓶颈的数据。

# 线程池
使用"线程池"页可以配置线程池信息。
使用线程池可将服务限制到特定数量的并发线程。
默认情况下,在第一次安装 Apusic 应用服务器 时,存在三个线程池。名为 http-thread-pool 的线程池配置为【网络监听程序】http-listener-1、http-listener-2 使用;名为 thread-pool-1 的线程池则配置为供 ORB 用于处理 RMI/IIOP 请求。admin-thread-pool 为【网络监听程序】admin-listener 提供配置。可以根据需要创建一个具有不同设置的线程池,以供特定类型的应用程序和特定的硬件系统使用,或者调节默认线程池以满足您的需求。
Java 虚拟机 (JVM) 可以支持一次执行多个线程。为了提高性能,Apusic 应用服务器维护一个或多个线程池。可以将特定线程池分配至特定服务。
对于每个线程池,将提供以下信息:
- 线程池 ID: name,线程池名称。
- 实现方式: 该线程池的实现方式。
- 最大队列大小: max-queue-size,在有线程可用来处理消息之前,可以排队的最大消息数。-1 值表示队列大小没有限制。当“实现方式”为“默认”时需要设置。
- 并发数: 执行并发任务的线程数。当“实现方式”为“默认”时设置。
- 最大线程池大小: max-thread-pool-size,线程池中线程的最大数目。
- 最小线程池大小: min-thread-pool-size,线程池中线程的最小数目。这些线程是在对线程池进行实例化时创建的。
- 空闲线程超时: idle-thread-timeout-seconds,从池中删除空闲线程之前经过的时间(秒)。
- 线程优先级: 设置线程的优先级别,数字越小,优先加载。
"线程池"表还包含以下选项:
新建: 用于创建新线程池。
删除: 用于删除一个或多个所选线程池。非必要,不要删除默认的三个线程池信息。
<thread-pools>
<thread-pool idle-thread-timeout-seconds="900" name="admin-thread-pool" min-thread-pool-size="5" max-queue-size="10" max-thread-pool-size="50"></thread-pool>
<thread-pool name="http-thread-pool" max-thread-pool-size="250"></thread-pool>
<thread-pool name="thread-pool-1" max-thread-pool-size="200"></thread-pool>
</thread-pools>
2
3
4
5

# 新建线程池
点击"新建",进入新建线程池页面。
| 配置项 | 说明 | 默认值 |
| 名称 | name,线程池名称。唯一值,且不能有中文 | |
| 实现方式 | 设置实现线程池的类的名称。VirtualThreadExecutorService需在JDK19及以上版本环境使用 | 默认 |
| 最大队列大小 | max-queue-size,在有线程可用来处理消息之前,可以排队的最大消息数。-1 值表示队列大小没有限制。当“实现方式”为“默认”时设置 | 4096 |
| 并发数(虚拟线程) | 设置并发执行任务的线程数,当“实现方式”为“虚拟线程”时设置 | 4 |
| 最大线程池大小 | max-thread-pool-size,线程池中线程的最大数目 | 5 |
| 最小线程池大小 | min-thread-pool-size,线程池中线程的最小数目 | 2 |
| 空闲线程超时 | idle-thread-timeout-seconds,从池中删除空闲线程之前经过的时间 (秒) | 900秒 |
| 线程优先级 | 设置线程的优先级别,数字越小,优先加载 |

# 编辑线程池
点击线程池名称,如 http-thread-pool,进入编辑线程池页面。修改线程池信息之后点击"保存",属性会实时生效。
| 配置项 | 说明 | 默认值 |
| 名称 | name,线程池名称。只读字段 | admin-thread-pool http-thread-pool thread-pool-1 |
| 实现方式 | 设置实现线程池的类的名称。VirtualThreadExecutorService需在JDK19及以上版本环境使用 | 默认 |
| 最大队列大小 | max-queue-size,在有线程可用来处理消息之前,可以排队的最大消息数。-1 值表示队列大小没有限制 | admin-thread-pool:64 http-thread-pool:4096 thread-pool-1:4096 |
| 并发数(虚拟线程) | 设置并发执行任务的线程数,当“实现方式”为“虚拟线程”时设置 | 4 |
| 最大线程池大小 | max-thread-pool-size,线程池中线程的最大数目 | admin-thread-pool:16 http-thread-pool:250 thread-pool-1:200 |
| 最小线程池大小 | min-thread-pool-size,线程池中线程的最小数目 | admin-thread-pool:5 http-thread-pool:5 thread-pool-1:5 |
| 空闲线程超时 | idle-thread-timeout-seconds,从池中删除空闲线程之前经过的时间 (秒) | 900秒 |
| 线程优先级 | 设置线程的优先级别,数字越小,优先加载 |

# 删除线程池
选择线程池名称,点击“删除”将可删除该线程池。如果该线程池被引用,需要解除引用才能删除。

# HTTP 服务
# HTTP 服务
使用"HTTP 服务"页可以指定 Web 应用程序的常规访问日志策略。
HTTP 服务提供各种工具,可用于部署 Web 应用程序并使得部署的 Web 应用程序可被 HTTP 客户机访问;此外,还提供虚拟服务器、线程池和网络配置功能。
Apusic 应用服务器使用"HTTP 服务访问日志"为虚拟服务器的访问日志启用和配置滚动。这些日志位于${DOMAIN_HOME}/logs/access 目录并且按以下方式命名: virtual_server_name_access_log.yyyyMMdd-HHhmmmsss.txt。
"HTTP 服务"页包含以下选项:
| 配置项 | 说明 | 默认值 |
| 加载默认值 | 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改 | |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| SSO | 单点登录(SingleSignOn,SSO), 确定在默认情况下,是否为此服务器上针对同一领域配置的所有虚拟服务器上的所有 Web 应用程序启用单点登录。如果未启用此选项,则在默认情况下禁用所有虚拟服务器的单点登录,用户必须在使用每台虚拟服务器上的每个应用程序时都分别进行验证。可以覆盖单台虚拟服务器的此项设置。可以启用或禁用 SSO | 不启用 |
| 访问日志记录 | 如果选中此选项,则会对所有未指定此属性的虚拟服务器子元素启用访问日志记录。如果未选中此项,则对所有未指定此属性的虚拟服务器子元素禁用访问日志记录。默认情况下禁用此选项。开启后会生成${DOMAIN_HOME}/logs/access/virtual_server_name_access_log.yyyyMMdd-HHhmmmsss.txt。日志文件更新会受"写入间隔"时间影响 | 不启用 |
| 滚动 | 如果选中此选项,达到设置的滚动条件后将启用日志文件滚动 | 启用 |
| 滚动策略 | 根据时间/文件大小进行滚动 | 时间 |
| 滚动间隔 | 访问日志的滚动之间间隔的分钟数。仅当滚动策略为”时间“时,此字段才有效 | 1,440 分钟 (24 小时) |
| 文件滚动限制 | 当达到文件大小限制时滚动日志文件; 最旧的日志将被删除以便为新日志腾出空间。仅当滚动策略为“文件” 时,此字段才有效 | 2MB |
| 最大文件数 | 要保留的最大滚动访问日志文件数。负值表示文件数不受限制 | -1 |
| 缓冲区大小 | 访问日志缓冲区的大小 (字节),或者是小于或等于 0 的值(对于未缓冲的访问日志),最小为1024 | 32768字节 |
| 写入间隔 | 两次写入 (更新) 访问日志之间的时间间隔。如果值为 0, 则表示始终写入缓冲区,待缓冲区写满才会写入到日志记录文件中 | 300秒 |
| 日志压缩时间 | 每天进行访问日志压缩的时间点。格式为00:00 | 00:03 |
| 最大压缩文件数 | 要保留的访问日志压缩文件的最大数目,输入0保留所有的压缩日志文件 | 10 |
| 日志压缩路径 | 指定每天进行日志压缩生成的压缩文件路径,修改该路径时需确保有授权 | ${com.apusic.aas.instanceRoot}/logs/access |
| 格式 | 访问日志文件的全局格式 | %client.name% %auth-user-name% %datetime% %request% %status% %response.length% |
| 其他属性 | HTTP服务的其他属性 |

# HTTP 监听程序
使用"HTTP 监听程序"页可以配置 HTTP 监听程序。
HTTP 监听程序是一种网络监听程序。要访问高级功能,可以使用"网络监听程序"页编辑 HTTP 监听程序。
默认情况下,首次安装 Apusic 应用服务器时,存在三个 HTTP 监听程序,名称为 admin-listener、http-listener1 和 http-listener2。
对于每个 HTTP 监听程序,将提供以下信息:
| 配置项 | 说明 | 默认值 |
| 名称 | HTTP 监听程序的名称 | admin-listener http-listener-1 http-listener-2 |
| 端口号 | HTTP 监听程序监听的端口号 | server默认值如下: admin-listener:6848 http-listener-1:6888 http-listener-2:6887 |
| 地址 | HTTP 监听程序使用的 IP 地址 | server默认值0.0.0.0 |
| 已启用 | 如果 HTTP 监听程序已启用,则为真;如果 HTTP 监听程序未启用,则为假 | true |
"HTTP 监听程序"表还包含以下选项:
- 新建: 用于创建新 HTTP 监听程序。
- 删除: 用于删除一个或多个所选 HTTP 监听程序。

# 新建HTTP监听程序
点击“新建”,进入 HTTP 监听程序新建页面。输入对应属性,可创建HTTP监听程序。
包括以下属性:
| 配置项 | 说明 | 默认值 |
| 名称 | 定义HTTP 监听程序的名称 | |
| 端口号 | port;定义网络监听程序监听的端口 | |
| 地址 | HTTP 监听程序使用的 IP 地址 | server默认值0.0.0.0 |
| 状态 | 网络监听程序的状态。监听程序可能已启用或已禁用 | 启用 |
| 默认虚拟服务器 | default-virtual-server;使用"虚拟服务器"页面定义新的虚拟服务器 | server |
| 线程池 | 选择与网络监听程序关联的线程池。admin-listener 默认为 admin-thread-pool,http-listener-1 默认为 http-thread-pool,http-listener-2 默认为 http-thread-pool | |
| 服务器名 | server-name;用于指定服务器的别名,会影响发送给客户机的任何 url 的 host name 部分,如页面进行重定向时,生成的 URL 的 host name 部分就是该内容设置的值。该设置可以防止 host 头攻击和设置代理地址等 | |
| JK 监听程序 | jk-enabled;如果选择, 则监听程序为 Apache mod-jk 监听程序 | 不启用 |
| 安全性 | 是否启用安全性 | 不启用 |

# 编辑HTTP监听程序
点击任一 HTTP 监听程序后,进入一般信息页面, 可以对HTTP监听程序进行编辑,修改后需要重启实例才能生效。监听程序配置在domain.xml 对应为<protocols></protocols>
| 配置项 | 说明 | 默认值 |
| 名称 | HTTP 监听程序的名称 | admin-listener http-listener-1 http-listener-2 |
| 端口号 | port;网络监听程序监听的端口(admin-listener 默认为 6848、${ASADMIN_LISTENER_PORT},http-listener-1 默认为 6888、${HTTP_LISTENER_PORT},http-listener-2 默认为 6887、${HTTP_SSL_LISTENER_PORT},使用变量作为端口时请确保变量被赋值) 注意:如果修改了admin-listener的端口6848,asadmin 这个脚本无法同步,需要手动改/etc/profile,在/etc/profile 配置 AS_ADMIN_PORT 环境变量 | server默认值如下: admin-listener:6848 http-listener-1:6888 http-listener-2:6887 |
| 地址 | HTTP 监听程序使用的 IP 地址 | server默认值0.0.0.0 |
| 状态 | 网络监听程序的状态。监听程序可能已启用或已禁用 | 启用 |
| 默认虚拟服务器 | default-virtual-server;使用"虚拟服务器"页面定义新的虚拟服务器 | server |
| 线程池 | 与网络监听程序关联的线程池。admin-listener 默认为 admin-thread-pool,http-listener-1 默认为 http-thread-pool,http-listener-2 默认为 http-thread-pool | |
| 服务器名 | server-name;用于指定服务器的别名,会影响发送给客户机的任何 url 的 host name 部分,如页面进行重定向时,生成的 URL 的 host name 部分就是该内容设置的值。该设置可以防止 host 头攻击和设置代理地址等 | |
| JK 监听程序 | jk-enabled;如果选择, 则监听程序为 Apache mod-jk 监听程序 | 不启用 |
| 安全性 | 是否启用安全性 | 不启用 |

# 删除HTTP监听程序
选择HTTP 监听程序后,点击“删除”;确认删除后将会删除选中的监听程序。
非必要,不要删除默认的HTTP监听程序。

# 网络配置
网络配置包括【监听程序】、【协议配置】、【传输配置】三个部分。
# 监听程序
使用【监听程序】页可以配置网络监听程序;默认情况下,当首次安装 Apusic 应用服务器时,存在三个网络监听程序,名称为 admin-listener、http-listener1 和 http-listener2。。

# 新建监听程序
点击"新建",进入新建网络监听程序页面。
| 配置项 | 说明 | 默认值 |
| 名称 | 定义HTTP 监听程序的名称 | |
| 端口号 | port;定义网络监听程序监听的端口 | |
| 地址 | HTTP 监听程序使用的 IP 地址 | server默认值0.0.0.0 |
| 状态 | 网络监听程序的状态。监听程序可能已启用或已禁用 | 启用 |
| 协议 | 配置该网络监听程序的协议。可以: 创建新的协议;选择默认虚拟服务器 使用现有的协议 | |
| 线程池 | 与网络监听程序关联的线程池。admin-listener 默认为 admin-thread-pool,http-listener-1 默认为 http-thread-pool,http-listener-2 默认为 http-thread-pool | |
| 服务器名 | server-name;用于指定服务器的别名,会影响发送给客户机的任何 url 的 host name 部分,如页面进行重定向时,生成的 URL 的 host name 部分就是该内容设置的值。该设置可以防止 host 头攻击和设置代理地址等 | |
| JK 监听程序 | jk-enabled;如果选择, 则监听程序为 Apache mod-jk 监听程序 | 不启用 |
| 安全性 | 是否启用安全性 | 不启用 |
| 传输 | 与网络监听程序关联的传输 | tcp |

# 编辑监听程序
点击网络监听程序信息列表的"名称",如 http-listener-1,进入编辑页面可以对监听程序属性进行编辑。一般情况下,【http-listener-1】【http-listener-2】修改属性后,属性可以实时生效。
<一般信息>
| 配置项 | 说明 | 默认值 |
| 名称 | name,该网络监听程序的名称 | |
| 端口号 | port;网络监听程序监听的端口 | |
| 地址 | 监听程序使用的 IP 地址 | server默认值0.0.0.0 |
| 状态 | 网络监听程序的状态。监听程序可能已启用或已禁用 | 启用 |
| 协议 | 配置该网络监听程序的协议 | |
| 线程池 | 与网络监听程序关联的线程池 | |
| JK 监听程序 | jk-enabled;如果选择, 则监听程序为 Apache mod-jk 监听程序 | 不启用 |
| 安全性 | 是否启用安全性 | 不启用 |
| 传输 | 与网络监听程序关联的传输 | tcp |
<SSL>
| 配置项 | 说明 | 默认值 |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| SSL3 | 如果选中此复选框,则将为 JMX 连接器启用 SSL3 协议 | 不启用 |
| TLS | 如果选中此复选框,则将为 JMX 连接器启用 TLS 协议 | 不启用 |
| TLS1.1 | 如果选中此复选框,则将为 JMX 连接器启用 TLS1.1协议 | 不启用 |
| TLS1.2 | 如果选中此复选框,则将为 JMX 连接器启用 TLS1.2 协议 | 启用 |
| TLS1.3 | 如果选中此复选框,则将为 JMX 连接器启用 TLS1.3 协议 | 不启用 |
| 客户机验证 | 如果选中此复选框,则客户机在每次请求时必须向服务器表明自己的身份 | 不启用 |
| 证书昵称 | 证书数据库或 PKCS#11 标记中的服务器证书昵称。在证书中,名称格式为 tokenname:nickname。在此属性中包含名称的 tokenname:部分是可选的;如果证书本身没有设置昵称,这里可以自定义 | kaas |
| 密钥库 | 密钥库文件的路径 (例如, ${com.apusic.aas.instanceRoot}/config/keystore.jks 或 config/keystore.jks) | |
| 密钥库密码 | 密钥库文件的密码,如果证书的密钥库设置了密码,这里需要设置;如果没有设置可以为空 | |
| 信任算法 | 要用于证书路径验证的信任管理算法的名称 (例如,PKIX) | |
| 最大证书长度 | 证书路径中可以存在的非自发行中间证书的最大数目。只有在"信任算法"字段设置为 PKIX 时,才会使用此字段。如果值为 0,则表示路径只能包含单个证书。如果值为 -1,则表示路径长度不受限制 (没有最大长度)。如果设置小于 -1 的值,则会导致抛出异常错误。 | |
| 信任存储 | 信任存储文件的名称 (例如,cacerts.jks) | |
| 信任库密码 | 信任库文件的密码,如果证书的信任库设置了密码,这里需要设置;如果没有设置可以为空 | |
| 开启国密 | 是否开启国密配置。开启前,需要将国密证书信息配置完成,且需要重启AAS才能生效 | 不启用 |
| 密码套件 | 可以在其中添加或删除密码套件的区域。如果不添加任何密码套件,则将使用所有密码套件 |
<HTTP>
| 配置项 | 说明 | 默认值 |
| 服务器名 | server-name;别名 (如果服务器使用别名)。如果附加冒号和端口号, 则服务器向客户机发送的 URL 中将使用此端口 | |
| 默认虚拟服务器 | default-virtual-server;使用"虚拟服务器"页面定义新的虚拟服务器;如_asadmin / server | |
| 重定向端口 | redirect-port;用于重定向的 SSL 端口值 | |
| 最大请求数 | max-connections;在 keep-alive 模式下,每个连接的最大请求数 | 250 |
| 超时 | timeout-seconds;可以将连接视为空闲并保持为保持活动状态的最长时间。值 -1 表示禁用此设置。默认为 30 秒。Keepalive 时,连接空闲的时间,请求完成后不会立马关闭连接,如果 30 秒内还没有请求过来,则关闭连接 | 30秒 |
| 上载超时 | 启用在达到连接上载超时以后关闭缓慢读取字节的 Servlet 连接 | 启用 |
| 连接上载超时 | connection-upload-timeout-millis;启用上载超时情况下的上载超时。值 -1 表示禁用此设置。从网络读取完所有数据的超时时间 | 300000 毫秒 |
| 请求超时 | request-timeout-seconds;请求超时之前的时间。值 -1 表示禁用此设置。在 HTTP 线程池中,处理单个请求的超时时间,如果超过设置的时间则会停止处理 | 900秒 |
| 发送缓冲区大小(最大请求头大小) | send-buffer-size-bytes;发送缓冲区的大小(相当于maxHttpHeaderSize) | 8192 字节 |
| 标头缓冲区长度 | header-buffer-length-bytes;请求处理线程用于读取请求数据的缓冲区的大小 | 8192字节 |
| 最大 POST 大小 | max-post-size-bytes;POST 操作的最大大小。-1 表示无限制 | -1 |
| 最大保存 POST 大小 | max-save-post-size-bytes;验证期间容器将保存的 POST 的最大大小 | 4096 字节 |
| URI 编码 | uri-encoding;用来对收到的请求 URI 进行解码的字符集 | UTF-8 |
| 版本 | version;所用 HTTP 协议的版本 | HTTP/1.1 |
| 压缩 | 启用 HTTP/1.1 GZIP 压缩以节省服务器带宽。可选项:on、off、force | off |
| 可压缩 Mime 类型 | 使用 HTTP 压缩的 MIME 类型的逗号分隔列表 | text/html,text/xml,text/plain |
| 压缩最小大小 | compression-min-size-bytes;应用压缩时, 文件的最小大小 | 2048字节 |
| 无压缩用户代理 | no-compression-user-agents;以逗号分隔的正则表达式列表, 对应那些不使用压缩的 HTTP 客户机的用户代理 | |
| 受限的用户代理 | restricted-user-agents;应用 HTTP 压缩的受限用户代理的列表 | |
| 默认响应类型 | default-response-type;指定为以分号分隔的字符串, 此字符串包含内容类型, 编码, 语言, 字符集 | |
| 强制响应类型 | forced-response-type;要强制的响应类型 (如果扩展名的任何 MIME 映射无法匹配提供的内容) | |
| 适配器 | adapter;静态资源适配器的类名 | org.glassfish.grizzly.http.server.StaticHttpHandler |
| Comet 支持 | comet-support-enabled;是否开启Comet 支持 | 不启用 |
| DNS 查找 | dns-lookup-enabled;是否启用DNS查找功能。需要配置【JVM 选项】-Dapusic.http.getHostFromNameService.enabled=true | 不启用 |
| RCM 支持 | rcm-support-enabled;是否启用RCM | 不启用 |
| 允许GET HEAD DELETE方法携带请求体 | 是否允许GET HEAD DELETE方法携带请求体 | 启用 |
| 禁用 http 方法 | disabled-http-methods;禁用选中的 http 方法。默认有 TRACE/OPTION/HEAD/PUT/DELETE | TRACE |
| 允许自定义 HTTP 方法 | 启用后,所有自定义的 HTTP 方法都允许使用 | |
| 自定义 HTTP 方法白名单 | 可以使用自定义 HTTP 方法白名单(":"冒号分隔) | |
| 特殊字符白名单 | 设置URL允许访问的特殊字符 | |
| 传递验证 | auth-pass-through-enabled;指示网络监听程序从 SSL 终端代理服务器接收流量 | 不启用 |
| 分块 | chunking-enabled;启用 HTTP 响应分块 | 启用 |
| X-Powered-By | xpowered-by;在 Servlet 生成的 HTTP 响应标题中包含 X-Powered-By: Servlet/3.0 | 启用 |
| 编码斜杠 | encoded-slash-enabled;URL 中允许编码斜杠 | 不启用 |
| Websocket 支持 | websockets-support-enabled;是否启用Websocket | 启用 |
| websocket连接最大空闲时间 | websocket连接最大空闲时间 | 900秒 |
| 最大请求参数大小 | 设置最大请求参数大小 | 10000 |
| 响应头属性 | 可以根据需要添加响应头属性 |
<HTTP2属性>
| 配置项 | 说明 | 默认值 |
| 是否启用 | 是否启用HTTP2 | 不启用 |
| 最大并发流数量 | 控制任何一个连接允许的最大流数量 | 100 |
| 窗口初始化大小 | 控制服务器向客户端发送流的流控制窗口的初始大小. 默认值 64*1024 - 1 | 65535字节 |
| 最大可接收帧载荷 | 每一帧可以携带的数据大小,单位:字节 | 16777215字节 |
| Header头最大数量 | 每次请求可携带的请求头数量 | 4096字节 |
| 是否关闭密码套件校验 | 是否关闭密码套件校验 | 不启用 |
| 响应头属性 | 可以根据需要添加响应头属性 |
<文件高速缓存>
| 配置项 | 说明 | 默认值 |
| 协议名称 | 当前的协议名称 | |
| 状态 | enabled;是否开启文件高速缓存 | 不启用 |
| 最长存活时间 | max-age-seconds;文件过期被清理出高速缓存之前的最长存活时间 (秒) | 30秒 |
| 最大高速缓存大小 | max-cache-size-bytes;文件高速缓存的最大大小 (字节) | 10485760字节 |
| 最大文件数 | max-files-count;文件高速缓存中文件的最大数目 | 1024 |
# 删除监听程序
选择监听程序后,点击“删除”;确认删除后将会删除选中的监听程序。
非必要,不要删除默认的监听程序。
# 协议配置
使用【协议配置】页可以配置网络协议。默认已有 admin-listener/http-listener-1/http-listener-2/sec-admin-listener。
对于每个协议,将提供以下信息:
- 名称: 协议名称。
- 网络监听程序: 该协议关联的网络监听程序
- 已启用安全性: 如果已为协议启用了安全性,则为"真";如果未为协议启用安全性,则为"假"。
"协议"表还包含以下选项:
新建: 用于创建新协议的按钮。
删除: 用于删除一个或多个所选协议的按钮。非必要情况下,建议不要删除默认协议。
点击列表中的名称可以进入该协议的编辑页面,对相关信息进行编辑。通常情况下,修改默认协议http-listener-1、http-listener-2的属性会直接生效;修改默认协议sec-admin-listener的属性需要重启应用服务器才能生效。

# 协议
编辑协议信息,包括以下属性:
| 配置项 | 说明 | 默认值 |
| 名称 | 当前的协议名称 | |
| 安全性 | 是否开启安全性,如果开启了安全性,可进入"安全管理"启用/禁用安全管理 |

# HTTP配置
编辑协议的 HTTP 设置,一般情况下,【http-listener-1】【http-listener-2】属性修改保存后,属性可以实时生效。
| 配置项 | 说明 | 默认值 |
| 服务器名 | server-name;别名 (如果服务器使用别名)。如果附加冒号和端口号, 则服务器向客户机发送的 URL 中将使用此端口 | |
| 默认虚拟服务器 | default-virtual-server;使用"虚拟服务器"页面定义新的虚拟服务器;如_asadmin / server | |
| 重定向端口 | redirect-port;用于重定向的 SSL 端口值 | |
| 最大请求数 | max-connections;在 keep-alive 模式下,每个连接的最大请求数 | 250 |
| 超时 | timeout-seconds;可以将连接视为空闲并保持为保持活动状态的最长时间。值 -1 表示禁用此设置。默认为 30 秒。Keepalive 时,连接空闲的时间,请求完成后不会立马关闭连接,如果 30 秒内还没有请求过来,则关闭连接 | 30秒 |
| 上载超时 | 启用在达到连接上载超时以后关闭缓慢读取字节的 Servlet 连接 | 启用 |
| 连接上载超时 | connection-upload-timeout-millis;启用上载超时情况下的上载超时。值 -1 表示禁用此设置。从网络读取完所有数据的超时时间 | 300000 毫秒 |
| 请求超时 | request-timeout-seconds;请求超时之前的时间。值 -1 表示禁用此设置。在 HTTP 线程池中,处理单个请求的超时时间,如果超过设置的时间则会停止处理 | 900秒 |
| 发送缓冲区大小(最大请求头大小) | send-buffer-size-bytes;发送缓冲区的大小(相当于maxHttpHeaderSize) | 8192 字节 |
| 标头缓冲区长度 | header-buffer-length-bytes;请求处理线程用于读取请求数据的缓冲区的大小 | 8192字节 |
| 最大 POST 大小 | max-post-size-bytes;POST 操作的最大大小。-1 表示无限制 | -1 |
| 最大保存 POST 大小 | max-save-post-size-bytes;验证期间容器将保存的 POST 的最大大小 | 4096 字节 |
| URI 编码 | uri-encoding;用来对收到的请求 URI 进行解码的字符集 | UTF-8 |
| 版本 | version;所用 HTTP 协议的版本 | HTTP/1.1 |
| 压缩 | 启用 HTTP/1.1 GZIP 压缩以节省服务器带宽。可选项:on、off、force | off |
| 可压缩 Mime 类型 | 使用 HTTP 压缩的 MIME 类型的逗号分隔列表 | text/html,text/xml,text/plain |
| 压缩最小大小 | compression-min-size-bytes;应用压缩时, 文件的最小大小 | 2048字节 |
| 无压缩用户代理 | no-compression-user-agents;以逗号分隔的正则表达式列表, 对应那些不使用压缩的 HTTP 客户机的用户代理 | |
| 受限的用户代理 | restricted-user-agents;应用 HTTP 压缩的受限用户代理的列表 | |
| 默认响应类型 | default-response-type;指定为以分号分隔的字符串, 此字符串包含内容类型, 编码, 语言, 字符集 | |
| 强制响应类型 | forced-response-type;要强制的响应类型 (如果扩展名的任何 MIME 映射无法匹配提供的内容) | |
| 适配器 | adapter;静态资源适配器的类名 | org.glassfish.grizzly.http.server.StaticHttpHandler |
| Comet 支持 | comet-support-enabled;是否开启Comet 支持 | 不启用 |
| DNS 查找 | dns-lookup-enabled;是否启用DNS查找功能。需要配置【JVM 选项】-Dapusic.http.getHostFromNameService.enabled=true | 不启用 |
| RCM 支持 | rcm-support-enabled;是否启用RCM | 不启用 |
| 允许GET HEAD DELETE方法携带请求体 | 是否允许GET HEAD DELETE方法携带请求体 | 启用 |
| 禁用 http 方法 | disabled-http-methods;禁用选中的 http 方法。默认有 TRACE/OPTION/HEAD/PUT/DELETE | TRACE |
| 允许自定义 HTTP 方法 | 启用后,所有自定义的 HTTP 方法都被禁止 | |
| 自定义 HTTP 方法白名单 | 可以使用自定义 HTTP 方法白名单(":"冒号分隔) | |
| 特殊字符白名单 | 设置URL允许访问的特殊字符。勾选“常规特殊字符白名单”可以补全部分特殊字符 | |
| 传递验证 | auth-pass-through-enabled;指示网络监听程序从 SSL 终端代理服务器接收流量 | 不启用 |
| 分块 | chunking-enabled;启用 HTTP 响应分块 | 启用 |
| X-Powered-By | xpowered-by;在 Servlet 生成的 HTTP 响应标题中包含 X-Powered-By: Servlet/3.0 | 启用 |
| 编码斜杠 | encoded-slash-enabled;URL 中允许编码斜杠 | 不启用 |
| Websocket 支持 | websockets-support-enabled;是否启用Websocket | 启用 |
| websocket连接最大空闲时间 | websocket连接最大空闲时间 | 900秒 |
| 最大请求参数大小 | 设置最大请求参数大小 | 10000 |
| 响应头属性 | 可以根据需要添加响应头属性 |




# HTTP2配置
编辑HTTP2 信息。
| 配置项 | 说明 | 默认值 |
| 是否启用 | 是否启用HTTP2 | 不启用 |
| 最大并发流数量 | 控制任何一个连接允许的最大流数量 | 100 |
| 窗口初始化大小 | 控制服务器向客户端发送流的流控制窗口的初始大小. 默认值 64*1024 - 1 | 65535字节 |
| 最大可接收帧载荷 | 每一帧可以携带的数据大小,单位:字节 | 16777215字节 |
| Header头最大数量 | 每次请求可携带的请求头数量 | 4096字节 |
| 是否关闭密码套件校验 | 是否关闭密码套件校验 | 不启用 |
| 响应头属性 | 可以根据需要添加响应头属性 |

# SSL配置
编辑 SSL 信息,可为协议配置安全证书、密码套件等。
| 配置项 | 说明 | 默认值 |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| SSL3 | ssl3-enabled;如果选中此复选框,则将为 JMX 连接器启用 SSL3 协议 | 不启用 |
| TLS | tls-enabled;如果选中此复选框,则将为 JMX 连接器启用 TLS 协议 | 不启用 |
| TLS1.1 | tls11-enabled;如果选中此复选框,则将为 JMX 连接器启用 TLS1.1协议 | 不启用 |
| TLS1.2 | tls12-enabled;如果选中此复选框,则将为 JMX 连接器启用 TLS1.2 协议 | 启用 |
| TLS1.3 | tls13-enabled;如果选中此复选框,则将为 JMX 连接器启用 TLS1.3 协议。需要在JDK11及以上版本适用 | 不启用 |
| 客户机验证 | client-auth;如果选中此复选框,则客户机在每次请求时必须向服务器表明自己的身份 | 不启用 |
| 证书昵称 | cert-nickname;证书数据库或 PKCS#11 标记中的服务器证书昵称。在证书中,名称格式为 tokenname:nickname。在此属性中包含名称的 tokenname:部分是可选的;如果证书本身没有设置昵称,这里可以自定义 | kaas |
| 密钥库 | key-store;密钥库文件的路径 (例如, ${com.apusic.aas.instanceRoot}/config/keystore.jks 或 config/keystore.jks) | |
| 密钥库密码 | key-store-password;密钥库文件的密码,如果证书的密钥库设置了密码,这里需要设置;如果没有设置可以为空 | |
| 信任算法 | trust-algorithm;要用于证书路径验证的信任管理算法的名称 (例如,PKIX) | |
| 最大证书长度 | trust-max-cert-length;证书路径中可以存在的非自发行中间证书的最大数目。只有在"信任算法"字段设置为 PKIX 时,才会使用此字段。如果值为 0,则表示路径只能包含单个证书。如果值为 -1,则表示路径长度不受限制 (没有最大长度)。如果设置小于 -1 的值,则会导致抛出异常错误。 | |
| 信任存储 | trust-store;信任存储文件的名称 (例如,cacerts.jks) | |
| 信任库密码 | trust-store-password;信任库文件的密码,如果证书的信任库设置了密码,这里需要设置;如果没有设置可以为空 | |
| 开启国密 | 是否开启国密配置。开启前,需要将国密证书信息配置完成,且需要重启AAS才能生效 | 不启用 |
| 密码套件 | 可以在其中添加或删除密码套件的区域。如果不添加任何密码套件,则将使用所有密码套件 |


# 文件高速缓存
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 配置名称 | 所属的配置文件 | |
| 协议名称 | 当前的协议名称 | |
| 状态 | enabled;是否开启文件高速缓存 | 不启用 |
| 最长存活时间 | max-age-seconds;文件过期被清理出高速缓存之前的最长存活时间 (秒) | 30秒 |
| 最大高速缓存大小 | max-cache-size-bytes;文件高速缓存的最大大小 (字节) | 10485760字节 |
| 最大文件数 | max-files-count;文件高速缓存中文件的最大数目 | 1024 |

# 删除协议配置
选择协议后,点击“删除”;确认删除后将会删除选中的协议配置。
非必要,不要删除默认的协议配置。
# 传输配置
使用【传输配置】页可以配置传输。每个网络监听程序与一个传输关联。

默认情况下,当第一次安装 Apusic 应用服务器时,存在一个 TCP 传输,名称为 tcp。可以修改或创建 TCP 或 UDP 传输,或提供定制传输实现。
# 新建传输配置
单击“新建”进入新建传输配置页面,可以创建新的传输配置。
包括以下属性:
| 配置项 | 说明 | 默认值 |
| 传输名称 | 当前的传输名称,需要唯一 | |
| 类名称 | 实现传输逻辑的类的名称,如 org.glassfish.grizzly.nio.transport.TCPNIOTransport | org.glassfish.grizzly.nio.transport.TCPNIOTransport |
| Selection Key 处理器 | Selection Key 处理器的类名。如果留空, 则使用默认实现 | |
| 字节缓冲区类型 | 将与传输搭配使用的字节缓冲区的类型,包括 HEAP/DIRECT | HEAP |
| 缓冲区大小 | 要为使用此传输的网络监听程序创建的输入流提供的缓冲区大小 | 8192 字节 |
| 接受方线程 | 计算机中的处理程序数。如果值为 -1, 则表示传输将自行计算接受方线程的数目 | 1 |
| 最大连接数 | 传输应同时处理的最大连接数 | 4096 |
| 空闲键超时 | 取消空闲键并关闭通道之前的时间 | 30秒 |
| 读取超时 | 读取操作超时 | 30000毫秒 |
| 选择器轮询超时 | NIO 选择器将阻止等待事件 (用户请求)的时间 | 1000 毫秒 |
| 写入超时 | 写入操作超时 | 30000 毫秒 |
| IO 策略 | org.glassfish.grizzly.strategies.WorkerThreadIOStrategy、org.glassfish.grizzly.strategies.SameThreadIOStrategy、org.glassfish.grizzly.strategies.LeaderFollowerNIOStrategy | org.glassfish.grizzly.strategies.WorkerThreadIOStrategy |
| 显示配置 | 开启后,将传输的内部配置写入到服务器日志 | 不启用 |
| 探测 | 将请求/响应信息转储到服务器日志中。该操作对调试来说很有用, 但会大幅降低性能 | 不启用 |
| 慢攻击检测 | 开启慢攻击检测,当连接超过设置的超时时间后,会自动关闭超时的路径 | 不启用 |
| 慢攻击日志 | 输出慢攻击日志 | 不启用 |
| 连续写数据次数 | 连接写 N 次,且写出去的数据少于配置的最小数据则判断为慢攻击 | 5次 |
| 写最小数据量 | 连接写 N 次,且写出去的数据少于该值则判断为慢攻击 | 128字节 |
# 编辑传输配置
修改现有的传输配置,修改后必须要重启实例。
| 配置项 | 说明 | 默认值 |
| 传输名称 | 当前的传输名称,只读属性 | |
| 类名称 | 实现传输逻辑的类的名称,如 org.glassfish.grizzly.nio.transport.TCPNIOTransport | org.glassfish.grizzly.nio.transport.TCPNIOTransport |
| Selection Key 处理器 | Selection Key 处理器的类名。如果留空, 则使用默认实现 | |
| 字节缓冲区类型 | 将与传输搭配使用的字节缓冲区的类型,包括 HEAP/DIRECT | HEAP |
| 缓冲区大小 | 要为使用此传输的网络监听程序创建的输入流提供的缓冲区大小 | 8192 字节 |
| 接受方线程 | 计算机中的处理程序数。如果值为 -1, 则表示传输将自行计算接受方线程的数目 | 1 |
| 最大连接数 | 传输应同时处理的最大连接数 | 4096 |
| 空闲键超时 | 取消空闲键并关闭通道之前的时间 | 30秒 |
| 读取超时 | 读取操作超时 | 30000毫秒 |
| 选择器轮询超时 | NIO 选择器将阻止等待事件 (用户请求)的时间 | 1000 毫秒 |
| 写入超时 | 写入操作超时 | 30000 毫秒 |
| IO 策略 | org.glassfish.grizzly.strategies.WorkerThreadIOStrategy、org.glassfish.grizzly.strategies.SameThreadIOStrategy、org.glassfish.grizzly.strategies.LeaderFollowerNIOStrategy | org.glassfish.grizzly.strategies.WorkerThreadIOStrategy |
| 显示配置 | 开启后,将传输的内部配置写入到服务器日志 | 不启用 |
| 探测 | 将请求/响应信息转储到服务器日志中。该操作对调试来说很有用, 但会大幅降低性能 | 不启用 |
| 慢攻击检测 | 开启慢攻击检测,当连接超过设置的超时时间后,会自动关闭超时的路径 | 不启用 |
| 慢攻击日志 | 输出慢攻击日志 | 不启用 |
| 连续写数据次数 | 连接写 N 次,且写出去的数据少于配置的最小数据则判断为慢攻击 | 5次 |
| 写最小数据量 | 连接写 N 次,且写出去的数据少于该值则判断为慢攻击 | 128字节 |


# 删除传输配置
选择传输配置后,点击“删除”;确认删除后将会删除选中的传输配置。
非必要,不要删除默认的传输配置。
# 配置http请求重定向到https方法
# 配置文件配置
1.在【server-config 】的【network-config】下添加:
<protocol name="http-redirect">
<http-redirect port="6887" secure="true"></http-redirect>
</protocol>
<protocol name="my-protocol">
<port-unification>
<protocol-finder protocol="http-listener-2" classname="com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder" name="http-finder"></protocol-finder>
<protocol-finder protocol="http-redirect" classname="com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder" name="http-redirect"></protocol-finder>
</port-unification>
</protocol>
2
3
4
5
6
7
8
9
2.修改 http-listener-1的协议名为my-protocol

# 命令行方式配置
1.在应用的web.xml添加:
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureResource</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
2
3
4
5
6
7
8
9
2.asadmin依次执行以下命令
1.create-protocol --securityenabled=false http-redirect
2.create-http-redirect --redirect-port 6887 --secure-redirect true http-redirect
3.create-protocol --securityenabled=false my-protocol
4.create-protocol-filter --protocol http-redirect --classname com.apusic.aas.grizzly.config.portunif.HttpRedirectFilter redirect-filter
5.create-protocol-finder --protocol my-protocol --targetprotocol http-listener-2 --classname com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder http-finder
6.create-protocol-finder --protocol my-protocol --targetprotocol http-redirect --classname com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder http-redirect
7.set server-config.network-config.network-listeners.network-listener.http-listener-1.protocol=my-protocol
2
3
4
5
6
7
8
9
10
11
12
13
# 日志配置
# 日志记录程序设置
使用"日志记录程序设置"页可为所选 Apusic 应用服务器实例或集群配置日志记录。
配置文件位于${DOMAIN_HOME}/config/logging.properties。
【日志记录程序设置】页包含以下选项:
| 配置项 | 说明 | 默认值 |
| 配置名称 | 所属的配置文件 | |
| 写入系统日志 | com.apusic.enterprise.server.logging.SyslogHandler.useSystemLogging=false;如果选中此选项,则除了服务器日志以外,系统还会将日志记录输出发送到 syslog 工具。此功能仅在 Solaris 和 Linux 系统上可用 | 不启用 |
| 记录到控制台 | com.apusic.enterprise.server.logging.ApusicFileHandler.logtoConsole=false;将日志消息写入到系统控制台 | 不启用 |
| 按日生成日志文件 | com.apusic.enterprise.server.logging.ApusicFileHandler.rotationOnDateChange=false;每天凌晨生成服务器日志文件 | 不启用 |
| 多行模式 | com.apusic.enterprise.server.logging.ApusicFileHandler.multiLineMode=true;在消息头之后的新行上开始日志消息体 | 启用 |
| 控制台日志格式 | java.util.logging.ConsoleHandler.formatter=com.apusic.enterprise.server.logging.UniformLogFormatter;控制台日志格式,包含 ULF 和 ODL | ULF |
| 日志文件格式 | com.apusic.enterprise.server.logging.ApusicFileHandler.formatter=com.apusic.enterprise.server.logging.ODLLogFormatter;日志文件格式,包含 ULF 和 ODL | ODL |
| 排除的字段 | com.apusic.enterprise.server.logging.ApusicFileHandler.excludeFields;日志文件排除选中的字段,可选项为线程 ID、用户 ID、执行上下文 ID、毫秒时间戳、等级值、日期格式化、日志记录器名称、消息 ID | |
| 文件滚动限制 | com.apusic.enterprise.server.logging.ApusicFileHandler.rotationLimitInBytes=2000000;在滚动之前,服务器日志文件必须达到的大小(字节) | 2MB |
| 文件滚动时间限制 | com.apusic.enterprise.server.logging.ApusicFileHandler.rotationTimelimitInMinutes=0;服务器日志必须滚动之前的分钟数,如果设置为 0, 将根据在日志滚动限制中指定的大小滚动文件 | 0 |
| 刷新频率 | com.apusic.enterprise.server.logging.ApusicFileHandler.flushFrequency=100;一次从队列写入到服务器日志的最大消息数 | 100 |
| 最大历史文件数 | com.apusic.enterprise.server.logging.ApusicFileHandler.maxHistoryFiles=0;要保留的最大日志文件数。输入 0 保留所有的日志文件 | 0 |
| 日志压缩时间 | com.apusic.enterprise.server.logging.ApusicFileHandler.compressTime;每天进行日志压缩的时间点 | 00:03 |
| 最大压缩文件数 | com.apusic.enterprise.server.logging.ApusicFileHandler.compressMaxRemain;要保留的访问日志压缩文件的最大数目,输入0保留所有的压缩日志文件 | 10 |
| 日志压缩路径 | com.apusic.enterprise.server.logging.ApusicFileHandler.compressPath;指定每天进行日志压缩生成的压缩文件路径 | ${com.apusic.aas.instanceRoot}/logs |
| 日志文件 | com.apusic.enterprise.server.logging.ApusicFileHandler.file=${com.apusic.aas.instanceRoot}/logs/server.log;服务器日志文件的替代名称或位置 注意,如果修改日志文件,需要同时修改【虚拟服务器】中的日志文件路径为同一个 | ${com.apusic.aas.instanceRoot}/logs/server.log |
| 日志处理程序 | handlers;定制日志处理程序的绝对类名 | com.apusic.aas.logging.ApusicConsoleHandler |
| 推送到Kafka | com.apusic.enterprise.server.logging.ApusicKafkaHandler.enable=false;是否开启推送到Kafka功能 | 不启用 |
| Kafka日志格式 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.formatter=com.apusic.enterprise.server.logging.ODLLogFormatter;设置Kafka日志格式,ODL/ULF | ODL |
| 压缩数据类型 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.compressionType=none;Producer用于压缩数据的压缩类型,包括:none, gzip, snappy, lz4, zstd | none |
| 需要确认的服务数量 | 消息推送完成需要收到的服务确认数量,取值为all、0、1 | 0 |
| Kafka集群服务 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.bootstrapServers=localhost:9092;推送的Kafka集群地址,可配置多个,格式:host1:port1,host2:port2 | localhost:9092 |
| 主题 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.topic=log;Kafka订阅的topic | log |
| 生产者id | com.apusic.enterprise.server.logging.ApusicKafkaHandler.clientId=aas;用于追踪请求源的字符串id | aas |
| 阻塞时长 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.maxBlockMs=10000;当 buffer 空间不够或者metadata 丢失时产生的阻塞时长,取值为0-3600000 | 10000 |
| 重试次数 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.retries=1;推送失败进行重试的次数,取值为0-65535 | 1 |
| 消息延迟发送时间 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.lingerMs=0;分批数据最大空闲时间,超过该时间的batch也会被发送到broker端,取值为0-3600000 | 0 |
| 缓存内存 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.bufferMemory=33554432;用于缓存推送数据的内存大小,取值为0-33554432,即最大为32M。单位字节 | 33554432 |
| 分批容量大小 | com.apusic.enterprise.server.logging.ApusicKafkaHandler.batchSize=16384;分批发送到broker端的批容量大小,取值为0-33554432,即最大为32M .单位字节 | 16384 |



# 日志级别设置
使用"模块日志级别"页可以为各个模块配置日志记录级别。修改后实时生效,不需要重启实例。
日志级别可选项为紧急(EMERGENCY), 警戒(ALERT), 严重(SEVERE),警告( WARNING), 信息(INFO), 配置(CONFIG),追踪( FINE),中度追踪( FINER), 深度追踪(FINEST),全开启(ALL),关闭(OFF)。
这些日志级别具有层次包含性,这意味着如果设置了特定的日志级别,例如INFO,那么高于该级别的消息(EMERGENCY、ALERT、SEVERE和WARNING)也会被包含进来。如果将日志级别设置为最低级别FINEST,那么输出将包含文件中的所有消息。默认设置为INFO。
在独立实例或集群实例中,如果日志输出不完善,可在独立实例或集群实例中设置系统属性 imq.hostname,值为实例监听的 IP 地址。
| 日志级别 | 说明 |
| EMERGENCY | 紧急级别,出现致命的异常,系统已经无法恢复正常,必须重启设备,如程序异常导致设备重启、内存的使用被检测出错误等。 |
| ALERT | 警戒级别,出现重大的异常,需要立即采取措施,如设备内存占用率达到极限。 |
| SERVER | 严重级别,这些级别用于记录严重的错误或异常情况,这些错误可能导致程序无法继续执行或产生不可预见的后果。SEVERE级别的日志通常包含错误的具体描述、发生的时间和位置等信息,有助于开发人员快速定位问题并进行修复 |
| WARNING | 警告级别,表示程序中出现了一些潜在的问题或不符合预期的情况,但这些问题目前并不影响程序的正常运行。WARNING级别的日志用于提醒开发人员注意可能的问题,并考虑在将来进行修复 |
| INFO | 信息级别,用于记录程序运行中的一般信息,如业务逻辑的处理结果、用户请求的接收和处理等。INFO级别的日志对于了解程序的正常操作流程和状态非常有用 |
| CONFIG | 配置级别,与服务器配置有关的消息 |
| FINE | 追踪级别,最小详尽程度记录日志,通常用于记录程序的执行流程和关键变量值 |
| FINER | 中度追踪级别,中等详尽程度记录日志,用于调试目的,但可能不包括一些非常琐碎的细节 |
| FINEST | 深度追踪级别,这是最低的日志级别,用于记录最详细的调试信息。它通常包含程序运行时的最小细节,如方法进入和退出、变量值变化等。由于FINEST级别的日志非常详细,因此它们主要用于深入调试复杂问题 |
| ALL | 开启记录所有日志信息 |
| OFF | 关闭日志,关闭后将不再打印日志信息 |

对于每个模块,将提供以下信息:
日志记录程序名称: 模块日志记录程序的名称 (例 javax.enterprise.system.tools.admin)。
日志记录程序级别: 模块的当前日志记录级别。
"日志记录程序设置"表还包含以下选项:
添加日志记录程序: 用于添加日志记录程序模块的按钮。
删除日志记录程序: 用于删除一个或多个所选模块的按钮。
级别: 一个下拉列表,您可从该列表中选择要应用到所有所选模块的日志记录级别。
更改级别: 用于更改一个或多个所选模块的日志记录级别。
日志记录程序:
| 配置项 | 说明 | 默认值 |
| com.apusic.aas.naming | 信息 | |
| javax.enterprise.system.ssl.security | 信息 | |
| javax.enterprise.system.container.web | 信息 | |
| javax.enterprise.system.webservices.saaj | 信息 | |
| javax.enterprise.system.webservices.rpc | 信息 | |
| org.eclipse.persistence.session | 信息 | |
| com.apusic.aas.logging.ApusicConsoleHandler | 信息 | |
| javax.enterprise.resource.javamail | 信息 | |
| org.apache.jasper | 信息 | |
| com.apusic.enterprise.server.logging.ApusicFileHandler | 全开启 | |
| javax.enterprise.system.tools.backup | 信息 | |
| javax.enterprise.system.webservices.registry | 信息 | |
| org.jvnet.hk2.osgiadapter | 信息 | |
| javax | 信息 | |
| javax.enterprise.system.container.cmp | 信息 | |
| javax.enterprise.system.util | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.lifecycle | 信息 | |
| ShoalLogger | 配置 | |
| javax.enterprise.resource.jms | 信息 | |
| javax.enterprise.resource.sqltrace | 追踪 | |
| javax.enterprise.resource.webcontainer.jsf.resource | 信息 | |
| javax.enterprise.system.core.transaction | 信息 | |
| javax.enterprise.web.core | 信息 | |
| org.apache.catalina | 信息 | |
| javax.com.apusic.aas.persistence | 信息 | |
| com.apusic.aas.admingui | 信息 | |
| javax.enterprise.system.container.ejb.mdb | 信息 | |
| com.apusic.aas.thread.pools.trace | 设置线程池追踪,需要先开启线程池监控。开启后,日志将会打印所有线程池的追踪信息 | 关闭 |
| javax.enterprise.resource.webcontainer.jsf.managedbean | 信息 | |
| javax.enterprise.system.core.selfmanagement | 信息 | |
| javax.enterprise.resource.jdo | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.facelets | 信息 | |
| com.apusic.aas.jdbc.pools.trace | 设置 JDBC 连接池追踪,需要先开启JDBC连接池监控。开启后,当有触发事件或操作报错时,日志将会打印 JDBC 连接池的追踪信息 | 关闭 |
| javax.enterprise.resource.webcontainer.jsf.timing | 信息 | |
| javax.enterprise.system.core.classloading | 信息 | |
| javax.enterprise.system.tools.deployment | 信息 | |
| javax.enterprise.system.tools.admin | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.application | 信息 | |
| javax.mail | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.renderkit | 信息 | |
| javax.enterprise.system | 信息 | |
| javax.enterprise.resource.resourceadapter | 信息 | |
| javax.enterprise.system.core | 信息 | |
| javax.enterprise.resource.jta | 信息 | |
| javax.enterprise.system.core.security | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.taglib | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.config | 信息 | |
| javax.enterprise.system.core.config | 信息 | |
| javax.enterprise.resource.corba | 信息 | |
| org.apache.coyote | 信息 | |
| java.util.logging.ConsoleHandler | 信息 | |
| javax.enterprise.resource.webcontainer.jsf.context | 信息 | |
| javax.enterprise.system.container.ejb | 信息 |
# 监视配置
# 监视服务
使用"监视服务"页可为各个服务器组件或服务配置监视选项。修改监视服务信息,保存后直接生效,无需重启实例。
需要部署应用程序、组件或服务,然后才能为它们配置监视。
监视服务组件或服务:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 监视服务 | 为 Apusic Server 启用监视。需要启用监视服务才运行 | 启用 |
| 监视 MBean | 部署监视所需的所有 MBean。需要启用才能监视到 MBean | 启用 |
| 监控采集周期(秒) | 设置监控数据的采集周期 | 10秒 |
| 监控回放 | 勾选后开启监控回放功能 | 不启用 |
| 监控数据总量 | 监控回放存储的数据的总条数 | 8000条 |
| 监控回放抽样时间(秒) | 置监控回放抽样的时间,默认为 30 秒,表示每 30 秒进行一次监控保存 | 30秒 |
| 启用采集器 | 勾选后启用采集器,该功能需要与 AMP 连接 | 不启用 |
组件级别设置: 设置监控的组件及监视级别。级别有关闭、低、高三项,可选择组件,点击表格上方的"级别",点击"更改级别",进行统一设置。
| 配置项 | 说明 | 默认值 |
|---|---|---|
| JVM | 开启 JVM(Java 虚拟机)的监视 | 关闭 |
| Transaction Service | 开启事务服务的监视,如果需要进行事务管理,需先开启事务服务监视 | 关闭 |
| Connector Service | 开启连接器服务监视 | 关闭 |
| JMS Service | 开启 JMS(Java 消息服务)监视 | 关闭 |
| Security | 开启安全性服务监视 | 关闭 |
| Web Container | 开启 Web 容器监视,需要监视应用程序时要开启 | 关闭 |
| Jersey(RESTful Web Services) | 开启 Jersey(RESTful Web Services)监视 | 关闭 |
| Web Services Container | 开启 Web 服务容器监视 | 关闭 |
| Java Persistence | 开启 Java 持久化监视服务 | 关闭 |
| Jdbc Connection Pool | 开启 JDBC 连接池监视服务 | 关闭 |
| Thread Pool | 开启线程池监视服务 | 关闭 |
| Ejb Container | 开启 EJB 容器监视服务 | 关闭 |
| ORB (Object Request Broker) | 开启 ORB 监视服务 | 关闭 |
| Connector Connection Pool | 开启连接器连接池监视服务 | 关闭 |
| Deployment | 开启部署监视服务 | 关闭 |
| Http Service | 开启 HTTP 服务监视 | 关闭 |

# 监控告警
开启监控告警功能, 对运行线程、内存、CPU 、垃圾回收、数据库连接池提供监视功能。使用此功能请勾选指定监控项目并设置阈值及告警方式。修改监视服务信息,保存后直接生效,无需重启实例。
监控告警策略:
- 按一定时间间隔监控时间超过设定阈值次数触发一次告警。
- 间隔次数可通过 com.apusic.aas.monitoring.alarm.allowOccurCounter 配置,,默认10次。
- 阈值时间可通过 com.apusic.aas.monitoring.alarm.allowOccurTimeBucket 配置,默认 90000ms。
- 每项告警项目单独开启了一个定时器检测,检测间隔可通过 JVM选项: com.apusic.aas.monitoring.alarmTimerCheckInterval 配置, 默认 5000ms。
监控告警配置项:
| 配置项 | 说明 | 默认值 |
| 监控告警 | 勾选后开启监控告警功能 | 不启用 |
| 告警间隔(分钟) | 告警间隔时间 | 30分钟 |
| 告警项目 | 选择告警项目,分别有 HTTP 线程池、CPU、虚拟内存、物理内存、垃圾回收(FullGCC)、数据库连接池,可多选。下拉框中可设置告警阈值,当告警项目检测值超过设置的阈值时会触发告警 | HTTP线程 |
| HTTP 线程 | threadAlarmEnabled,threadAlarmThreshold,根据 HTTP 线程池阈值设置告警,当前使用HTTP线程数/所有HTTP线程池总数;阈值单位为百分比 | |
| CPU | cpuAlarmEnabled,cpuAlarmThreshold,根据 CPU 使用情况设置告警,机器当前使用CPU值/机器总CPU值;阈值单位为百分比 | |
| 虚拟内存 | virtualMemoryAlarmEnabled,virtualMemoryAlarmThreshold,根据虚拟内存使用情况设置告警,AAS当前实例堆内存使用量/AASXmx;阈值单位为百分比 | |
| 物理内存 | physicalMemoryAlarmEnabled,physicalMemoryAlarmThresholdphysicalMemoryAlarmThreshold,根据物理内存使用情况设置告警,当前物理机使用内存/物理机总内存;阈值单位为百分比 | |
| 垃圾回收(FullGCC) | 根据垃圾回收情况设置告警;可根据 单次时长:设置每次FullGCC产生的时长,超过这个时间将会产生告警事件br/> 频率限制:设置FullGCC产生的频率,例如10次1小时,表示一小时内产生十次FullGCC事件将会产生告警 | |
| 数据库连接池 | 根据数据库连接池连接情况设置告警;可设置 1)验证失败:根据数据库连接池 "验证失败" 次数设置告警,单位 "次",默认值为10次 2)连接超时:根据数据库连接池 "连接超时" 次数设置告警,单位 "次",默认值为10次 3)空闲超时:根据数据库连接池 "空闲超时" 次数设置告警,单位 "次",默认值为10次 | |
| 告警策略 | 分别有告警消息、生成快照,可多选 |
告警消息分别有邮件、JMS、SNMP、告警平台,可多选。
- 邮件: mailSenderEnabled, 选择后通过邮件发送告警信息。需要安全管理员在【系统设置】中配置邮件信息才能配置接收邮件。
- 接收邮件: mailSendToAddress, 设置接收告警信息的邮箱地址,多个用英文分号;隔开,邮箱需要为合法邮箱。

- JMS: 选择后,通过 JMS 接收告警消息。需要在【JMS 资源】中设置连接工厂、目标资源。
JMS 连接工厂: 配置 JMS 连接工厂,需要在【JMS 资源】中的【连接工厂】中设置。
JMS 目的地: 配置 JMS 目的地,需要在【JMS 资源】中的【目标资源】中设置。

- SNMP: snmpSenderEnabled, 选择后通过 SNMP 发送告警消息。支持 SNMP v1/v2c/v3,SNMP 版本只能设置一个。
- SNMP 版本: snmpVersion, 选择 SNMP 版本,只能设置一个。
V1:SNMP 版本为 v1:
SNMP 团体名: 配置 SNMP 团体名,默认值为 public。
SNMP 地址: 配置 SNMP 地址,格式: IP/port,例如 127.0.0.1/171。
V2c:SNMP 版本为 v2c:
SNMP 团体名: 配置 SNMP 团体名,默认值为 public。
SNMP 地址: 配置 SNMP 地址,格式: IP/port,例如 127.0.0.1/171。
V3:SNMP 版本为 v3:
SNMP 安全级别: 分别为无、认证不加密、认证加密,只能设置一个。
SNMP 地址: 配置 SNMP 地址,格式: IP/port,例如 127.0.0.1/171。
SNMP 用户名: 配置 SNMP 团体名,需要与 SNMP 客户端设置的一致。
SNMP 认证方式: 配置 SNMP 认证方式,分别有 MD5、SHA,只能设置一个,需要与 SNMP 客户端设置的一致。
SNMP 认证密码: 输入 SNMP 认证密码,需要与 SNMP 客户端设置的一致。
SNMP 加密算法: 设置 SNMP 加密算法,分别有 DES、3DES、AES128、AES192、AES256,只能设置一个,需要与 SNMP 客户端设置的一致。
SNMP 加密密码: 设置 SNMP 加密密码,只能设置一个,需要与 SNMP 客户端设置的一致。

- 告警平台: 可以通过告警平台发送告警消息,需要配置“告警级别”“告警平台地址”。
- 告警级别: 设置告警级别,表示AAS产生的告警信息在告警平台中都属于该级别。可设置为提示、警告、严重、灾难
- 告警平台地址: 配置 告警平台的地址,格式: protocol:ip/port ,例如: http://127.0.0.1:8888

告警策略选择生成快照后需要设置快照类型。
- 快照类型: 包括线程快照、堆内存快照、进程快照,可多选。当产生告警时,会生产对应的快照。可在实例的【监视数据】->【快照】中查看。

# SNMP 监听
SNMP: 简单网络管理协议。配置 SNMP 代理服务,可以通过 SNMP 协议获取应用服务器监视信息。
| 配置项 | 说明 | 默认值 |
|---|---|---|
| SNMP 代理服务 | snmp-service-enabled, 是否启动 SNMP 代理服务 | 不启用 |
| 绑定地址 | snmp-address,SNMP 绑定 IP,默认为 0.0.0.0。一般使用默认值或 AAS 的监听 IP | 0.0.0.0 |
| 绑定端口 | snmp-port,SNMP 绑定端口。需要开放权限 | 161 |
| 协议传输类型 | snmp-transport-type, 选择协议传输类型,支持 UDP 和 TCP | UDP |
| 协议版本 | snmp-protocol-version, 协议版本,v2c 或 v3 | v2c |
选择协议版本为 v3 时,需要配置:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 安全用户名 | snmp-security-user-name, USM 的安全用户名 | public |
| 设备 id | snmp-engine-id, 标识当前 snmp 代理设备不同于其他的唯一标识符 | |
| 验证算法 | snmp-validation-protocol, 支持 MD5、SHA | |
| 验证秘钥 | snmp-validation-secret-key, 确保只有授权用户才能请求或接收使用的秘钥,长度为 8-16 位 | |
| 加密算法 | snmp-private-protocol, 支持 DES、3DES、AES128 | |
| 加密秘钥 | snmp-private-secret-key,对消息进行加密和解密时使用的秘钥,长度为 8-16 位 |
<monitoring-service snmp-protocol-version="v3" snmp-private-secret-key="nmsPrivKey" snmp-address="0.0.0.0" snmp-engine-id="80:00:13:70:01:c0:a8:65" snmp-port="161" snmp-security-user-name="public" snmp-validation-secret-key="nmsAuthKey" snmp-service-enabled="true" snmp-transport-type="tcp" snmp-private-protocol="3DES" snmp-validation-protocol="SHA"></monitoring-service>

告警消息自定义
实例配置目录下有一份告警消息配置文件 alarm-message-template.properties,可以配置该模板信息。如果目录下没有该配置文件,可以手动创建。
其中定义 template= 你的模板
模板预留了占位符 {type} {ratio} {threshold} {used} {total}
模板消息可以设置阈值和使用率的表示形式 小数表示还是百分制,可通过 com.apusic.aas.monitoring.alarm.message.ratio.unit 配置,0 - 小数, 1 - 百分制, 默认 0 小数表示。
还可以通过 com.apusic.aas.monitoring.alarm.message.ratio.scale 设置保留的小数位, 默认保留 2 位。
示例:
template=当前告警:主机172.20.140.43,实例:{type} 检测到超过阈值{ratio}% 当前使用占比{threshold}% 已使用{used} 最大允许{total}
线程池(admin-listener) 使用超出阈值 10.00%,当前已使用占比 100.00%, 当前使用量 5, 最大支持可用量 5
队列使用情况: 已使用(0) 队列容量(10)
2
3
4
# 虚拟主机
虚拟主机 (有时也称为虚拟服务器) 是一个允许同一个物理服务器来托管多个域名的对象。同一个物理服务器上托管的所有虚拟服务器共享该物理服务器的 Internet 协议 (IP) 地址。虚拟服务器将服务器的域名 (如 www.sun.com) 与运行 Apusic 应用服务器 的特定服务器相关联。
使用“虚拟服务器”页可以配置虚拟服务器。默认有__asadmin、server 两个虚拟服务器,__asadmin 主要用于管控平台;server 用于部署的应用程序。
虚拟服务器原理: 虚拟服务器需要绑定在监听器上,然后虚拟服务器的 ID(也会作为域名)、主机名(可多个)等域名 就会绑定在该监听器上。所以当不同虚拟服务器中含有相同的域名,同时绑定在同一个监听器上就会冲突!某个虚拟服务器的冲突域名会挂载失败。应用选择了虚拟服务器后,将只能通过该虚拟服务器的域名进行访问。(默认虚拟服务器 server 除外,它会默认处理所有匹配不到其他虚拟服务器的请求)。
注意:
- 在进行 host 请求头限制时,应用部署时注意不要选 server 虚拟服务器,因为 server 是默认服务器,会默认处理所有匹配不到其他虚拟服务器的请求!
- 如果要绑定的域名是机器的主机名,则要停止 server 这个虚拟服务器,因为主机名默认绑定到 server 上,会导致冲突!(不同虚拟服务器中含有相同的域名,同时绑定在同一个监听器上就会冲突!> )。
- 使用虚拟服务器访问应用程序地址时,需要在客户端(即访问应用程序的主机)的 host 文件添加虚拟主机,如 172.20.129.84 www.host1.com。

对于每台虚拟服务器,将提供以下信息:
名称: 虚拟服务器的名称。
状态: 可为打开、关闭或已禁用。
默认 Web 模块: 已部署的 Web 模块(如果有),此模块将响应所有无法映射到已部署到虚拟服务器中的其他 Web 模块的请求。
"虚拟服务器"表还包含以下选项:
新建: 用于创建新虚拟服务器的按钮。
删除: 用于删除一个或多个所选虚拟服务器的按钮。如果已有目标引用,建议先取消关联再删除。
# 管理虚拟服务器
点击“新建”,进入新建虚拟主机页面,输入对应属性,点击“确定”,新建虚拟主机。
点击虚拟主机名称,进入编辑页面,可以修改对应属性,修改后需要重启AAS。
相关属性如下:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| ID | 虚拟服务器名称,需要唯一 | |
| 主机 | 以逗号分隔的主机或 IP 地址列表,${com.apusic.aas.hostName}表示为 AAS 获取的 hostname | |
| 状态 | 表示该虚拟服务器当前的状态。 打开-虚拟服务器处于活动状态。 关闭-虚拟服务器处于非活动状态;返回码 404(资源不可用)。 已禁用-虚拟服务器不活动;返回码 403(拒绝满足请求)。 | 打开 |
| SSO | 受控于、已启用、已禁用 | 受控于 |
| 仅限 SSO Cookie Http | 支持 JSESSIONIDSSO cookie 的 HttpOnly 标记 | 不启用 |
| 网络监听程序 | 网络监听程序列表,选择表示该虚拟服务器应用与该网络监听程序,可多选 | |
| 默认 Web 模块 | 对其他模块的请求无法解析时所使用的模块 | |
| 日志文件 | 默认值为域的 log-root 属性。如果修改该文件,同时想保持系统日志一起更换目录,需要修改【日志配置】-【日志记录程序】中的“日志文件”为同一个 | ${com.apusic.aas.instanceRoot}/logs/server.log |
| 文档根目录 | 服务器根文档目录的绝对路径;例如${com.apusic.aas.instanceRoot}/ROOT |
访问日志
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 访问日志记录 | 受控于、已启用、已禁用 | 受控于 |
| 目录 | 服务器访问日志的绝对路径;例如${com.apusic.aas.instanceRoot}/logs/access |
访问控制
| 配置项 | 说明 | 默认值 |
| 访问地址白名单 | 允许访问的 IP 地址,多个 IP 地址以逗号分隔,可以正则表达式的使用通配符;设置后,仅限该 IP 地址访问该虚拟服务器 | |
| 访问地址黑名单 | 禁止访问的 IP 地址,多个 IP 地址以逗号分隔,可以正则表达式的使用通配符;设置后,该 IP 地址无法访问该虚拟服务器 | |
| 访问域名白名单 | 允许访问的域名地址,多个域名地址以逗号分隔,可以正则表达式的使用通配符;需要先开启"DNS 查找",配置【JVM 选项】-Dapusic.http.getHostFromNameService.enabled=true,重启一下 AAS,不然不生效。然后需要在服务端(例如管控台在 172.20.140.136),要在 136 这台机器映射客户端(例如浏览器在 172.20.140.138,域名为 test123),设置为 172.20.140.138 test123;同时要在客户端 172.20.140.138 也要映射 136 的虚拟主机名称,136.20.140.136 testhost.com。设置域名白名单之后,不用重启 AAS,不过可能接收慢,要多刷新几遍 | |
| 访问域名黑名单 | 禁止访问的域名地址,多个域名地址以逗号分隔,可以正则表达式的使用通配符。需要先开启"DNS 查找",配置【JVM 选项】-Dapusic.http.getHostFromNameService.enabled=true,重启一下 AAS,不然不生效。然后需要在服务端(例如管控台在 172.20.140.136),要在 136 这台机器映射客户端(例如浏览器在 172.20.140.138,域名为 test123),设置为 172.20.140.138 test123;同时要在客户端 172.20.140.138 也要映射 136 的虚拟主机名称,136.20.140.136 testhost.com | |
| 允许访问时间 | 设置允许访问的时间段,开始时间不能晚于结束时间;格式为00:00:00 | |
| 其他属性 | 添加其他属性 |
# 虚拟服务器验证
下面以应用程序 axis2,设置虚拟主机名为 m.testhost.com 为例。
修改访问 web 应用的浏览器的物理机(如自己的本机),Windows 操作系统一般在 C:\Windows\System32\drivers\etc\hosts 文件,添加 m.testhost.com 到 Apusic 应用服务器主机 IP 地址的映射。
在管理控制台 -> 配置 -> 【server-config 】-> 虚拟服务器中新建一个虚拟服务器,例如:test,设置对应的主机名 m.testhost.com 和所对应的应用 axis2,选择网络监听器为 http-listener-1。

在应用程序中选择对应的应用 axis2,一般信息中选择对应的虚拟服务器;如果应用服务器存在多个实例或服务器集群,在“管理目标”页面中设置虚拟服务器。

此时,通过在浏览器中用域名替换 IP 访问 axis2 应用所提供的内容。例如:
http://m.testhost.com:6888/axis2/services/StockQuoteService?wsdl

# Web 容器
# 一般属性设置
使用"一般属性"页可为 Web 容器添加或修改属性。
Web 容器用于托管 Web 应用程序。它为 Servlet 和 JavaServer Pages (JSP)文件提供了运行环境。

# 会话属性设置
使用"会话属性"页可以添加或修改 Web 容器会话的属性。
"会话属性"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读
| 配置项 | 说明 | 默认值 |
| 会话超时 | 指定非活动会话保持有效的最大秒数。如果该值设置为 0 或更小,则会话永不过期。该属性通常用于应用程序,如果该属性的值小于【域】->【应用程序配置】中的"管理会话超时"的值,管控平台的会话超时值以该处的值为准。设置后需求重启 AAS 才生效 | 1800秒 |
| 其他属性 | 添加其他属性 |

# 管理器属性设置
会话管理器提供了用于配置会话的创建和销毁方式、存储会话状态的位置以及可用会话的最大数量的方法。
使用"管理器属性"页可以为 Web 容器添加或修改会话管理器属性。
"管理器属性"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读
| 配置项 | 说明 | 默认值 |
| 清除时间间隔 | 从库中删除非活动会话数据之前经过的秒数 | 60秒 |
| 最大会话数 | 高速缓存中可以存储的最大会话数。如果值为 -1,则表示会话数不受限制 | -1 |
| 会话文件名称 | 应用程序重新启动之间保留会话状态的目录的绝对或相对路径 | |
| 会话 ID 生成器类名 | 用于生成会话 ID 的定制类 | |
| 会话ID长度 | 设置会话ID的长度,不能小于10。单位字节 | 14字节 |
| 其他属性 | 添加其他属性 |

# 存储属性
使用"存储属性"页可以为 Web 容器添加或修改会话持久性 (存储) 属性。

"存储属性"页包含以下选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 加载默认值 | 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改 | |
| 配置名称 | 此页上的设置应用到的配置的名称。此字段为只读 | |
| 目录 | 各个会话文件写入到的目录的绝对路径名或相对路径名。默认值为 domain-dir/generated/jsp/j2ee-apps/appname/appname_war。相对路径是相对于此 Web 应用程序的临时工作目录的路径 | |
| 其他属性 | 会话管理器的其他属性 |
# EJB.容器
# EJB 设置
使用"企业 Java Bean (EJB)"页可以配置 EJB 容器的设置。

除了企业 Bean 的常规设置之外,还可以配置池设置和高速缓存设置。
"企业 Java Bean (EJB)"页包括以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
会话存储位置: 在文件系统上存储钝化有状态会话 Bean 和持久性 HTTP 会话的目录。默认值为${com.apusic.aas.instanceRoot}/session-store。
提交选项: 指定容器高速缓存事务处理之间的钝化 Bean 实例的方式。
如果选择"选项 B"(默认选项),则容器将高速缓存事务处理之间的就绪实例。
如果选择"选项 C",则容器不会高速缓存事务处理之间的就绪实例。
初始和最小池大小: 要在池中维护的 Bean 的最小数目。默认值为 0。
最大池大小: 容器可以同时在池中维护的 Bean 的最大数目。默认值为 32。
池调整大小数量: 当 Bean 处于空闲状态的时间超过"池空闲超时"字段中指定的时间时,要从池中删除的 Bean 的数目。该值必须至少为 0,并小于"最大池大小"值。默认值为 8。
池空闲超时: 在将池中的 Bean 从池中删除之前,Bean 可以保持空闲状态的时间 (秒)。超过此时间后,Bean 将被销毁。如果值为 0,则表示 Bean 可以无限期保持空闲状态。默认值为 600。
最大高速缓存大小: 配置最大高速缓存值。
高速缓存大小调整数量: 当高速缓存已满时,要钝化的 Bean 的数目。达到高速缓存的 Bean 的最大数目之后,容器将从备份存储中删除一些钝化 Bean。该值还指定当池中没有可用的 Bean 时,如果收到请求将要创建的 Bean 的数目。该值必须大于 1,并小于"最大高速缓存大小"值。默认值为 32。
删除超时: 将钝化 Bean 从会话存储中删除之前经过的秒数。如果值为 0,则指定容器不自动删除非活动 Bean。如果"删除超时"值小于或等于"高速缓存空闲超时"值,则 Bean 将在不钝化的情况下立即删除。默认值为 5400。
删除选择策略: 容器用于将有状态会话 Bean 从高速缓存中删除的策略。
高速缓存空闲超时: Bean 可以在高速缓存中保持空闲状态的最大秒数。超过此时间后,容器可以钝化此 Bean。如果值为 0,则指定 Bean 永不成为钝化的候选。默认值为 600。
其他属性: EJB 容器的其他属性。
# MDB 设置
使用"MDB 默认池设置"页可以配置 MDB 池。

"MDB 默认池设置"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
初始和最小池大小: 要在池中维护的消息 Bean 的最小数目。默认值为 0。
最大池大小: 容器可以同时在池中维护的 Bean 的最大数目。默认值为 32。
池调整大小数量: 当 Bean 处于空闲状态的时间超过"池空闲超时"字段中指定的时间时,要从池中删除的 Bean 的数目。该值必须至少为 0,并小于"最大池大小"值。默认值为 8。
池空闲超时: 在将池中的 Bean 从池中删除之前,Bean 可以保持空闲状态的时间 (秒)。超过此时间后,Bean 将被销毁。如果值为 0,则表示 Bean 可以无限期保持空闲状态。默认值为 600。
其他属性: MDB 池的其他属性。Apusic 应用服务器不定义 MDB 池的任何其他属性。
# EJB 计时服务
使用"EJB 计时器服务"页可以配置 EJB 计时器服务。

计时器服务是由企业 Bean 容器提供的持久性和事务处理性通知服务,用于安排企业 Bean 使用的通知或事件。除有状态会话 Bean 之外的所有企业 Bean 均可从计时器服务接收通知。关闭或重新启动服务器时,不会销毁由服务设置的持久性计时器。
"EJB 计时器服务"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
最短传送时间间隔: 对于特定计时器,允许在下一次计时器到期之前经过的最小毫秒数。如果将此时间间隔设置得过小,则可能会导致服务器过载。默认值是 1000。
最多重新传送次数: 计时器服务尝试传送异常或回退计时器到期的最大次数。默认值为 1。
重新传送时间间隔: 重新传送尝试之间的时间间隔 (毫秒)。默认值为 5000。
计时器数据源: 将用作计时器数据源的 JDBC 资源的 JNDI 名称。如果指定,则此值将覆盖计时器服务系统应用程序的 jdbc/__TimerPool 的默认值。
# JMS服务
Java 消息服务 (JMS) 服务的常规属性仅适用于应用程序服务器的默认 JMS 提供方 AAS 消息队列。通过资源适配器插入应用程序服务器的所有其他消息传送提供方可以通过“连接器资源”屏幕来进行配置。
主要包含以下属性:
- JMS服务类型: JMS 服务位于本地还是远程系统上,可选择EMBEDDED/LOCAL/REMOTE;默认为EMBEDDED
- 启动超时: 等待 JMS 服务启动的时间;默认为60秒
- 启动参数: 启动 JMS 服务的 MQ 中介参数
- 重新连接: 当连接丢失时 JMS 服务是否尝试重新连接;默认启动
- 重新连接时间间隔: 两次重新连接尝试之间的秒数;默认为5秒
- 重新连接尝试: 尝试重新连接至每个地址的次数 ;默认为3次
- 默认JMS主机: JMS 服务在其上运行的系统
- 地址列表行为: 与地址的连接尝试是按顺序进行还是随机进行;random/priority;默认为random
- 地址列表重复: JMS 服务重复访问地址列表以尝试建立 (或重新建立) 连接的次数;默认为3次
- MQ方案: 消息队列地址方案名称
- MQ服务: 消息队列连接服务名

# JMS主机
Java 消息服务 (JMS) 主机指定运行 JMS 服务的系统。单击“新建”创建新的 JMS 主机。单击 JMS 主机的名称以修改其属性。

新建/编辑JMS主机
- 名称: 该JMS主机的名称,编辑页面不能编辑
- 主机: 名称或 IP 地址; 如果为名称, 则只能包含字母数字,下划线,短横线或点字符
- 端口: 用于服务 JMS 请求的监听程序端口;变量为${JMS_PROVIDER_PORT}
- 管理员用户名: 用于维护 JMS 服务的用户名; 名称最多可以包含 255 个字符, 并且只能包含字母数字,下划线,短横线或点字符
- 管理员口令: JMS管理员口令
- 确认新口令: 确认JMS管理员口令

# ORB 设置
# ORB 设置
使用"ORB"页可以配置对象请求中介。

ORB 提供了识别和定位对象、处理连接管理、传送数据和请求通信所需的框架结构。企业 Bean (EJB 模块) 的远程客户机使用 ORB 与 Apusic 应用服务器进行通信。
"ORB"页包含以下选项:
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
线程池 ID: ORB 使用的线程池。
最大消息片段大小: IIOP 消息的最大片段大小。大于此大小的消息将被分段。默认值为 1024 字节。
连接总数: 所有 IIOP 监听程序的最大外来连接数。默认值为 1024。
IIOP 客户机验证: 如果选中"已启用"复选框,则服务器将拒绝未经验证的请求并在发送给客户机的可交互使用的对象引用 (IOR) 中插入需要验证位。可以启用或禁用 IIOP 客户机验证。默认情况下禁用此选项。
其他属性: ORB 的其他属性。
# IIOP 监听程序
使用"IIOP 监听程序"页可以配置 IIOP 监听程序。

可以为 ORB 配置多个 IIOP 监听程序,每个 IIOP 监听程序接受不同的网络地址和端口组合上的连接。可以为安全通信和客户机验证配置不同的监听程序。
默认情况下,已配置了三个 IIOP 监听程序: orb-listener-1、SSL 和 SSL_MUTUALAUTH。
# IIOP 监听程序
IIOP 监听程序是一个监听程序套接字, 它接受来自 EJB 组件的远程客户机和其他基于 CORBA 的客户机的外来连接。
配置名称: 该 IIOP 监听程序所属的配置。
名称: 该 IIOP 监听程序的名称。如 SSL、SSL_MUTUALAUTH、orb-listener-1。
网络地址: 监听程序绑定到的网络地址。此地址可以是 IP 地址或 DNS 可解析的主机名; 这些名称只能包含字母, 数字,下划线,短划线或句点字符。
监听程序端口: 用于 IIOP 连接的 ORB 监听程序端口。变量分别为${IIOP_SSL_LISTENER_PORT}、${IIOP_SSL_MUTUALAUTH_PORT}、${IIOP_LISTENER_PORT}。
监听程序: 启用与应用程序服务器的 ORB IIOP 入站连接。默认开启。
安全性: 是否开启安全性。
注意: 修改后,需要重启 AAS。

# SSL
修改 IIOP 监听程序的安全套接字层 (SSL) 设置, 如果开启了“安全性”,需要配置 SSL 信息。
配置名称: 该协议所属的配置,如 server-config。
SSL3: 是否启用 SSL3,默认不勾选。
TLS: 是否启用 TLS,默认勾选。
TLS11: 是否启用 TLS,默认勾选。
TLS12: 是否启用 TLS,默认勾选。
客户机验证: 开启后,要求客户机向服务器验证自身。
证书昵称: 采用单个值, 标识服务器的密钥对和证书。AAS 默认有昵称为 kaas 的证书信息,管控平台目前只能使用 kaas,http-listener-2 允许设置为其他证书。
密钥库: 密钥库文件的名称,如${com.apusic.aas.instanceRoot}/config/keystore.p12,表示使用该密钥库。
信任算法: 要用于证书路径验证的信任管理算法的名称 (例如, PKIX)。
最大证书长度: 可以存在于证书路径中的非自颁发中间证书的最大数量 (仅在信任算法为 PKIX 时有效),默认为 5。
信任存储: truststore 文件的名称,如${com.apusic.aas.instanceRoot}/config/cacerts.jks,表示使用该目录下的信任库实体。
密码套件: 如果没有添加密码套件, 则将选择所有密码套件,可根据需要选择。
# 系统属性
"系统属性"页显示在所选的命名配置中定义的 Java 系统属性列表。在启动 Apusic 应用服务器时,Java 系统属性将通过 Java 应用程序启动程序的-D 选项传递到 Java 应用程序启动程序。添加“系统属性”需要重启实例才能生效。

这些属性定义了引用该配置的所有 Apusic 应用服务器实例的端口设置默认值。
对于每个属性,都将显示以下信息:
实例变量名称: 系统属性名称。
默认值: 为实例引用的命名配置中的属性所设置的值。此字段为只读。
实例值: 指向该属性的"实例值"页的链接。
"其他属性"表还包含以下选项:
添加属性: 用于添加属性的按钮。单击此按钮可向"其他属性"表中添加一行。
删除属性: 用于删除一个或多个所选属性的按钮。删除的任何属性会恢复其默认值,或者如果没有设置默认值,则未定义。
"系统属性"页还包含以下选项:
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
动态重新配置: 如果启用此选项,对配置所做的更改将应用到引用该配置的实例,而无需重新启动这些实例。
使用此配置的集群和/或实例: 引用此配置的集群和实例的列表,同时指示每个集群或实例是否正在运行:
如果集群或实例正在运行,将显示一个复选标记 (✓)。
如果集群或实例已停止,将显示一个感叹号 (!)。
# 安全服务
加强网络信息系统安全性,对抗安全攻击而采取的一系列措施称为安全服务。安全服务用于对数据进行保护,在存储和传输数据时,防止对数据进行未经授权的访问。特别是获得对系统的访问权限时,认证和授权是两个重要的过程。认证是一种实体(用户、应用或组件)用来确定另一个实体是否是其声明的实体的方法,实体使用安全凭证对其自身进行验证。授权是确定使用凭证的实体是否有权对所访问的资源进行操作的方法。
# 安全服务
使用【安全服务】页可为所选 Apusic 应用服务器实例或集群设置安全属性。
主要包含以下选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 配置名称 | 此页上的设置应用到的配置的名称 | |
| 安全管理器 | 果选中此选项,则将启用域的安全管理器 | 不启用 |
| 默认安全域 | 服务器用来进行验证的活动 (默认)领域。如果应用程序的部署描述符没有指定其他的领域,则应用程序使用此领域。列表中将显示所有已配置的领域 | file |
| JACC | 已配置的 JACC 提供方的类名 | default |
| 主机名验证 | 是否验证主机名;可选项为 不验证:不开启主机名验证功能 验证:开启主机名验证功能 自定义主机名验证器:设置自定义的主机名验证器,此时需要填写“主机名验证类名” | 不验证 |

# 安全域
安全域也称为安全策略域或身份验证领域,是AASv10在其上定义和实施通用安全策略的范围。安全域是应用服务器定义用于实施安全策略以进行认证、授权和访问控制的安全策略域,安全域包含用户的集合,这些用户可以分配也可以不分配给组。
AASv10已使用文件,证书和管理领域进行了预配置。此外,根据不同的用户存储方式,安全域可分为LDAP,JDBC,Digest,Oracle Solaris或自定义安全域。应用程序可以在其部署描述符中指定要使用的安全域。如果应用程序未指定安全域, AASv10将使用其默认安全域(file)。AASv10定义了如下的安全域:
- 文件域(file-realm): 将用户凭据本地存储在名为的文件中
${DOMAIN_HOME}/config/keyfile。文件域是初始的默认领域。 - 用户管理域(admin-realm): 用户管理域也是文件域,并将管理员用户凭据本地存储在名为的文件中
${DOMAIN_HOME}/config/admin-keyfile。用户管理域所存放的用户凭证为管控台的登录用户。 - 证书域(certificate-realm): 将用户凭据存储在证书数据库中。使用证书领域时,服务器使用具有HTTPS协议的证书来验证Web客户端。
- LDAP域(ldap-realm): 从轻型目录访问协议(LDAP)服务器获取用户凭据,例如Oracle虚拟目录(OVD),Oracle Internet Directory(OID)和Oracle Directory Server Enterprise Edition。LDAP是一种协议,使任何人都可以在公共Internet或公司Intranet上定位组织,个人和其他资源,例如网络中的文件和设备。
- JDBC域(jdbc-realm): 从数据库获取用户凭据。服务器使用配置文件中的数据库信息和启用的JDBC域选项。
- Digest域(digest-realm): 摘要式身份验证基于用户名和密码对用户进行身份验证。但是,通过以加密形式传输密码来执行认证。HTTP认证可分为Basic与Digest,使用AASv10安全域进行摘要认证必须使用继承了DigestRealm类的安全域,目前自带的安全域只有JDBC域支持。
- Oracle Solaris域(solaris-realm): 从Oracle Solaris操作系统获取用户凭证。Oracle Solaris 9和Oracle Solaris 10操作系统支持此领域。
- PAM域(pam-realm): 可插拔身份验证模块(PAM)领域允许AASV10上部署的应用程序根据本地Unix(Solaris / Linux / Mac OS)用户列表对用户进行身份验证。PAM领域使用类名
com.sun.enterprise.security.auth.realm.pam.PamRealm和JAAS Context pamRealm。 - 自定义域(custom-realm): 为用户凭据创建其他存储库,例如关系数据库或第三方组件。在AASv10中,通过继承
com.sun.enterprise.security.BaseRealm重写authenticate方法自定义域的存储方式以及用户与组的关系;通过继承com.sun.enterprise.security.BasePasswordLoginModule重写authenticateUser方法来自定义登录模块的验证方式。
Apusic 应用服务器预先配置了三个安全域: file、certificate 和 admin-realm。

使用"安全域"页可以配置安全域。
对于每个安全域,将提供以下信息:
名称: 安全域名称。
类名: 安全域的类名。
"安全域"表还包含以下选项:
- 新建: 用于创建新领域的按钮。
- 删除: 用于删除一个或多个所选领域的按钮。
Admin-realm
自带的安全域 admin-realm 主要用于认证用户信息,包含属性有:
类名:
com.sun.enterprise.security.auth.realm.file.FileRealm。JAAS 上下文: fileRealm;要用于此安全域的登录模块的标识符。
密钥文件:
${com.apusic.aas.instanceRoot}/config/admin-keyfile;文件(服务器将在其中存储此安全域的所有用户, 组和口令信息)的完整路径和名称。分配组: 此安全域适用的组,为空时表示所有,多个组名用逗号分隔。默认为空。
其他属性: 根据需要添加其他属性。
管理用户: 管理当前安全域的用户账号信息;可以新建、删除用户信息,同时编辑用户密码,功能与【用户管理】类似。

Certificate
自带的安全域 certificate 主要用于认证证书信息,包含属性有:
类名:
com.sun.enterprise.security.auth.realm.certificate.CertificateRealm。分配组: 此安全域适用的组,为空时表示所有,多个组名用逗号分隔。默认为空。

File
自带的安全域 file 主要用于认证证书信息,包含属性有:
类名:
com.sun.enterprise.security.auth.realm.file.FileRealm。JAAS 上下文: fileRealm;要用于此安全域的登录模块的标识符。
密钥文件:
${com.apusic.aas.instanceRoot}/config/keyfile;文件 (服务器将在其中存储此安全域的所有用户, 组和口令信息) 的完整路径和名称。分配组: 此安全域适用的组,为空时表示所有,多个组名用逗号分隔。默认为空。
其他属性: 根据需要添加其他属性。

# 新建安全域
点击“新建”进入新建安全域页面,根据需要配置相关信息。带*表示必填。“名称”需要唯一。
名称: 定义该安全域名称,需唯一
类名: 根据需要选择,如果是自定义,在输入框中输入
特定于此类的属性: 根据不同的安全域,配置指定的属性

# 编辑安全域
点击安全域名称,进入编辑页面,可以根据需要编辑安全域信息。保存后,需要重启应用服务器配置才会生效。

# 删除安全域
选择需要删除的安全域,点击“删除”,确认删除后将会删除对应的安全域信息。需要谨慎操作。
注意:应用服务器自带的安全域建议非必要不要删除。

# 审计模块
使用"审计模块"页可以配置审计模块。
审计指的是 Apusic 应用服务器对错误或安全性破坏等重要事件进行记录。Apusic 应用服务器在日志文件中记录所有验证事件。完整的访问日志提供了 Apusic 应用服务器访问事件的顺序线索。

# JACC 提供方
使用"JACC 提供方"页可为所选 Apusic 应用服务器实例或集群配置 Java Authorization Contract for Containers (JACC) 提供方。

第三方授权模块可使用 JACC 提供方控制 Apusic 应用服务器中运行的应用程序。默认 Apusic 应用服务器安装包括名为 default 和 simple 的两个 JACC 提供方。这两个默认提供方实现了符合 JACC 规范的基于文件的简单授权引擎。您也可以创建自己的定制 JACC 提供方。
对于每个 JACC 提供方,将提供以下信息:
名称: JACC 提供方名称。该名称用于引用
domain.xml中的jacc-provider。策略配置: 实现特定于提供方的
javax.security.jacc.PolicyConfigurationFactory的javax.security.jacc.PolicyConfigurationFactory.provider的全限定类名。策略提供方: 实现
java.security.Policy的javax.security.jacc.policy.provider的全限定类名。
默认 JACC 提供方还支持以下属性,"JACC 提供方"表还包含以下选项:
新建: 用于创建新的 JACC 提供方的按钮。
删除: 用于删除一个或多个所选 JACC 提供方的按钮。
# 消息安全
使用"消息安全配置"页可以查看和修改消息安全提供方的可用配置。
Apusic 应用服务器使用在其 SOAP 处理层中集成的消息安全提供方来实现消息安全。消息安全提供方取决于 Apusic 应用服务器的其他安全性工具。

对于每个配置,将提供以下信息:
验证层: 执行验证的消息层。默认情况下,已提供 SOAP 配置。还可以提供 HttpServlet 配置。
默认提供方: 此配置的默认服务器提供方。默认情况下,不配置任何默认服务器提供方。
默认的客户机提供方: 此配置的默认的客户机提供方。默认情况下,不配置任何默认的客户机提供方。
"消息安全配置"表还包含以下选项:
- 新建: 用于创建新配置。
- 删除: 用于删除一个或多个所选配置。
# 事务处理服务
使用【事务处理服务】页可以配置事务处理恢复、超时和日志记录。

"事务处理服务"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
重新启动时: 如果选中"已启用"复选框,Apusic 应用服务器将在服务器重新启动时尝试恢复未完成的事务处理。默认情况下禁用此选项。
事务处理超时: 回退未完成事务处理之前,服务器等待的秒数。默认值为 0,表示服务器无限期地等待事务处理完成。
重试超时: Apusic 应用服务器尝试连接到不可访问的服务器的秒数。默认值为 600 (10 分钟)。
事务处理日志位置: 保存服务器日志的目录。事务处理日志保存在此字段所指定目录的 tx 子目录中。默认值为"域属性"页 (位于"Apusic 应用服务器"节点的"高级"选项卡下) 的"日志根"字段指定的目录。
启发式决策: 对于涉及不可访问服务器的事务处理,是要提交还是回退。默认值为"回退"。提交不确定的事务处理会破坏应用程序的数据完整性。
关键点间隔: 关键点操作 (压缩事务处理日志文件)之间的事务处理数。默认值为 65,536。
其他属性: 事务处理服务的其他属性。
# 连接器服务
使用【连接器服务】页可以修改管理资源适配器的连接器服务的常规设置。

"连接器服务"页包含以下选项:
加载默认值: 使具有默认值的设置还原到其默认值的按钮。不具有默认值的设置不会发生更改。
配置名称: 此页上的设置应用到的配置的名称。此字段为只读。
关闭超时: 在 Apusic 应用服务器关闭过程中,允许用于完成连接器模块实例的 ResourceAdapter.stop 方法的最大秒数。需要更长时间关闭的资源适配器将被忽略,而 Apusic 应用服务器关闭操作将继续。默认值为 30 秒。
连接器类加载策略: 要用于加载类的策略。可用选项为:
derived: 指示根据应用程序对任何资源适配器资源的引用来提供资源适配器。此策略为默认策略。
global: 指示所有资源适配器对所有应用程序都将是可见的。
# 事务管理
系统管理员登录系统,点击导航栏"事务管理"进入事务管理模块。该模块页面显示运行中的事务列表,查看事务的运行时间,状态等信息以及对运行中的事务有手动回滚功能。
操作: 进入【配置管理】->【server-config】->【监视服务】,设置组件"Transaction Service"的监视级别为"高",开启事务监控。
当有事务处于活跃状态时,页面将显示事务信息,等待运行。事务结束后,该事务将不会再显示在列表中。
选择事务列表,点击"取消"可以手动取消事务运行。

# 生命周期
使用系统管理员登录系统,对生命周期模块相关属性进行设置。
当生命周期模块被服务器生命周期中的一个或多个事件触发之后,它将执行任务。可能的服务器触发事件包括: 初始化, 启动, 为服务请求做准备和关闭。生命周期模块不是 Java EE 规范的一部分,而是对 Apusic 应用服务器的增强。

对于每个生命周期模块,提供以下信息:
名称: 生命周期模块的名称。
状态: 说明该生命周期模块在哪几个实例中启用。
加载顺序: 指定应加载生命周期模块的相对顺序。
生命周期模块表表还包含以下选项:
新建: 用于创建新生命周期模块。
删除: 用于删除一个或多个选定生命周期模块。
# 新建生命周期模块
在生命周期模块界面点击【新建】按钮新建生命周期模块。

"新生命周期模块"页面包含以下选项。
- 名称: 生命周期模块的名称。
- 类名: 生命周期模块的类文件名称。
- 类路径: 生命周期模块的类路径。类路径指定生命周期模块的位置。默认值 domain-dir/applications。如果模块已在此目录中(即在服务器类路径中),则此字段可以留空。
- 加载顺序: 启动时加载此生命周期模块的顺序。具有较小整数加载顺序值的模块会更快加载。该值的范围可以从 101 到操作系统 MAXINT。保留 1 到 100 之间的值。
- 说明: 生命周期模块的描述说明。
- 状态: 如果选择此选项,则启用生命周期模块。默认情况下启用此选项。
- 加载失败时: 如果选择此选项,则在生命周期模块无法加载时将关闭服务器。默认情况下禁用此选项。
- 目标: 定义生命周期模块目标实例,可以为集群和独立实例。仅当在域中创建了集群或独立实例时,才会显示此选项。
# 生命周期模块目标
新建生命周期模块后,可以对生命周期模块目标进行添加和移除等管理操作,在列表中点击生命周期模块名称,进入编辑界面,切换到目标页签,对目标进行管理。

使用生命周期模块目标页面可以查看到在其上启用生命周期模块的目标集群和独立服务器实例。
生命周期模块目标页面包含以下信息:
目标名称: 集群或独立服务器实例的名称。
已启用: 显示 true 是否在目标上启用了生命周期模块,或者 false 是否禁用了生命周期模块。
目标表还包含以下操作选项:
管理目标: 用于管理生命周期模块目标的按钮。
更多操作:
启用: 在所选目标上启用生命周期模块的操作。
禁用: 禁用所选目标上的生命周期模块的操作。
# 系统设置
系统配置只能够允许角色为安全保密员(security)的用户访问,如使用默认安全保密员用户 secure 登录,登陆后选择系统配置,进入到系统配置界面下:

# 密码策略
密码策略配置项主要总体配置用户的密码的长度复杂度等,具体属性如下:
密码长度: pwdLength;规定所有用户包括管理员的密码长度要求,必须大于等于设定值;默认为 8 个字符。
密码有效天数: pwdValidateDay;规定密码从修改日开始的有效天数,超过有效天数则需要重新修改;默认为 30 天。
账号有效小时数: validHour;规定账号的有效小时数,自首次登录开始计时,超过设置的有效小时数后账号将会被禁用;默认为 720 小时。角色为 security 的用户不受影响。
密码重试次数: maxLoginAttempts;用户登陆时允许重试密码的次数,超过此次数则锁定用户;默认为 5 次。
密码复杂度: pwdComplex;普通,必须是大小写英文字母、数字和特殊字符中两者的组合;复杂,必须是大小写英文字母、数字和特殊字符中两者以上的组合;。
用户锁定时间: pwdRestoreMinute;用户登录失败后锁定的期限,锁定时间超过该值后会自动解锁。默认为 15 分钟。
注意: 用户修改密码时,限制五次内密码不能重复。
对应 domain.xml
<security-service>
<property name="pwdLength" value="8"></property>
<property name="pwdValidateDay" value="30"></property>
<property name="maxLoginAttempts" value="5"></property>
<property name="pwdComplex" value="common"></property>
<property name="pwdRestoreMinute" value="15"></property>
<property name="validHour" value="720"></property>
</security-service>
2
3
4
5
6
7
8

- 弱密码设置: 在
${DOMAIN_HOME}/config/下创建文件weak-password,在文件中设置的口令即为弱口令,用户设置口令时校验不允许设置。多个口令用英文,隔开,如设置 abcd1234、Abcd123、Apusic321 为弱口令,用户设置密码为 abcd1234、Abcd123、Apusic321 时校验不允许设置。

用户密码设置为 abcd1234 时显示提示:

# 会话配置
会话配置项主要总体配置用户登陆的会话总数以及会话有效时间,具体配置属性如下:
会话有效时间: 指定非活动会话保持有效的最大秒数。
会话总数: maxSessions;允许用户同时登陆的最大在线数(系统所有用户的会话总数,非单个账号;单个账号重复登录时需要注销其他地方的会话才能登录)。
<security-service>
<property name="maxSessions" value="-1"></property>
</security-service>
2
3
# 日志配置
审计和操作配置项主要分别配置审计日志和操作日志的数量和保留时间等信息,具体配置属性如下:
审计日志数量上限: maxAuditLogNum;审计日志存储数据库里的数量限制,超过此限制则从最早的记录开始覆盖。
审计日志保留时间: maxAuditLogPreservedDay;审计日志记录保存时间,单位是天。
操作日志数量上限: maxOperateLogNum;操作日志存储数据库里的数量限制,超过此限制则从最早的记录开始覆盖。
操作日志保留时间: maxOperateLogPreservedDay;操作日志记录保存时间,单位是天。
定时备份周期: timingBackupCycle;审计和操作日志设置的定期备份周期,默认保存目录为
${DOMAIN_HOME}/audit/timing,单位为月/次。定时备份保留时间: timingBackupSaveDay;定时备份的审计和操作日志保留的时间,单位为天。-1 表示永久保留。
<security-service>
<property name="maxAuditLogNum" value="10000"></property>
<property name="maxAuditLogPreservedDay" value="180"></property>
<property name="maxOperateLogNum" value="10000"></property>
<property name="maxOperateLogPreservedDay" value="180"></property>
<property name="timingBackupCycle" value="1"></property>
<property name="timingBackupSaveDay" value="-1"></property>
</security-service>
2
3
4
5
6
7
8

# 业务配置备份
业务配置备份主要配置默认实例业务备份目录和定时备份周期,具体配置属性如下:
共享备份目录: backupDic;业务配置信息备份到的目录(即备份
${APUSIC_HOME}/domains/mydomain/config到共享备份目录),支持本地备份和异地备份,异地备份需要先设置文件共享。默认备份位置为${com.apusic.aas.instanceRoot}/backup/config。定时备份周期: timingBackupBusinessCycle;业务配置信息备份的周期,单位为月/次。默认为 1 月/次。
定时备份开关: timingBackupEnabled,true/false;是否开启定时备份业务配置,开启后将会按照"定时备份周期"备份配置信息,默认为不开启。
对应 domain.xml
<security-service>
<property name="timingBackupBusinessCycle" value="1"></property>
<property name="backupDic" value="${com.apusic.aas.instanceRoot}/backup/config"></property>
<property name="timingBackupEnabled" value="true"></property>
</security-service>
2
3
4
5
# 邮件验证配置
邮件验证配置主要作用为对管控台的登录用户进行二次验证,具体配置属性如下 domain.xml 对应位置<security-service><property name="" value=""></property></security-service>:
邮箱验证开关: mailValidationSwitchValue,值为 True/False;设置是否开启邮箱验证功能。
发送邮件服务器主机: mailServerHost;设置发送邮件的邮件服务器,一般格式为
smtp.***.com。发送邮件服务器端口: mailServerPort;设置发送邮件服务器的端口,需要使用 ssl 端口。
发送邮箱: fromAddress;设置发送邮件的邮箱地址。
发送邮箱密码: fromAddressPassword;输入发送邮箱的密码,如果开启了客户端授权密码,则输入授权码。
收件邮件: toAddress;设置接收验证码的邮箱。
domain.xml
<security-service>
<property name="mailServerHost" value="smtp.163.com"></property>
<property name="mailServerPort" value="994"></property>
<property name="fromAddress" value="z43@163.com"></property>
<property name="toAddress" value="12@qq.com"></property>
<property name="fromAddressPassword" value="**********"></property>
<property name="mailValidationSwitchValue" value="false"></property>
</security-service>
2
3
4
5
6
7
8
开启邮件验证设置之后,用户点击登录后,进入验证码输入页面。
输入验证码后点击"确定",将进入管控台操作页面。
如果要返回登录页面,点击"返回"。
需要重新获取验证码时,点击"没收到验证码,重新发送"。


# 用户管理
角色为系统管理员(sysadmin)的用户可以对系统用户进行新增、修改、删除等管理操作,角色为安全保密员(secure)的用户除了可以对用户进行新增、修改删除等管理操作,还可以对用户进行安全属性的设置,如对用户进行锁定、禁用、IP 访问限制以及访问时间段限制等操作。
用户信息存储在${DOMAIN_HOME}/mydomain/config/admin-keyfile 中。
# 系统管理员管理用户
使用角色为系统管理员的用户登录管控,切换到配置 -> 【server-config】 -> 安全性 -> 安全域 -> admin-realm 页面,点击【管理用户】按钮进入用户管理界面。在用户管理界面可以对用户进行新增,编辑和删除等操作。因用户信息需要在 admin-realm 中,所以创建的非默认角色的用户的"角色列表"会显示有 sysadmin 项,但实际的角色为设置的角色。


# 安全保密管理员管理用户
使用角色为安全保密管理员的用户登录管控,切换到用户管理界面。
在用户管理界面可以对用户进行添加、编辑和删除操作。
用户名: 应用服务器的用户名称,需要唯一。
用户状态: 显示用户的状态。
系统角色: 显示用户的角色。
密码失效时间: 显示密码的失效时间,默认为初始化用户后 30 天,在【系统管理】中修改"密码失效时间",该处的时间将会同步修改。
允许访问开始时间(HH: MM): 用户允许访问管控台的开始时间,格式为 HH: MM。
允许访问结束时间(HH: MM): 用户允许访问管控台的结束时间,格式为 HH: MM。
允许访问 IP: 用户允许访问的 IP,即为浏览器所在的 IP。
密级: 用户所属的密级。
PRIVILEGE: 是否为初始化用户,为 TRUE 时,该用户不能直接删除。

# 新建用户
可点击"添加",进入新建用户页面。
用户名: 应用服务器的用户名称,名称最多可以包含 255 个字符, 并且只能包含字母数字,下划线,短横线或点字符,需要唯一。
角色名: 选择用户的角色,不同角色有不同的权限。分别有 security、sysadmin、auditor、publish_role(表示新建、编辑等操作受限制的用户)。
新口令: 设置用户的口令,【系统管理】中,"密码复杂度"设置完为"普通"时,密码必须包含字母、数字和特殊符号中的至少两种组合;"复杂"时,密码必须包含字母、数字和特殊符号。
确认新口令: 需要输入与"新口令"一致。

# 编辑用户信息
点击"用户管理"列表中的"用户名",进入对应用户的编辑页面。
用户名: 该用户的名称,不能编辑。
用户状态: 设置用户的状态,NORMAL 表示正常;LOCKED 表示锁定,默认为锁定 15 分钟;DISABLED 表示禁用。
系统角色: 设置用户的角色。
旧口令: 修改密码时需要输入用户的旧口令。
新口令: 设置用户的口令,【系统管理】中,"密码复杂度"设置完为"普通"时,密码必须包含字母、数字和特殊符号中的至少两种组合;"复杂"时,密码必须包含字母、数字和特殊符号。修改密码 5 次內不能重复。
确认新口令: 需要输入与"新口令"一致。
允许访问开始时间(HH: MM): 用户允许访问管控台的开始时间,格式为 HH: MM。
允许访问结束时间(HH: MM): 用户允许访问管控台的结束时间,格式为 HH: MM。
允许访问 IP: 对用户访问管控的 IP 进允许限制,即为浏览器所在的 IP 可以用精确的 IP 地址,[10-60]及*格式,多个 IP 使用英文逗号分隔。
密级: 用户所属的密级,该用户只能访问同一等级或低等级的应用或资源。当前有秘密、机密、绝密三个等级,权限等级:秘密<机密<绝密。
注意: 编辑用户信息后,会同步刷新用户的 session 状态,处于登录中的会话将会失效,退出登录。

# 删除用户信息
选择用户,点击"删除"将可删除该用户。需注意:
"PRIVILEGE"为 TRUE 的用户不能直接删除;若需要删除,需要删除数据库
${DOMAIN_HOME}/mydomain/database/userDataBase,修改${DOMAIN_HOME}/mydomain/config/admin-keyfile中对应的用户名为其他用户名,重启 AAS。系统必须有初始化的对应角色的用户。

# 重置密码
用户重置密码可参考以下方法。
一、当前用户重置密码
当前用户登录管控平台,通过首页进入【管理员口令】页面,可自行修改密码

二、通过安全管理员重置用户密码
安全管理员登录管控平台,进入【用户管理】,点击用户名称,进入该用户编辑页面,可以为该用户设置密码


三、通过系统管理员重置用户密码
系统管理员登录管控平台,进入【配置管理】-【server-config】-【安全服务】-【安全域】-【admin-realm】-【管理用户】,点击用户名,进入编辑页面可修改用户密码

四、忘记密码时重置用户密码
方法 1: 如果某个非安全管理的用户,如 admin 密码忘记了,通过安全管理员登录管控平台,为该用户重置密码。
方法 2: 如果某个管理员包括安全管理员和系统管理员密码忘记了,但是其他用户密码知道,就可以拷贝安装路径下 ${APUSIC_HOME}/mydomain/config/admin-keyfile 中的其他用户的密码,替换需要修改密码的 用户的密码。需要重启系统才生效。
方法 3: 如果某个管理员包括安全管理员密码忘记了,系统管理员的密码还记得,使用系统管理员 如admin 登陆管理,进入【配置管理】-【server-config】-【安全服务】-【安全域】-【admin-realm】-【管理用户】页面,点击用户名称编辑用户,可以修改用户密码。
方法 4: 修改 ${APUSIC_HOME}/mydomain/config/admin-keyfile 文件里面对应的用户的密码,使用如下密码替换"{SSHA256}iU4Ef2uGWYh3V+BQjpW5f8BTbgGWzKp7pfrNU020Nu2l9YLEwCWOpA==",重置为空密码,重启系统,需要重新设置密码。
# 修改初始用户名
一般情况下系统自带初始化三员用户名,分别为 admin/secure/audit,默认情况下不建议修改。如果需要修改的话分两种情况解决。
第一种: AAS 尚未初始化。此时可进入${DOMAIN_HOME}/mydomain/config/admin-keyfile 将对应的用户名修改为需要设置的用户名,保存,启动 AAS。
第二种: AAS 已经初始化。需要删除数据库${DOMAIN_HOME}/mydomain/database/userDataBase;修改${DOMAIN_HOME}/mydomain/config/admin-keyfile 中对应的用户名为需要设置的用户名,保存。启动 AAS,此时需重新输入用户密码。
# 角色管理
创建并管理角色,AAS 自带角色包括 sysadmin,security,auditor,不能编辑或删除。自带开发者角色 publish_role,允许编辑或删除。
角色名: 角色的名称。
角色所属用户: 当前角色所属的角色,【用户管理】中设置"系统角色"将实时更新。
角色资源: 角色拥有的资源。

点击"新建",进入新建系统角色页面。
角色名: 角色的名称,名称最多可以包含 255 个字符, 并且只能包含字母数字,下划线,短横线或点字符,需要唯一。
开发者角色: 开发者角色不具备修改配置及资源、配置模块的部分权限,默认选择为 false。
角色资源: 设置当前角色的资源,shift 键可以连续多选,Ctrl 键可以选择多选。建议需要选择"首页"。

用户 test1 所属的角色为 myrole,因而其登录管控平台只显示有 myrole 的资源。

点击角色名称,将进入编辑角色页面,可对角色资源进行编辑。修改后,用户需要重新登录管控平台才能生效。

# 资源管理
创建并管理菜单资源,无法修改删除保留的 privilege 资源包括 sysadmin,security,auditor 对应有权限的访问资源。

# 日志审计
对系统重要的操作,敏感数据等操作或者一些非法操作等系统会生成相应的日志,审计员可以对这些日志进行审计。
# 操作日志
使用角色为审计管理员的用户登录管控,切换到操作日志界面。

在操作日志界面可以做如下操作:
可以查看系统所有的操作日志,并且可以设置查询条件进行过滤查询。查询条件有“用户名”、“系统角色”、“事件类型”、“开始时间”和“结束时间”;设置查询条件后点击“搜索”即可进行条件搜索。
点击【备份】按钮可以对操作日志进行备份操作,备份的日志文件存放在
${APUSIC_HOME}/domain_name/audit目录下。
# 审计日志
使用角色为审计员的用户登录管控,切换到审计日志界面。

在审计日志界面可以做如下操作:
- 可以查看系统所有的审计日志,并且可以设置查询条件进行过滤查询。查询条件有“用户名”、“系统角色”、“事件类型”、“开始时间”和“结束时间”;设置查询条件后点击“搜索”即可进行条件搜索。
- 点击【备份】按钮可以对审计日志进行备份操作,备份的日志文件存放在
${APUSIC_HOME}/domain_name/audit目录下。
# 升级管理
Apusic 应用服务器支持通过管控平台进行补丁升级。补丁功能分为两个模块,一、补丁管理,通过管理控制台进行补丁上传、移除管理,列表汇总补丁对应作用,二、实例升级,在实例升级界面展示所有实例的补丁分配及生效相关情况,后台将根据实际所需通过 sftp 协议将补丁传送(或移除)到远程节点上的实例。
# 处理机制
AAS V10 应用服务器类加载机制比较复杂,常见需要进行补丁替换的应用服务器 jar 包或字节码路径有 4 个:
ApusicAS/aas/modules/*
ApusicAS/aas/lib/install/applications/*
ApusicAS/aas/domains/${domain-name}/lib/*
ApusicAS/aas/lib/install/applications/__admingui/WEB-INF/lib/
分别由不同类加载器进行处理,应用服务器加载补丁时,通过补丁内的目录结构识别每个 jar 所对应的类加载器,如(1./modules 2./lib/install/applications/ 3./lib 4./console),在相应的阶段进行优先路径的处理。
例子: 补丁包结构,对应替换包路径,如替换 modules 下的包:

# 补丁命名
为了更好地管理补丁,使补丁间关系清晰,对补丁的命名规范化。
具体命名规则如下:
| 版本号 | 说明 | 示例 |
|---|---|---|
| 第一位版本号 | 代表软件更新换代 | 如 V10.0.1.P1 |
| 第二位版本号 | 软件有计划的大的功能升级 | 如 V10.0.1.P1 |
| 第三位版本号 | 软件有计划的小的功能升级 | 如 V10.0.1.P1 |
| 第四位版本号 | 发布的版本号 | 如 V10.0.1.P1 |
| 第五位版本号 | 发布的小版本号 | 如 V10.0.1.P1**.001** |
| 在版本号后加 T | 临时版本号 | 如 V10.0.1.P1T |
| 在小版本号后加 T | 临时小版本号 | 如 V10.0.1.P1**.001T** |
# 补丁的过滤与排序
未来可能会出现很多临时和正式补丁,这些补丁并不需要用户关心和整理,补丁工具会自行判断哪些补丁应该生效。
大版本补丁和小版本补丁都是累计补丁,换言之,同时最多只有一个大版本补丁和小版本补丁同时生效(如果大版本补丁比小版本补丁的版本更加大,则小版本补丁不生效)。
例子:
补丁类型:
累计补丁包。
临时累计补丁包。
累计小版本补丁包。
临时小版本补丁包。
说明: 累计补丁包含全部补丁,小版本补丁包含过渡补丁包。
如:
A V10.0.1.P1 (包含 a.jar b.jar c.jar)
B(临时)V10.0.1.P1.001T (包含 e.jar)
C V10.0.1.P1.001 (包含 e.jar)
D(临时)V10.0.1.P1.002T (包含 e.jar f.jar)
E V10.0.1.P1.002 (包含 e.jar f.jar)
F (临时)V10.0.1.P2T (包含 a.jar b.jar c.jar e.jar f.jar)
G V10.0.1.P2 (包含 a.jar b.jar c.jar e.jar f.jar)
加载机制:
A B 同时存在时,加载 A B
A B C 同时存在时,加载 A C
A B C D 同时存在时,加载 A D
A B C D E 同时存在时,加载 A E
A B C D E F 同时存在时,加载 F
A B C D E F G 同时存在时,加载 G
# 补丁管理
可通过管控平台进入【升级管理】->【补丁管理】,上传补丁文件。补丁文件需要为 zip 包,且需要根据处理机制和补丁命名打包。
上传后,在${DOMAIN_HOME}下 patches/和 patch/ 目录,上传的文件保存在 patches/ 下。
如果补丁文件已经被指定过,那么补丁文件将会解压在 patch/ 中,此时在【补丁管理】页面中删除补丁文件不会影响到 patch/ 下的文件,但 patches/ 中不再有补丁 zip 包。


# 实例升级
可通过管控平台进行实例升级。实例升级页面中显示当前 AAS 中所有的实例,可对实例进行指定补丁、回滚补丁操作。
名称: 实例的名称。
类型: 实例类型。
节点: 实例所在的节点。
位置: 补丁文件存放的位置。
已指定补丁: 实例已指定的补丁。
指定时间: 补丁指定的时间。
生效时间: 补丁生效的时间。
回滚补丁: 进入回滚补丁页面,可以选择补丁文件进行回滚。
指定补丁: 进入指定补丁页面,可以选择补丁文件进行指定。
选择集群: 可以选择集群的实例。

# 指定补丁
选择需要指定补丁的实例,进入指定补丁页面,选择补丁,点击"启用"。选择完毕,提示需要重启实例补丁才会生效。
注意: 此功能需要谨慎使用。

# 回滚补丁
选择需要回滚补丁的实例,进入回滚补丁页面,选择补丁,点击"回滚补丁"。选择完毕,提示需要重启实例回滚才会生效。
注意: 此功能需要谨慎使用。

# 开启国际化语言显示
金蝶Apusic应用服务器支持国际化语言,设置英文显示。默认值为中文显示。
# 服务器设置
1.通过管控平台设置。系统管理员登录管控平台,【域配置】-【域属性】,在“区域设置”中输入 en_US,保存;重启AAS。
针对后台提示语语言问题,需要设置JVM参数,-Duser.region=CN,-Duser.language=zh

2.通过配置文件domain.xml设置。在domain.xml中设置locale="en_US",保存;重启AAS生效。
<domain
application-root="${com.apusic.aas.instanceRoot}/applications"
create-conflict-report="true" locale="en_US"
version="202111160954" check-instance="false"
log-root="${com.apusic.aas.instanceRoot}/logs"
check-instance-time="30">
</domain>
2
3
4
5
6
7
3.通过命令行设置。执行 ./asadmin set domain.locale=en_US ;执行成功后,重启AAS生效。
设置为英文显示,系统管理员登录显示如下:设置为英文显示,系统管理员登录显示如下:

# 浏览器设置
在服务器设置了英文语言显示后,客户端也需要设置优先使用英文语言。
1.Firefox设置方式:
在浏览器中调出配置,about:config,搜索intl.accept_language,设置en-US在最前面

再在“设置”中,设“语言”为English(US)。重启浏览器

2.Chrome设置方式:
在“设置”页面,设置“语言”为“英语”,将“英语”上移到顶部,勾选“以这种语言显示GoogleChrome;重启浏览器

# 通过环境变量设置参数
金蝶Apusic应用服务器支持通过环境变量设置线程池、JVM参数,可在profile文件中直接设置参数,或引用文件设置参数。
注意: 1.必需在环境变量中设置 export AAS_CONFIG 才能生效;值为true表示开启,值为false表示关闭,值为文件路径表示引用该文件
2.如果设置了环境变量,则会优先应用环境变量设置的值
3.设置JVM参数时,多个用空格隔开;删除JVM参数,在参数前加[-];JVM参数会直接引用但不会修改domain.xml配置文件中的JVM选项显示值
4.引用外部文件时,文件格式可以为.conf/.properties/.txt等;需要赋权;设置AAS_JVM_OPTS的值不需要有引号
5.设置日志文件AAS_LOG_FILE,首次引用环境变量不会生效,要重启AAS才会生效
# 在profile文件设置
需要开启引用环境变量,export AAS_CONFIG=true;再设置参数。保存配置文件,并让配置文件生效,重启AAS即可生效。

# 引用外部文件设置
将参数设置在某份文件中,文件格式如.conf/.properties/.txt等,例如properties.conf;再开启引用环境变量,格式为 export AAS_CONFIG=[file_path],例如export AAS_CONFIG=/opt/testz/1012/properties.conf;[file_path]需要开放权限;保存配置文件,并让配置文件生效,重启AAS即可生效。

# 参数说明
在环境变量中设置参数,必需先设置是否开启环境变量设置AAS参数 AAS_CONFIG,保存后需要使配置文件生效,再重启AAS。
| 属性名称 | 属性说明 |
|---|---|
| AAS_CONFIG | 是否开启环境变量设置AAS参数,true为开启,false为关闭;可以直接设置文件路径 |
| AAS_HTTP_THREAD_POOL_MAX_QUEUE_SIZE | 线程池http-thread-pool最大队列大小 |
| AAS_HTTP_THREAD_POOL_MAX_SIZE | 线程池http-thread-pool最大线程池大小 |
| AAS_HTTP_THREAD_POOL_MIN_SIZE | 线程池http-thread-pool最小线程池大小 |
| AAS_HTTP_THREAD_POOL_IDLE_TIMEOUT | 线程池http-thread-pool空闲线程超时 |
| AAS_THREAD_POOL_1_MAX_QUEUE_SIZE | 线程池thread-pool-1最大队列大小 |
| AAS_THREAD_POOL_1_MAX_SIZE | 线程池thread-pool-1最大线程池大小 |
| AAS_THREAD_POOL_1_MIN_SIZE | 线程池thread-pool-1最小线程池大小 |
| AAS_THREAD_POOL_1_IDLE_TIMEOUT | 线程池thread-pool-1空闲线程超时 |
| AAS_ADMIN_THREAD_POOL_MAX_QUEUE_SIZE | 线程池admin-thread-pool最大队列大小 |
| AAS_ADMIN_THREAD_POOL_MAX_SIZE | 线程池admin-thread-pool最大线程池大小 |
| AAS_ADMIN_THREAD_POOL_MIN_SIZE | 线程池admin-thread-pool最小线程池大小 |
| AAS_ADMIN_THREAD_POOL_IDLE_TIMEOUT | 线程池admin-thread-pool空闲线程超时 |
| AAS_HTTP_LISTENER_1_PORT | 监听程序http-listener-1监听端口 |
| AAS_HTTP_LISTENER_1_URI_ENCODE | 监听程序http-listener-1URI编码 |
| AAS_HTTP_LISTENER_1_MAX_POST_SIZE | 监听程序http-listener-1最大POST大小 |
| AAS_HTTP_LISTENER_1_MAX_CONNECTIONS | 监听程序http-listener-1最大请求数 |
| AAS_HTTP_LISTENER_1_COMPRESS_ENABLE | 监听程序http-listener-1是否开启压缩 |
| AAS_HTTP_LISTENER_1_COMPRESS_TYPE | 监听程序http-listener-1可压缩Mime类型 |
| AAS_HTTP_LISTENER_1_COMPRESS_SIZE | 监听程序http-listener-1压缩最小大小 |
| AAS_HTTP_LISTENER_1_DIABLE_METHOD | 监听程序http-listener-1禁用HTTP方法 |
| AAS_HTTP_LISTENER_1_RELAXEDQUERYCHARS | 监听程序http-listener-1特殊字符白名单 |
| AAS_HTTP_LISTENER_1_FILE_CACHE_ENABLE | 监听程序http-listener-1是否开启文件高速缓存 |
| AAS_HTTP_LISTENER_1_FILE_CACHE_LIVE | 监听程序http-listener-1文件缓存最长存活时间 |
| AAS_HTTP_LISTENER_1_FILE_CACHE_MAX_SIZE | 监听程序http-listener-1文件缓存最大高速缓存大小 |
| AAS_HTTP_LISTENER_1_FILE_CACHE_MAX_COUNT | 监听程序http-listener-1文件缓存最大文件数 |
| AAS_JVM_OPTS | 设置JVM选项,多个JVM选项用空格隔开,删除操作在参数前加[-] |
| AAS_TCP_BACKLOG | 设置TCP传输最大连接数 |
| AAS_TCP_ACCEPT_THREADS | 设置TCP传输接受方线程 |
| AAS_HTTP_LISTENER_2_PORT | 监听程序http-listener-2监听端口 |
| AAS_HTTP_LISTENER_2_URI_ENCODE | 监听程序http-listener-2URI编码 |
| AAS_HTTP_LISTENER_2_MAX_POST_SIZE | 监听程序http-listener-2最大POST大小 |
| AAS_HTTP_LISTENER_2_MAX_CONNECTIONS | 监听程序http-listener-2最大请求数 |
| AAS_HTTP_LISTENER_2_COMPRESS_ENABLE | 监听程序http-listener-2是否开启压缩 |
| AAS_HTTP_LISTENER_2_COMPRESS_TYPE | 监听程序http-listener-2可压缩Mime类型 |
| AAS_HTTP_LISTENER_2_COMPRESS_SIZE | 监听程序http-listener-2压缩最小大小 |
| AAS_HTTP_LISTENER_2_DIABLE_METHOD | 监听程序http-listener-2禁用HTTP方法 |
| AAS_HTTP_LISTENER_2_RELAXEDQUERYCHARS | 监听程序http-listener-2特殊字符白名单 |
| AAS_HTTP_LISTENER_2_FILE_CACHE_ENABLE | 监听程序http-listener-2是否开启文件高速缓存 |
| AAS_HTTP_LISTENER_2_FILE_CACHE_LIVE | 监听程序http-listener-2文件缓存最长存活时间 |
| AAS_HTTP_LISTENER_2_FILE_CACHE_MAX_SIZE | 监听程序http-listener-2文件缓存最大高速缓存大小 |
| AAS_HTTP_LISTENER_2_FILE_CACHE_MAX_COUNT | 监听程序http-listener-2文件缓存最大文件数 |
| AAS_ADMIN_LISTENER_PORT | 监听程序admin-listener监听端口 |
| AAS_ADMIN_LISTENER_URI_ENCODE | 监听程序admin-listenerURI编码 |
| AAS_ADMIN_LISTENER_MAX_POST_SIZE | 监听程序admin-listener最大POST大小 |
| AAS_ADMIN_LISTENER_MAX_CONNECTIONS | 监听程序admin-listener最大请求数 |
| AAS_ADMIN_LISTENER_COMPRESS_ENABLE | 监听程序admin-listener是否开启压缩 |
| AAS_ADMIN_LISTENER_COMPRESS_TYPE | 监听程序admin-listener可压缩Mime类型 |
| AAS_ADMIN_LISTENER_COMPRESS_SIZE | 监听程序admin-listener压缩最小大小 |
| AAS_ADMIN_LISTENER_DIABLE_METHOD | 监听程序admin-listener禁用HTTP方法 |
| AAS_ADMIN_LISTENER_RELAXEDQUERYCHARS | 监听程序admin-listener特殊字符白名单 |
| AAS_ADMIN_LISTENER_FILE_CACHE_ENABLE | 监听程序admin-listener是否开启文件高速缓存 |
| AAS_ADMIN_LISTENER_FILE_CACHE_LIVE | 监听程序admin-listener文件缓存最长存活时间 |
| AAS_ADMIN_LISTENER_FILE_CACHE_MAX_SIZE | 监听程序admin-listener文件缓存最大高速缓存大小 |
| AAS_ADMIN_LISTENER_FILE_CACHE_MAX_COUNT | 监听程序admin-listener文件缓存最大文件数 |
| AAS_FILE_ROTATION_LIMIT | 设置日志配置中文件滚动限制大小 |
| AAS_FILE_MAXHISTORY_FILES | 设置日志配置中最大历史文件数 |
| AAS_LOG_FILE | 设置日志配置中日志文件 |
# 设置防止CSRF(跨站请求伪造)和XSS(跨站脚本攻击)
金蝶Apusic应用服务器支持设置防止CSRF(跨站请求伪造)和XSS(跨站脚本攻击)。
# 防止CSRF(跨站请求伪造)
在应用程序中的web.xml,配置CsrfFilter
<filter>
<filter-name>CsrfFilter</filter-name>
<filter-class>org.apache.catalina.filters.CsrfFilter</filter-class>
<init-param>
<param-name>ignoreMethods</param-name>
<param-value>GET</param-value>
</init-param>
<init-param>
<param-name>ignoreUrls</param-name>
<param-value>/,/common/index.jsf</param-value>
</init-param>
<init-param>
<param-name>allowHostPattern</param-name>
<param-value>127\.0\.0\.1|localhost</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CsrfFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 防止XSS(跨站脚本攻击)
在应用程序web.xml中配置XssFilter
<filter>
<filter-name>XssFilter</filter-name>
<filter-class>org.apache.catalina.filters.XssFilter</filter-class>
<init-param>
<param-name>ignoreUrls</param-name>
<param-value>/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>XssFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2
3
4
5
6
7
8
9
10
11
12
# 设置防止信息泄露
金蝶Apusic应用服务器支持防止信息泄露,支持错误页面自定义,隐藏中间件类型和版本信息。
在【JVM设置】中设置JVM选项,开启自定义错误页面。需要设置-Dapusic.http.errorpage.custom.enabled=true开启自定义错误页面功能,设置为true后,需要添加-Dapusic.http.errorpage.custom.file,否则还是返回默认页面。
-Dapusic.http.errorpage.custom.file后面加.[错误编码],可以针对某一类型错误指定返回页面,例如-Dapusic.http.errorpage.custom.file.404表示404错误返回的页面
-Dapusic.http.errorpage.custom.enabled=true ##开启自定义错误页面
-Dapusic.http.errorpage.custom.file=/opt/ApusicAS/error.html ##设置返回错误页面
-Dapusic.http.errorpage.custom.file.404=/opt/ApusicAS/404.html ##设置404错误返回的页面
2
3
# 通过 JMX 连接
# 连接方式
金蝶Apusic应用服务器可以通过 JMX 连接,需要先设置 IP 地址以及端口。
- 通过管控台设置。【配置管理】 -> 【server-config 】->【 管理服务】 ->【 JMX 连接器】,开启,设置地址为管控台的 IP 地址,设置端口(默认端口是 6886),保存后需要重启管控台。

- 通过
domain.xml设置。设置地址为管控台的 IP 地址,设置端口,保存后需要重启管控台。
<jmx-connector address="172.20.140.41" port="6886" name="system" auth-realm-name="admin-realm" security-enabled="false">

- 打开连接工具,如 Jconsole,在远程进程输入管控台的 IP 和端口,如
172.20.140.41:6886;输入用户名为管控台的用户名,如 admin;输入管控台对应用户名的密码;点击"连接"即可。

连接成功显示如下:

# 常见属性
- 当前连接数: private Integer connectionCount
- 最大连接数: private Integer connectionMax
- 总共接收的数据量: private Long totalByteReceived
- 总共发送的数据量: private Long totalByteSend
- 队列等待请求数: private Long pendingRequestCount
# 其他问题
1、设置免密访问
可通过设置以下JVM参数实现免密访问JMX。
<jvm-options>-Dcom.sun.management.jmxremote</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.port=监听端口</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.authenticate=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.ssl=false </jvm-options>
<jvm-options>-Djava.rmi.server.hostname=监听ip</jvm-options>
2
3
4
5
6
7
8
9
2、关闭JMX懒加载启动
V10的默认机制是第一次通过密码连接jmx才会进行jmx模块启动(JMXConnector connector = JMXConnectorFactory.connect(url, environment);)【懒加载】,如果希望不需要密码的本地连接的方式获取监控数据(ManagementFactory.getPlatformMBeanServer();),那么可以添加 以下JVM参数关闭jmx懒加载启动。
<jvm-options>-Dcom.apusic.jmx.auto.start=true</jvm-options>
# restful 接口使用
访问 https://IP:6848/monitoring/domain,即可进入监控页面。监控时需要开启监控服务和监控组件(可以在管控台的"监视配置"中开启,具体参考监视服务设置)。

点击某个实例将进入对应实例的页面,如 server。

在路径后面添加.json,将出现 json 格式的数据。

# HTTP请求重定向到HTTPS方法
金蝶Apusic应用服务器支持配置http请求重定向到https方法(端口保持 和 端口转发)。
# 通过配置设置
1.在配置文件domain.xml中“server-config" 的network-config下添加协议
<protocol name="http-redirect">
<http-redirect port="6887" secure="true"></http-redirect>
</protocol>
<protocol name="my-protocol">
<port-unification>
<protocol-finder protocol="http-listener-2" classname="com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder" name="http-finder"></protocol-finder>
<protocol-finder protocol="http-redirect" classname="com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder" name="http-redirect"></protocol-finder>
</port-unification>
</protocol>
2
3
4
5
6
7
8
9
2.修改 http-listener-1的协议名为my-protocol

# 通过命令行设置
1.在应用的web.xml添加
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureResource</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
2
3
4
5
6
7
8
9
2.执行命令
1.create-protocol --securityenabled=false http-redirect
2.create-http-redirect --redirect-port 6887 --secure-redirect true http-redirect
3.create-protocol --securityenabled=false my-protocol
4.create-protocol-filter --protocol http-redirect --classname com.apusic.aas.grizzly.config.portunif.HttpRedirectFilter redirect-filter
5.create-protocol-finder --protocol my-protocol --targetprotocol http-listener-2 --classname com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder http-finder
6.create-protocol-finder --protocol my-protocol --targetprotocol http-redirect --classname com.apusic.aas.grizzly.config.portunif.HttpProtocolFinder http-redirect
7.set server-config.network-config.network-listeners.network-listener.http-listener-1.protocol=my-protocol
2
3
4
5
6
7
8
9
10
11
12
13
# 重写功能
Rewrite是一种服务器的重写技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术。它还可以实现限制特定IP访问网站的功能。
Rewrite主要的功能就是实现URL的重写。它的正则表达式是基于Perl语言,入站的规则用于修改 HTTP 请求 Url。这些规则可以为以下几个目的,如演示对用户更加友好的 URL 命名空间为您的 Web 站点,将请求的 Url 重定向到新位置,或阻止访问 Url 来提供服务。出站的重写规则修改 HTTP 响应。例如,如果您的 Web 站点的导航结构已更改,您可以创建修改您的内容中的 Url,以便将 Web 页的内容指向正确的位置出站规则。然后,您可以创建基于缓存的位置与新的 url 的客户端请求重定向的入站的规则。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。如果要想用到rewrite模块,必须先安装或加载rewrite模块。方法有两种一种是编译apache的时候就直接安装rewrite模块,别一种是编译apache时以DSO模式安装apache,然后再利用源码和apxs来安装rewrite模块。
# 编写配置文件
采用配置文件的方式,将事先编写好的重写规则写入文件中。放置 AAS 安装目录中。位于${ApusicHome}/aas/domains/mydomain/config 目录下。
文件名为: rewrite.config。
# RewriteCond
格式: RewriteCond TestString CondPattern [flag]
RewriteCond 指令定义了一个规则条件。一个或多个 RewriteCond 指令可以优先于 RewriteRule 指令执行。如果 URI 当前状态匹配它的模式,并且满足了这些条件,才会使用下列规则。
TestString 是一种字符串,除了简单的文本之外,它还可以含有下列扩展结构。
- %{ NAME_OF_VARIABLE }。%{ NAME_OF_VARIABLE }的 NAME_OF_VARIABLE 是一种取自下面列表的字符串:
HTTP 报头:
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT
2
3
4
5
6
7
连接与请求:
REMOTE_ADDR
REMOTE_HOST
REMOTE_PORT
REMOTE_USER
REMOTE_IDENT
REQUEST_METHOD
SCRIPT_FILENAME
REQUEST_PATH
CONTEXT_PATH
SERVLET_PATH
PATH_INFO
QUERY_STRING
AUTH_TYPE
2
3
4
5
6
7
8
9
10
11
12
13
服务器内部:
DOCUMENT_ROOT
SERVER_NAME
SERVER_ADDR
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
2
3
4
5
6
日期与时间:
TIME_YEAR
TIME_MON
TIME_DAY
TIME_HOUR
TIME_MIN
TIME_SEC
TIME_WDAY
2
3
4
5
6
7
特殊字符串:
THE_REQUEST
REQUEST_URI
REQUEST_FILENAME
HTTPS
2
3
4
REQUEST_PATH(在示例中,应为/find)。对应用于映射的完整路径。
CONTEXT_PATH (在示例中,应为/demo)。对应映射的上下文的路径。
SERVLET_PATH (在示例中,应为/find)。对应 Servlet 路径。
THE_REQUEST。由浏览器发送给服务器的完整 HTTP 请求代码行(比如,GET /demo/find HTTP/1.1)。这并不包括任何由浏览器发送的额外报头。
REQUEST_URI。HTTP 请求代码行中所请求的资源(在上例中,应为为/demo/find)。
REQUEST_FILENAME。与请求相匹配的文件或脚本的完整本地文件系统路径。
HTTPS。当连接使用 SSL/TLS 时,含有文本"on",否则含有"off"。
另外还需要注意的是:
%{ENV:variable}。其中的 variable 可以是任何 Java 系统属性。目前可以使用。
%{HTTP:header}。其中的 header 可以是任意的 HTTP MIME 报头名称。该变量常用来获取发送到 HTTP 请求的报头值。范例: %{HTTP:Proxy-Connection}是 HTTP 报头 Proxy-Connection:的值。
CondPattern 即条件模式,是一种应用于 TestString 当前实例的正则表达式。TestString 在匹配 CondPattern 之前,会首先求值。CondPattern 是一种兼容 perl 并带有一些扩展的正则表达式。
可以将[flag]做为 RewriteCond 指令的第三个参数,为 CondPattern 设定标记。这里的 flag 是一个包含下列任一标记,且标记间由逗号分隔的列表:
nocase|NC(不区分大小写)无论是扩展的 TestString 还是在 CondPattern 中,都不区分大小写(A-Z 和 a-z 是等同的)。该标记只有在比较 TestString 和 CondPattern 时才是有效的。对于文件系统和子请求(HTTP 请求)是无效的。
ornext|OR(或者下一个条件)利用本地 OR(而不是隐式的 AND)来组合规则条件。典型范例为:
RewriteCond %{REMOTE_HOST} ^host1.* [OR]
RewriteCond %{REMOTE_HOST} ^host2.* [OR]
RewriteCond %{REMOTE_HOST} ^host3.*
RewriteRule ...some special stuff for any of these hosts...
# RewriteRule
格式: RewriteRule Pattern Substitution [flag]
RewriteRule 指令是重写机制的核心。此指令可以多次使用,每个实例都定义一个单独的重写规则。这些规则的定义顺序尤为重要,因为这是在运行时应用它们的顺序。
模式是一个作用于当前 URL 的兼容 perl 的正则表达式,这里的"当前"是指该规则生效时的 URL,它可能与被请求的 URL 不同,因为其他规则可能在此之前已经发生匹配并对它做了改动。
Pattern 是一个 perl 兼容的正则表达式。这个模式的比较对象取决于 RewriteRule 指令定义的位置。
Substitution 重写规则的替换是替换 Pattern 匹配的原始 url 路径的字符串。
可以将 Pattern 替换为文件系统路径、url 路径、绝对 URL 或者一个 -(表示应用 URL 路径不进行更改。)。
[flags]做为 RewriteRule 的第三个参数,从而为替代字符串设置特殊标记。
flags 是一个包含下列标记且标记间以逗号分隔的列表:
- chain|C(与下一个规则相链接)
此标记使当前规则与下一个规则(它又可以与其后规则相链接,如此反复)相链接。 它产生如下效果: 如果某个规则被匹配,通常会继续处理其后继规则,这个标记就不起作用;如果某规则不被匹配,则其后继链接规将会被忽略。
- cookie|CO=NAME:VAL:domain[:lifetime[:path]](设置 cookie)
在客户端浏览器上设置一个 cookie。cookie 的名称是 NAME,其值是 VAL。domain 字段是该 cookie 的域,比如.apache.org,可选的 lifetime 是 cookie 生命周期(以分钟计),可选的 path 是 cookie 的路径。
- env|E=VAR:VAL(设置环境变量)
强制一个名为 VAR 的请求变量值为 VAL。
- forbidden|F(强制禁止访问该 URL )
强制禁止访问当前的 URL------立即反馈一个 HTTP 响应代码 403。
- gone|G(强制 URL 为已失效)
强制当前 URL 为已失效------立即反馈一个 HTTP 响应代码 410(请求资源已被删除)。
- host|H=Host(重写虚拟主机)
重写虚拟主机,而不是重写 URL。
- last|L(最后一个规则)
立即停止重写操作,并不再应用其他重写规则。它对应于 Java 语言中的 break 命令。使用该标记可以防止当前已被重写的 URL 被后续规则所继续重写。
- next|N(重新执行)
重新执行重写操作(从第一个重写规则重新开始)。这时,要匹配的 URL 已不是原始 URL 了,而是经最后一个重写规则处理过的 URL。它对应于 Java 语言中的 continue 命令。此标记可以重新开始重写操作,立即回到循环的头部。[但是要小心,不要制造死循环!]
- nocase|NC(不区分大小写)
使模式不区分大小写。当模式与当前 URL 匹配时,A-Z 和 a-z 没有区别。
- noescape|NE(在输出中不对 URI 进行转义)
此标记阻止对重写结果应用常规的 URI 转义规则。一般情况下,特殊字符(如%、$、;等)都会被转义为十六进制值。此标记可以阻止这种转义,允许百分号等符号出现在输出中,如:
RewriteRule /foo/(.*) /bar?arg=P1\%3d$1 [R,NE]
将/foo/zed 转化为/bar?arg=P1=zed 的安全请求。
- qsappend|QSA(附加查询串)
该标记会强制重写引擎将替代字符串中的一个查询字符串部分添加到已有字符串上,而不是简单地替换已有字符串。当你想要通过重写规则为查询字符串添加更多数据时,可以使用该标记。
- redirect|R[=code](强制重定向)
强制执行一个外部重定向。如果没有指定 code,则产生一个 HTTP 响应代码 302(暂时移动)。如果需要使用在 300-400 范围内的其他响应代码,只需在此指定这个数值即可。
- skip|S=num(忽略后续规则)
如果当前规则匹配,此标记会强制重写引擎跳过当前匹配规则后面的 num 个规则。
- type|T=MIME-type(强制指定 MIME 类型)
强制指定目标文件的 MIME 类型为 MIME-type,可基于一些条件设置内容类型。
RewriteRule ^(.+.php)s$ $1 [T=application/x-httpd-php-source]
# 管理域
域是指作为一个单元来管理的并相互关联的一组服务器资源。一个域可以包含一个或多个独立服务器,还可包含服务器集群,它们共享一套公用配置,并使用扩展标记语言 XML 定义,配置文件名为 domain.xml,存放在 DOMAIN_HOME/config/ 目录中。域是一个完整的管理单元,当向域里部署应用时,该应用只能部署到域之内的服务器上。如果域中包含集群,那么集群中的所有服务器都必须属于同一个域。
通过域,部署在不同物理位置上的服务器实例,可以共享一套公用配置,同时,可以在一个节点上统一管理多个服务器实例,这使得应用服务器的部署和管理变得简单和灵活。。
# 创建新域
通过命令行创建新域。创建新域前,需要先运行一个域,如mydomain。同时需要为创建域的目录赋权。
# 命令说明
$ sh bin/asadmin create-domain --help
SYNOPSIS
create-domain [--help]
[--adminport adminport]
[--instanceport instanceport]
[--portbase portbase]
[--profile profile-name]
[--template template-name]
[--domaindir domaindir]
[--savemasterpassword={false|true}]
[--usemasterpassword={false|true}]
[--domainproperties (name=value)[:name=value]*]
[--keytooloptions (name=value)[:name=value]*]
[--savelogin={false|true}]
[--checkports={true|false}]
[--nopassword={false|true}]
domain-name
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 示例1
#指定新域所在目录 :domaindir为 /opt
#管控控制台端口 :7070
#指定访问应用端口 : 7070
#指定域的名称为 : new-domain
$ sh bin/asadmin create-domain --domaindir /opt --adminport 7070 --instanceport
7071 new-domain
示例2:
Enter admin user name [Enter to accept default "admin" / no password]>admin
Enter the admin password [Enter to accept default of no password]>
Enter the admin password again>
Using default port 7070 for Admin.
Using default port 7071 for HTTP Instance.
Using default port 6876 for JMS.
Using default port 6837 for IIOP.
Using default port 6887 for HTTP_SSL.
Using default port 6838 for IIOP_SSL.
Using default port 6839 for IIOP_MUTUALAUTH.
Using default port 6886 for JMX_ADMIN.
Using default port 6866 for OSGI_SHELL.
Using default port 8000 for JAVA_DEBUGGER.
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=localhost.localdomain,OU=Apusic,O=Apusic Cloud
Corporation,L=ShenZhen,ST=GuangDong,C=CN]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=localhost.localdomain-instance,OU=Apusic,O=Apusic Cloud
Corporation,L=ShenZhen,ST=GuangDong,C=CN]
Could not locate file or resource /opt/new-domain/docroot/index.html
Domain new-domain created.
Domain new-domain admin port is 7070.
Domain new-domain admin user is "admin".
Command create-domain executed successfully.
#查看创建域
$ ls /opt/
new-domain
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 示例2
#指定新域所在目录 :domaindir为 /opt
#指定 portbase(确定端口分配应该以哪个数字开始) :4000
#指定域的名称为 : new-domain2
$ sh bin/asadmin create-domain --portbase 4000 --domaindir /opt new-domain2
Enter admin user name [Enter to accept default "admin" / no password]>admin
Enter the admin password [Enter to accept default of no password]>
Enter the admin password again>
Using port 4048 for Admin.//(4000+48)
Using port 4080 for HTTP Instance.//(4000+80)
Using port 4076 for JMS.//(4000+76)
Using port 4037 for IIOP.//(4000+37)
Using port 4081 for HTTP_SSL.//(4000+81)
Using port 4038 for IIOP_SSL.//(4000+38)
Using port 4039 for IIOP_MUTUALAUTH.//(4000+39)
Using port 4086 for JMX_ADMIN.//(4000+86)
Using port 4066 for OSGI_SHELL.//(4000+66)
Using port 4009 for JAVA_DEBUGGER.(4000+9)
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=localhost.localdomain,OU=Apusic,O=Apusic Cloud
Corporation,L=ShenZhen,ST=GuangDong,C=CN]
Distinguished Name of the self-signed X.509 Server Certificate is:
[CN=localhost.localdomain-instance,OU=Apusic,O=Apusic Cloud
Corporation,L=ShenZhen,ST=GuangDong,C=CN]
Could not locate file or resource /opt/new-domain2/docroot/index.html
Domain new-domain2 created.
Domain new-domain2 admin port is 4048.
Domain new-domain2 admin user is "admin".
Command create-domain executed successfully.
#查看创建域
$ ls /opt/
new-domain2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 启动域
# 启动示例1
#指定新域所在目录 :domaindir为 /opt
#指定域的名称为 : new-domain
$ sh bin/asadmin start-domain --domaindir /opt new-domain
Waiting for new-domain to start ................
Successfully started the domain : new-domain
domain Location: /opt/new-domain
Log File: /opt/new-domain/logs/server.log
Admin Port: 7070
Command start-domain executed successfully.
2
3
4
5
6
7
8
9
# 启动示例2
#指定新域所在目录 :domaindir为 /opt
#指定域的名称为 : new-domain2
$ sh bin/asadmin start-domain --domaindir /opt new-domain2
Waiting for new-domain2 to start ................
Successfully started the domain : new-domain2
domain Location: /opt/new-domain2
Log File: /opt/new-domain2/logs/server.log
Admin Port: 4048
Command start-domain executed successfully.
2
3
4
5
6
7
8
9
# 查看域
#命令查看当前服务器上的AAS10实例信息。创建的两个域位于 /opt目录下。 类路径都归属于/opt/ApusicAS/
$ jps -lm
52316 com.apusic.enterprise.aas.bootstrap.AASMain -domaindir /opt/new-domain -
asadmin-classpath /opt/ApusicAS/aas/lib/client/aas-appserver-cli.jar -debug false
-asadmin-classname com.sun.enterprise.admin.cli.AdminMain
52588 com.apusic.enterprise.aas.bootstrap.AASMain -domaindir /opt/new-domain2 -
asadmin-classpath /opt/ApusicAS/aas/lib/client/aas-appserver-cli.jar -debug false
-asadmin-classname com.sun.enterprise.admin.cli.AdminMain
2
3
4
5
6
7
8
9
# 停止域
执行stop-domain停止对应域
# 停止域示例
$ sh bin/asadmin stop-domain --domaindir /opt new-domain
Waiting for the domain to stop .
Command stop-domain executed successfully.
2
3
# 删除域
删除域操作会将当前域信息全部删除,需谨慎使用。执行delete-domain
# 删除域示例
$ sh bin/asadmin delete-domain --domaindir /opt new-domain
Domain new-domain deleted.
Command delete-domain executed successfully.
2
3
# EJB域信任
EJB 认证信息可以通行于同一集群或备用集群的不同 Server,只会在new InitailContext(env)的时候去认证,认证后获取一个服务器返回的token;下次调用EJB方法的时候不再拿用户名和密码去认证,而是拿着token去认证。

通常使用安全域进行服务器实例验证。以LDAP认证为例。
1、运行LDAP服务
准备LDAP服务环境,运行。
2、AAS配置使用LDAP认证
在一台应用服务器中配置LDAPRealm。
1)管控平台配置LDAPRealm:
【安全服务】->【安全域】,添加安全域。输入如下信息:
名称:ldapRealm
类名:com.sun.enterprise.security.auth.realm.ldap.LDAPRealm
JAAS 上下:ldapRealm
目录:ldap://172.24.4.169:1389
基础DN:dc=example,dc=org
2)命令行配置:
./asadmin create-auth-realm --classname=com.sun.enterprise.security.auth.realm.ldap.LDAPRealm --property jaas-context=ldapRealm:directory="ldap\://172.24.4.169\:1389":base-dn="dc\=example,dc\=org" ldapRealm
./asadmin set server-config.security-service.default-realm=ldapRealm
2
3、设置域信任
在需要进行域信任的应用服务器中设置域信任。
1)页面配置(安全服务中添加CredentialPassword属性和属性值)
【安全服务】中添加属性“CredentialPassword”值为LDAP中的存在的密码,同一信任域需要使用同一密码。
默认安全域:ldapRealm
CredentialPassword=APUSIC
2)命令行配置
./asadmin set server-config.security-service.property.CredentialPassword=APUSIC
注意:设置完需重启AAS
# EJB双集群
应用服务器支持配置EJB双集群,当一个EJB集群整体失效后能无缝切换到另一个集群EJB,实现高可用 。

# 创建服务器集群
创建两个服务器集群。
# 部署DNS服务器
实现EJB双集群需要服务器集群实例在同一个域名中,因而需要使用DNS服务器配置服务器的域名。
根据服务器的CPU架构下载 coreDNS,解压出可执行文件 coredns 。在同一个目录下创建配置文件Corefile ,内容如下:
. {
hosts {
172.24.4.235 cluster.apusic.tech
172.24.4.236 cluster.apusic.tech
fallthrough
}
forward . 172.24.2.12
}
2
3
4
5
6
7
8
运行 ./coredns 启动DNS服务器。
修改 AAS所在的服务器上的文件 /etc/resolv.conf ,将这台机器的 nameserver 指向我们自己配置的DNS服务器。
# Generated by NetworkManager
nameserver 172.24.2.12
2
在AAS所在的服务器上执行命令 nslookup cluster.apusic.tech,显示对应配置信息刚表示配置成功
备注:如果没有nslookup命令,可先执行命令查看命令在哪个安装包里yum provides nslookup,根据
对应的查询结果执行yum install bind-utils(安装包名),如图所示:

# 部署应用程序
将应用程序部署到两个集群中,当真正访问的EJB服务器停止运行之后,应用会自动切换到另外一台EJB服务器。
# 多重因子登录
应用服务器管控平台支持多重因子登录,包括常规登录方式用户名+密码+验证码、邮件获取验证码方式、动态验证码方式。
# 常规方式
应用服务器管控平台常规登录方式为用户名+密码+验证码。用户信息可参考“用户管理”章节。
# 邮件获取验证码方式
在常规登录后,需要再次输入验证码才能进入管控平台。配置方式请参考“邮箱验证配置”章节。
# 动态验证码方式
在常规登录后,需要再次输入动态验证码才能进入管控平台。
1、开启配置
用安全管理员用户登录管控平台,如用户secure。
进入【安全服务】-【系统管理】,在“OTP验证配置”处开启“OTP验证开关”。保存。

2、准备手机认证APP
在手机的应用市场中下载并安装应用程序Authenticator,如下图。
注:动态密码通过当前时间和密钥生成,所以需要同步部署AAS的系统时间和标准时间,误差在30秒内。

3、用户登录
使用有效用户登录管控平台。第一次登录时,会显示关联获取动态验证码的二维码,类似如下图(第二次登录则不会显示二维码):

通过应用程序Authenticator扫描二维码进行注册。
在应用程序Authenticator的右上角+号
选择“个人账户”
选择扫描QR码
开启摄像头扫描二维码
扫描成功后,则会在界面显示对应的信息,标题为AAS。标题下为用户名称,如admin。

获取验证码
根据上一步,点击对应的账号,如使用admin登录,则点击AAS(admin)的账号。进入界面后,显示有6位的一次性密码代码。

输入密码代码
将上一步的一次性密码代码输入到管控平台的登录页面的验证码输入框中,点击“确定”即可完成登录。
注:1)一次性密码代码每30秒刷新一次,密码有效期为1分钟。
2)动态密码通过当前时间和密钥生成,所以需要同步部署AAS的系统时间和标准时间,误差在30秒内。
如果验证码输入错误或校验失败,页面显示有提示。

# 管控平台与第三方应用实现单点登录
应用服务器通过环境变量或者JVM参数启用SSO功能,可与第三方应用实现单点登录功能。
以移动云为例。
1、移动云通过页面点击超链接跳转到AAS管理控制台,需要将access_token和username传到AAS管控:https://ip:6848/common/sso/login?access_token=xxx&username=yyy
2、AAS需要通过环境变量或者JVM参数启用SSO功能。
- AAS_SSO_ENABLE:是否启用SSO功能
- AAS_SSO_DEBUG:SSO是否开启DEBUG,开启输出相关的调用信息
- AAS_SSO_VALIDATE_URL:验证token或者登录用户的信息的地址
- AAS_SSO_REDIRECT_URL:验证失败跳转地址,如果不设置则跳转AAS的登录地址
- AAS_SSO_TYPE:SSO类型,目前支持移动云和京东云舰,取值为AAS_SSO_TYPE_EMPB/AAS_SSO_JD_CLOUD_SHIP
1)通过环境变量配置
AAS_SSO_ENABLE=true
AAS_SSO_VALIDATE_URL=http://ip:port/iam/oidc/profile
AAS_SSO_REDIRECT_URL=https://gitlab.apusic.com
AAS_SSO_TYPE=AAS_SSO_TYPE_EMPB
AAS_SSO_DEBUG=true
2
3
4
5
2)通过JVM参数配置
<jvm-options>-DAAS_SSO_ENABLE=true</jvm-options>
<jvm-options>-DAAS_SSO_VALIDATE_URL=http://ip:port/iam/oidc/profile</jvm-options>
<jvm-options>-DAAS_SSO_REDIRECT_URL=https://gitlab.apusic.com</jvm-options>
<jvm-options>-DAAS_SSO_TYPE=AAS_SSO_TYPE_EMPB</jvm-options>
<jvm-options>-DAAS_SSO_DEBUG=true</jvm-options>
2
3
4
5
# 部分 III. 服务器集群管理
# 说明
应用服务器集群由一组应用服务器实例组成,它们共享同样的资源、配置信息和应用。Apusic 用服务器集群能够将集群作为一个独立单元,从一台主机管理集群中的所有服务器实例,例如部署应用、创建资源等。
Apusic 应用服务器集群部署架构如下:

DAS: 域管理服务(domain administration server),管理员通过 DAS 管理整个集群。
- cluster: 集群,新建一个集群后会生产一个配置文件文件 cluster-config,集群用于管理一组集群实例,以及集群资源和配置,实现集群中实例之前的资源配置共享。
- cluster-config: 集群配置文件,用于对集群中所以实例的相关配置,如 JVM,HTTP 服务、网络服务、日志服务等进行统一的配置。
- LB: 负载均衡器,用作代理集群的前置机,实现集群中实例的负载均衡。
- instance: 集群服务器实例,一个服务器实例是 Java 平台上(Java 虚拟机或 JVM 机器)的单个虚拟机,它运行在服务器的单个节点上。服务器实例构成了应用部署的基础。实例是构建集群、负载均衡和服务器会话持久性中的重要构件。每个实例属于单个域并且有自己的目录结构、配置和部署的应用。每个实例包含了一个到节点的引用。
- node: 节点,每个节点对应一台装有应用服务器软件的主机,应用服务器实例所在的主机上必须存在一个对应的节点。这个节点可以是远程节点,也可以是本地节点,节点配置信息包含主机名称,以及应用服务器安装在主机上的位置。
# 环境准备
在 DAS 和每个节点上安装 JDK,建议版本为 1.8.0_201 或更高的版本,设置好 PATH 和 JAVA_HOME。
注意: 确保安装节点时不会报 Java 或 Jar 命令不存在的情况,建议将 JDK 环境变量配置在~/.bashrc 文件上,因为每次开启一个 bash 连接都会去读取~/.bashrc 文件里面的配置信息。或在每个节点服务器执行命令
ln -s $JAVA_HOME/bin/java /usr/bin/java创建 Java 命令软连接;或执行命令ln -s /opt/java/jdk1.8.0_212/bin/jar /usr/bin/jar创建 jar 命令软连接。
# Apusic 应用服务器配置
# DAS 安装与配置
安装应用服务器管理节点。
将应用服务器的安装包解压,进入${APUSIC_HOME}/bin,启动服务器:
./asadmin start-domain
# 集群管控配置
Apusic 应用服务器支持集群图形化配置,即通过管控平台配置。
# 创建和安装节点
登录到 DAS 的管理,在节点列表中新增 node74,node136 节点,选择类型为 SSH,勾选上"安装 Apusic 应用服务器",设置远程节点的 ssh 地址和用户名密码。详看节点管理。
节点创建完成后可以在节点列表中点击【ping】按钮,确实是否成功。

# 创建集群和实例
节点创建完毕之后,接下来就是创建集群和实例了。本教程将在 node136、node74 节点上面分别创建实例 ins136、ins74,并将其加入 mycluster 集群。
点击 DAS 控制台中的"集群"菜单,在集群列表上方点击【新建】按钮。

新建集群和 server 实例,创建实例的时候记得选择要在哪个节点上创建,设置节点权重。

点击【确定】按钮保存,保存后可以在集群里面种查看到集群信息,并且实例都是"停止状态"。
# 创建 JK 监听器
注意: 如果选择 apache 作为负载,需要执行该步骤,如果负载为 nginx,忽略该步骤。
集群的配置信息上设置系统属性,为 JK 监听器引用的端口系统属性"JK_LB_PORT"赋值。
路径: 【mycluster-config】 -> 系统属性。
点击【添加】按钮,实例变量名称: JK_LB_PORT;默认值: 7000,保存。

如果多个实例在同一个节点下,需要设置不同的 jk 监听器端口,可以对每个实例进行 JK_LB_PORT 属性赋值。


点击 DAS 控制台左侧"配置",【mycluster-config】 -> 网络监听程序 -> 点击【新建】按钮新建一个 JK 监听器。

名称:jk-listener。
端口:${JK_LB_PORT}。通过系统属性变量${JK_LB_PORT}来指定。如集群中所有实例均不在同一台物理机上也可直接在这里填写端口号。
JK 监听器: 勾选"JK 监听程序"为"已启用"。
协议: "http-listener-1(选择为 http-listener-1 表示监听 http,选择 http-listener-2 表示监听 https)"。
注意: JK 监听端口如果是变量,则必须设置为变量${JK_LB_PORT},管理负载均衡器才能获取到相应的值。

填写完毕,点击"保存"后如下:

# 设置 jvmRoute
注意: 如果选择 apache 作为负载,需要执行该步骤,如果负载为 nginx,忽略该步骤。
如果需要使用 apache 的会话粘黏功能,还需要添加一个 JVM 参数"jvmRoute",并为每个 server 实例设置独立的值。
路径: 【mycluster-config】 -> JVM 设置 -> JVM 选项,点击【添加 JVM 选项】按钮。
新增: "-DjvmRoute=${AJP_INSTANCE_NAME}"。

为集群中每个实例添加"AJP_INSTANCE_NAME"的实例值。
- 单个实例设置。路径: 集群 -> mycluster -> 实例 -> 点击实例名称,如 ins74,然后再切换到属性 -> 系统属性界面,添加 AJP_INSTANCE_NAME 属性并赋值,(该值用于 apache 的 work.properties 中的 workname)。
注意: 每个实例的 AJP_INSTANCE_NAME 必须设置为与实例名称一致。


- 在集群配置文件设置。在管理控制台 -> 配置 -> 【cluster-config 】-> 系统属性,添加属性 AJP_INSTANCE_NAME,保存后设置实例值。
注意: 每个实例的 jvmroute 值需设置为实例名称。


# 启动集群
在集群列表中勾选需要启动的集群点击【启动集群】按钮。

或者进入到对应的集群页面,在"一般信息"界面点击【启动集群】。

# 集群命令行配置
# 通过 SSH 在 DAS 新增节点和安装 Apusic 应用服务器
- 设置 SSH 免密登录。
设置从 DAS 通过 SSH 免密登录到各节点所在服务器。
在 DAS 上执行以下命令:
./asadmin setup-ssh 172.20.140.136
./asadmin setup-ssh 172.20.140.74
2
- 在各节点上安装 Apusic 应用服务器。
在 DAS 上执行以下命令:
./asadmin install-node-ssh --installdir /home/installdir_node74 172.240.140.74
./asadmin install-node-ssh --installdir /home/installdir_node136 172.20.140.136
2
此步骤的结果是复制 DAS 上的 Apusic 应用服务器安装文件到各节点所在的服务器上。
- 创建节点 node74,node136。
在 DAS 上执行以下命令:
./asadmin create-node-ssh --nodehost 172.20.140.136 --installdir /home/installdir_node136 node136
./asadmin create-node-ssh --nodehost 172.20.140.74 --installdir /home/installdir_node74 node74
2
此步骤的结果是在 DAS 的 domain.xml 文件里写入节点信息,并且在管控节点列表中可以查看到节点信息。
# 创建集群
在 DAS 上执行以下命令:
./asadmin create-cluster mycluster
# 创建集群实例
创建集群实例,并且指定实例所在节点。
在 DAS 上执行以下命令:
./asadmin create-instance --node node136 --cluster mycluster ins136
./asadmin create-instance --node node74 --cluster mycluster ins74
2
# 创建 jk 监听器
在 DAS 上执行以下命令:
./asadmin create-network-listener --protocol http-listener-1 --listenerport ${JK_LB_PORT} --jkenabled true --target mycluster jk-listener
注意: JK 监听端口必须以变量 JK_LB_PORT,管理负载均衡器才能获取到相应的值。
# 设置 jvmRoute
在 DAS 上执行以下命令:
./asadmin create-jvm-options --target mycluster "-DjvmRoute=${AJP_INSTANCE_NAME}"
# 设置各实例系统参数
注意: 每个实例的 AJP_INSTANCE_NAME 必须设置为与实例名称一致。
- 设置实例 ins_136 的路由名称 AJP_INSTANCE_NAME 的值。
在 DAS 上执行以下命令:
./asadmin create-system-properties --target ins136 AJP_INSTANCE_NAME=ins136
- 设置实例 ins74 的路由名称 AJP_INSTANCE_NAME 的值。
在 DAS 上执行以下命令:
./asadmin create-system-properties --target ins74 AJP_INSTANCE_NAME=ins74
- 设置实例 ins74 的 JK 监听端口 JK_PORT_LB 的值。
在 DAS 上执行以下命令:
./asadmin create-system-properties --target ins74 JK_PORT_LB=7001
- 设置实例 ins136 的 JK 监听端口 JK_PORT_LB 的值。
在 DAS 上执行以下命令:
./asadmin create-system-properties --target ins136 JK_PORT_LB=7002
# 集群启动和停止
在 DAS 上执行以下命令:
./asadmin start-cluster mycluster -------启动集群
./asadmin stop-cluster mycluster ------停止集群
2
# Apache 配置
# 管控界面配置
Apusic 应用服务器管控提供图形化界面配置和管理负载均衡器,图形化配置暂时只提供 mod_jk 代理方式配置。
Apusic 应用服务器可以通过启用 Apache mod_jk 连接器模块,将 Apache HTTP 服务器作为前端来将其配置为负载均衡。启用 Apusic 应用服务器中的 mod_jk 模块,需要设置 Apusic 应用服务器中的 jk-enabled network-listener 属性。也可以用 jk-enabled network-listener 属性在不同的虚拟服务器下创建 jk-listener。
# 事前准备
在配置集群负载均衡器之前需要安装 Apache HTTP 服务器和 mod_jk(如已安装,请忽略该步骤)。
- 安装 mod_jk。
mod_jk下载链接 (opens new window)。
tar -zxf tomcat-connectors-1.2.42-src.tar.gz
cd tomcat-connectors-1.2.42-src/native/
./configure --with-apxs=/usr/sbin/apxs
make
2
3
4
将 mod_jk.so 拷贝到 Apache 的 moudles 目录下。
在 Apache 安装目录下修改/config/httpd.conf,增加 mod_jk 模块,如:
<IfModule !mod_jk>
LoadModule jk_module "modules/mod_jk.so"
</IfModule>
2
3
# 安装节点代理 agent
对负载均衡器管理之前,需要在安装负载均衡器的机器上安装节点代理 agent,用于监视负载均衡器的状态,以及读写文件,远程执行启动、停止、重启负载均衡器的命令。
详看安装节点代理。
本示例使用从节点安装负载均衡器,因而节点代理 agent 在创建节点时自动安装。Agent 状态需要为"正在运行"。

# 新建管理负载均衡器
在新建管理某个负载均衡器之前,请确保 apache 负载均衡器已安装并且需添加了 mod_jk 模块,还需确保该负载均衡器所在机器上已安装了节点代理 agent 并已成功启动。
使用管理员 admin 登录管控,切换到负载均衡器菜单页面,在页面点击【新建】按钮,新建管理负载均衡器。本示例使用节点安装负载均衡器,详细安装方式请参考新建负载均衡器。
注意: 节点安装时,需要确保目录/opt/AAS/alb/下无 ahs/ 或 nhs/ 目录。


# 给集群分配负载均衡器
在管理的集群列表界面点击集群名称进入编辑集群页面,给集群设置负载均衡器。


# 通过文件手动配置
可以通过 Apache HTTP Server 的 mod_proxy_ajp 和 mod_jk 两种方式配置代理 Apusic 应用服务器。
# 使用 mod_jk 代理
Apusic 应用服务器可以通过启用 Apache mod_jk 连接器模块,将 Apache HTTP 服务器作为前端来将其配置为负载均衡。启用 Apusic 应用服务器中的 mod_jk 模块,需要设置 Apusic 应用服务器中的 jk-enabled network-listener 属性。也可以用 jk-enabled network-listener 属性在不同的虚拟服务器下创建 jk-listener, 参考创建 JK 监听器。
下面示例节点 IP 与管控界面配置的不同,可对应修改。
安装 Apache HTTP 服务器。
安装 mod_jk。
mod_jk下载链接 (opens new window)。
tar -zxf tomcat-connectors-1.2.42-src.tar.gz
cd tomcat-connectors-1.2.42-src/native/
./configure --with-apxs=/usr/sbin/apxs
make
2
3
4
将 mod_jk.so 拷贝到 Apache 的 moudles 目录下。
将 workers.properties 拷贝到 Apache 的 conf 目录下。
配置 Apache 安装目录的 conf 目录下的 workers.properties 和 httpd.conf。
重启 apache。
./apachectl -k stop
./apachectl -k start
2
workers.properties 配置:

worker.list=ins_40,ins_41,loadbalancer
worker.ins_40.type=ajp13
worker.ins_40.host=172.24.2.40
worker.ins_40.port=7000
worker.ins_40.lbfactor=1
worker.ins_40.socket_keepalive=1
worker.ins_40.socket_timeout=300
worker.ins_41.type=ajp13
worker.ins_41.host=172.24.2.41
worker.ins_41.port=7000
worker.ins_41.lbfactor=1
worker.ins_41.socket_keepalive=1
worker.ins_41.socket_timeout=300
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ins_40,ins_41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
httpd.conf 配置:
<IfModule !mod_jk>
LoadModule jk_module "modules/mod_jk.so"
</IfModule>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkShmFile logs/mod_jk.shm
#JkMount /testweb/* loadbalancer -----/testweb 代理的应用的路径,可配置为/*/*,即代理所有应用
JkMount /* loadbalancer
2
3
4
5
6
7
8
9
10
11
12
13
14
# 使用 mod_proxy_ajp 代理
Apusic 应用服务器可以通过启用 Apache mod_proxy_ajp 连接器模块,将 Apache HTTP 服务器作为前端来将其配置为负载均衡。启用 Apusic 应用服务器中的 mod_proxy_ajp 模块,需要设置 Apusic 应用服务器中的 jk-enabled network-listener 属性。也可以用 jk-enabled network-listener 属性在不同的虚拟服务器下创建 jk-listener。
配置 mod_proxy_ajp 连接器模块
安装 Apache HTTP 服务器。
配置 httpd.conf。 例如:
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
<Proxy *>
AddDefaultCharset Off
Order deny,
allow Allow from all
</Proxy>
ProxyPass / balancer://test/
ProxyPassReverse / balancer://test
<Proxy balancer://test>
BalancerMember ajp://172.24.2.40:7000/ route=ins_40
BalancerMember ajp://172.24.2.41:7001/ route=ins_41
</Proxy>
2
3
4
5
6
7
8
9
10
11
12
13
- 重启 apache。
./apachectl -k stop
./apachectl -k start
2
# 使用 proxy_http_module 方式代理
修改 Apache 配置文件 httpd.conf,添加代理信息。
ProxyPass / balancer://proxy/ stickysession=JSESSIONID
ProxyPassReverse / balancer://proxy/
<Proxy balancer://proxy>
BalancerMember http:// 172.24.2.40:26888/ loadfactor=1 route=ins
BalancerMember http:// 172.24.2.41:26889/ loadfactor=1 route=ins2
</Proxy>
2
3
4
5
6
# Nginx 配置
# 管控界面配置
# 新建管理负载均衡器
在新建管理某个负载均衡器之前,请确保 nginx 负载均衡器已安装,确保该负载均衡器所在机器上已安装了节点代理 agent 并已成功启动。
使用管理员 admin 登录管控,切换到负载均衡器菜单页面,在页面点击【新建】按钮,新建管理负载均衡器。
详看新建负载均衡器。

新建管理负载均衡器后会自动重启该负载均衡器,之后也可以停止启动重启。

# 给集群分配负载均衡器
在管理的集群列表界面点击集群名称进入编辑集群页面,给集群设置负载均衡器。

# 通过文件手动配置
修改 nginx.conf,在 http 中添加如下内容,IP 需对应修改:
upstream nginx_linux {
server 127.0.0.1:26888 weight=100;
server 127.0.0.1:26889 weight=100;
}
server {
listen 172.20.129.12:7878;
client_header_timeout 30;
client_body_timeout 30;
proxy_connect_timeout 5;
send_timeout 300;
tcp_nodelay on;
tcp_nopush on;
sendfile on;
sendfile_max_chunk 512k;
keepalive_timeout 65;
gzip on;
location / {
proxy_pass http://nginx_linux;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 集群测试
# 集群应用部署与访问
- 通过管控部署。
进入 mycluster 集群界面,切换到应用程序界面,点击【部署】按钮。

进行应用部署,目标是部署到该集群。

- 命令行部署。
在 DAS 执行以下命令:
./asadmin deploy --target 集群名称应用所在路径·
如: ./asadmin deploy --target mycluster /home/test1.war
- 通过 Apache 访问应用。
http://172.20.140.136:8180/test1/index.jsp ---172.20.140.136 为负载均衡器 Apache 所在 IP。
# 高级特性
以上步骤能够使用 apache 负载均衡器和 Apusic 应用服务器搭建一个集群,本节重点介绍集群的高级使用方法。
注意: 防止管控平台和应用程序的 sessionid 会同步,建议在管控平台和应用程序分别使用不同浏览器访问。
# 会话粘滞(sessionstick)
- Apache 会话粘滞设置。
在界面上开启会话粘滞,默认已开启。

- ajp 方式设置,可以在 httpd.conf 文件的里添加 stickysession=JSESSIONID,默认文件已有该项。
测试。
部署应用,f12 查看 JSESSIONID,确认是否一直访问某个实例。
或者查看日志信息,确认是否应用日志一直在一个实例的日志里面打印。
# session 复制
- 部署应用时需要设置应用的高可用性。
方式一: 管控部署应用 hello.war,并勾选上"可用性"。

方式二: 命令行部署应用 hello.war,需指定--availabilityenabled=true。
./asadmin --host 172.20.129.76 deploy --target mycluster --availabilityenabled=true /opt/cluster_DAS/hello.war
- 测试。
启动一个实例,如 ins74,通过 apache 访问 hello 应用。
http://172.20.140.136/hello/response.jsp?username=admin
页面上的 username 每访问一次增加一个。

启动另一个实例 ins136,并关闭实例 ins74。
刷新访问应用的浏览器,确认 username 是否还是增加的。
# 失效转移
部署应用,并通过 apache 访问,查看访问的节点实例,关闭该节点实例,继续访问应用,确认是否访问到另一个实例节点,(如果应用设置了可用性(session 会复制),或者设置为集中存储,失效转移后 sessionid 不会改变)。
管控上开启失效转移,默认已开启。

失效转移参数: worker.apache.sticky_session_force=false ---失效转移。
worker.apache.sticky_session_force=true ---不失效转移。

# 部分 IV. 国密配置
# 国密版配置
# 生成国密证书
使用 GmSSL 工具包生成相关的国密证书,假设工具安装目录位/opt/GmSSL。具体步骤如下:
# GmSSL 工具配置
- 设置下面 2 个环境变量,让 gmssl 命令加入命令查找路径中,命令类似如下(路径需要根据实际更改):
export PATH=$PATH:/opt/GmSSL/bin
export LD_LIBRARY_PATH=/opt/GmSSL/lib/
2
- openssl.cnf 文件修改。
该文件在/opt/GmSSL/ssl 目录下。修改的内容包括:
[req]选项中添加或者修改: default_md = sm3。
修改[v3_req]选项内容为:
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature
2
- 添加[v3enc_req]选项,其内容:
basicConstraints = CA:FALSE
keyUsage = keyAgreement, keyEncipherment, dataEncipherment
2
# 证书制作
- 制作前准备
创建目录/opt/test,并在目录下创建一个名为"sm2Certs"的目录;
切换当前目录到/opt/test,并拷贝 openssl.cnf 文件文件到该目录下。
- 生成 SM2 参数文件
执行命令:
gmssl ecparam -name SM2 -out SM2.pem
- 生成 ca 证书
gmssl req -config ./openssl.cnf -nodes -subj "/C=CN/ST=GD/L=Shenzhen/O=Apusic LTD./OU=Development/CN=Test CA (SM2)" -keyout CA.key.pem -newkey ec:SM2.pem -new -out CA.req.pem
gmssl x509 -req -days 7300 -in CA.req.pem -extfile ./openssl.cnf -extensions v3_ca -signkey CA.key.pem -out CA.cert.pem
2
- 生成 SSL 服务端(或客户端)签名证书
gmssl req -config ./openssl.cnf -nodes -subj "/C=CN/ST=GD/L=Shenzhen/O=Apusic LTD./OU=Development/CN=server sign (SM2)" -keyout sm2Certs/svrsig.key.pem -newkey ec:SM2.pem -new -out sm2Certs/svrsig.req.pem
gmssl x509 -req -days 365 -in sm2Certs/svrsig.req.pem -CA CA.cert.pem -CAkey CA.key.pem -extfile ./openssl.cnf -extensions v3_req -out sm2Certs/svrsig.cert.pem -CAcreateserial
2
- 生成 SSL 服务端(或客户端)加密证书
gmssl req -config ./openssl.cnf -nodes -subj "/C=CN/ST=GD/L=Shenzhen/O=Apusic LTD./OU=Development/CN=server enc (SM2)" -keyout sm2Certs/svrenc.key.pem -newkey ec:SM2.pem -new -out sm2Certs/svrenc.req.pem
gmssl x509 -req -days 365 -in sm2Certs/svrenc.req.pem -CA CA.cert.pem -CAkey CA.key.pem -extfile ./openssl.cnf -extensions v3enc_req -out sm2Certs/svrenc.cert.pem -CAcreateserial
2
生成 PKCS12 秘钥库
- 分别生成签名、加密密钥库。
gmssl pkcs12 -export -inkey sm2Certs/svrsig.key.pem -in sm2Certs/svrsig.cert.pem -CAfile CA.cert.pem -chain -out sm2Certs/svrsig.p12 -name "svrsig" gmssl pkcs12 -export -inkey sm2Certs/svrenc.key.pem -in sm2Certs/svrenc.cert.pem -CAfile CA.cert.pem -chain -out sm2Certs/svrenc.p12 -name "svrenc"1
2- 将分别生成的秘钥库"合并":
cp sm2Certs/svrsig.p12 sm2Certs/keystore.p121使用国密密钥库管理工具, 如图:
打开生成的 keystore.p12密钥库:
导入 svrenc.p12 密钥库:
导入成功,保存。
生成信任库(可选)
- 使用国密密钥库管理工具, 新建密钥库,类型选择JKS,如图:
- 点击导入信任证书按钮:
- 导入 CA (CA.cert.pem文件) 等信任证书:
- 保存信任库 truststore.jks。
# 证书使用
经过上面步骤后,生成了 CA 证书文件 CA.cert.pem,信任库文件 truststore.jks,服务器证书文件 keystore.p12。
- 开启国密支持。domain.xml 中 java-config 的
<jvm-options>-Dcom.apusic.security.ssl.EnableGMTLS=false</jvm-options>中的 false 改为 true。
<jvm-options>-Dcom.apusic.security.ssl.EnableGMTLS=true</jvm-options>
配置国密证书。
- 复制服务器文件 keystore.p12 复制到${APUSIC_DOMAIN}/config/

- domain.xml 文件中 network-config/protocols/protocol 子元素。在所需要的端口对应的 protocol 中,设置 security-enabled 属性为"true",添加 ssl 子元素,并设置 sm11-enabled 属性为"true",并添加对应的 keystore, truststore 相关属性。如下所示:
<protocol name="http-listener-2" security-enabled="true">
<http max-connections="250" default-virtual-server="server">
<file-cache></file-cache>
</http>
<ssl classname="com.sun.enterprise.security.ssl.ApusicSSLImpl"
sm11-enabled="true"
key-store-type="PKCS12"
key-store="${com.apusic.aas.instanceRoot}/config/keystore.p12"
key-store-password="fdjaio%^&2123f"
client-auth="want"></ssl>
</protocol>
2
3
4
5
6
7
8
9
10
11
属性说明:
security-enabled: 为 true 时,开启 HTTPS 模式
sm11-enabled: 为 true 时,开启国密 TLS
key-store: 密钥库路径
key-store-type: 密钥库类型,一般为(JKS,PKCS12)
key-store-password: 密钥库密码
trust-store: 信任库路径
trust-store-type: 信任库类型,一般为(JKS)
trust-store-password: 信任库密码
client-auth-enabled: 为 true 时,开启客户端认证。

- 启动 AAS V10
# 360 浏览器国密版安装
# 浏览器安装
从 360 网站 (opens new window)下载国密浏览器进行安装,测试使用的是 AAS V10 版本
# 选择支持国密
打开 360 浏览器,进入"选项"页面,点击高级功能,启动国密SSL协议支持,如下图:

# 根证书内容处理
浏览器和服务器进行国密SSL协议通信,浏览器需要信任服务器的证书,因此,需要导入服务器的根证书到浏览器中的信任证书库中。
- 打开 360 浏览器,进入"选项"页面,点击高级功能,点击信任的根证书按钮,如下图:
- 进入受信任的国密证书标签页中,点击导入按钮,导入服务器根证书,如下图所示:
# 访问地址
在 360 浏览器国密版输入地址: https://ip:6887 (opens new window)。

# 相关资料
- GmSSL工具包,为编译后二进制包,用户也可到官网 (opens new window)下载源代码,自行编译。
- 国密密钥库管理工具
3.如果使用 Oracle JDK,由于 JVM 默认的加密字节长度限制,需要替换jce.jar;将 lib/jce_policy-8.zip 解压,并替换 %JAVA_HOME%/jre/lib/security 文件夹下相应 jar 文件,解放字节限制。
# 部分 V. 第三方监控工具
# Zabbix适配
Zabbix (opens new window) 是一个企业级的高度集成的开源监控软件,提供了分布式监控解决方案,可以用来监控设备,服务等的可用性和性能。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。
# 安装
Zabbix 安装与部署请请查看其官方文档 (opens new window),这里不做过多赘述。
Zabbix 监控 Apusic应用服务器是基于 JMX,所以还需要安装 Zabbix Java gateway。
# 配置
- Zabbix server 配置。
当 Java 网关启动并运行后,你需要告诉 Zabbix server 去哪里找 Zabbix Java 网关。通过在 server 配置文件中指定 JavaGateway 和 JavaGatewayPort 来完成这个操作。如果运行 JMX 应用程序的主机是由 Zabbix 代理监控的,则可以在 proxy 配置文件中指定连接参数。
修改 /etc/zabbix/zabbix_server.conf 配置文件,添加 JavaGateway 相关信息:
# Zabbix Java gateway 的 IP 地址(或主机名)。
JavaGateway=192.168.3.14
# Zabbix Java gateway 监听端口。
JavaGatewayPort=10052
2
3
4
5
默认情况下,Zabbix server不会启动任何与JMX监控相关的进程。如果你希望用到它,则必须指定Java pollers的数量。此操作与配置常规 pollers 和 trappers数量一样。
# Java 轮询器的 pre-forked 实例数量。
StartJavaPollers=5
2
AAS V10 配置
监视配置 AAS V10 默认只开启JVM监视、JDBC 连接池监视服务和 HTTP 服务监视,如果需要开启更多的监视,可以在管控台的"监视配置"中开启,具体参考监视服务设置。
启动 AAS V10
启动
# Zabbix 监控
- 导入 AAS V10 监控模板
下载Apusic应用服务器监控模板,zabbix6.2以上版本下载 AAS V10监控模板6.2,zabbix6.0版本下载 AAS V 10监控模板6.0,zabbix5.0版本下载 AAS V 10监控模板5.0 ,zabbix4.4版本下载 AAS V 10监控模板4.4,保存到本地。
然后导入到 Zabbix 模板库中。导入模板库的步骤为:依次点击 配置 -> 模板 -> 导入按钮,如图所示:
点击选择文件,选择下载的 AAS V10 监控模版,如图所示:
点击导入,导入成功后,如图所示:
- 创建 Zabbix 主机
如果已有主机,可以直接编辑主机添加JMX端口。创建主机的步骤为:依次点击 配置 -> 主机 -> 创建主机,如图所示:
在创建主机界面中,填写主机名;选择主机组;添加 JMX 类型的接口;填写接口 IP 地址或 DNS 名称, 端口;模板输入框中选择步骤1导入的模板如下图所示:。
在宏标签页中,添加两个宏属性值,分别为:{$JMX.USER}和{$JMX.PASSWORD}, 其值为登录管控的用户名及密码,如图所示:
- 查看监控数据
添加完主机后则可以在监控中看到监控数据, 如图所示:
点击最新数据,即可查看细节:
# SkyWalking适配
# 简介
SkyWalking 是一款开源的应用性能监控(APM)工具,主要用于分布式系统的性能监控和故障排查,能够对微服务架构、云原生应用等进行全方位的监控和分析。它通过收集和分析应用系统中的各种数据,如链路追踪数据、性能指标数据等,帮助开发者和运维人员快速了解系统的运行状态,定位性能问题和故障点。
# 相关资源
- 金蝶Apusic应用服务器产品包
- SkyWalking APM v9.6.0及以上
- Java Agent for Apache SkyWalking v9.0.0及以上
# Java Agent for Apache SkyWalking安装
下载并安装Java Agent for Apache SkyWalking,建议使用v9.0.0及以上版本。安装包及安装说明参考官网介绍,在此不作详细说明。
Java Agent for Apache SkyWalking需要与金蝶Apusic应用服务器安装在同一服务器上。
# 应用服务器APM插件配置
准备有金蝶Apusic应用服务器的插件,apm-aas-10.x-plugin-8.9.0.jar,可在安装目录ApusicAS\tools\下拷贝。
将apm-aas-10.x-plugin-8.9.0.jar放置Agent的plugins目录中,如/opt/skywalking/skywalking-agent/plugins/。
如果应用服务器和SkyWalking Agent与SkyWalking APM是远程通讯,需要设置SkyWalking Agent的配置文件agent.config中的collector.backend_service为实际的SkyWalking APM的IP和端口。
# 应用服务器配置
# JVM参数配置
需要在金蝶Apusic应用服务器中通过JVM参数配置SkyWalking Agent信息。
在domain.xml中添加以下参数:
<jvm-options>-Dskywalking.agent.service_name=AAS-V10</jvm-options>
<jvm-options>-Dskywalking.agent.instance_name=LOCALHOST</jvm-options>
<jvm-options>-javaagent:/opt/skywalking/skywalking-agent/skywalking-agent.jar</jvm-options>
2
3
参数配置:
- -Dskywalking.agent.service_name: 为应用服务器设置的服务名称,如
AAS-V10。 - -Dskywalking.agent.instance_name: 定义实例名称,如
localhost。 - -javaagent: 指定实际的 SkyWalking Agent 路径,如
/opt/skywalking/skywalking-agent/skywalking-agent.jar。
# OSGI配置
修改金蝶Apusic应用服务器的osgi.properties文件,指定org.apache.skywalking.*相关的类由上层类加载器加载。
org.osgi.framework.bootdelegation=${eclipselink.bootdelegation}, \
org.netbeans.lib.profiler, org.netbeans.lib.profiler.*, \
com.apusic.secg.boot, com.apusic.secg, javax.*, \
org.apache.skywalking, org.apache.skywalking.*
2
3
4
org.osgi.framework.bundle.parent=app
# 数据库连接池配置
应用服务器中使用数据库连接池,需要把数据库驱动从/ApusicAS/aas/domains/mydomain/lib/ext目录放入到 /ApusicAS/aas/domains/mydomain/lib目录。
# 启动应用服务器
配置完成后,执行启动命令,如asadmin start-domain,启动金蝶Apusic应用服务器。启动时将会同时启动Java Agent for Apache SkyWalking。
# skywalking APM操作
安装SkyWalking APM,产品包及安装步骤可查看官网,在此不作详细介绍。
启动SkyWalking APM,通常启动方式为,进入SkyWalking APM安装目录的bin目录,执行./startup.sh。启动方式可查看官网,在此不作详细介绍。
启动前需要注意JDK安装环境,需要安装对应版本,例如SkyWalking APM v9.6.0使用JDK11。
访问SkyWalking APM的Web管控平台,通常访问方式为http://IP:8080。详细配置及使用方式可查看官网,在此不作详细介绍。
可查看服务,例如选择AAS-V10。
# 问题定位
如果应用服务器启动失败,查看应用服务器的日志,如
server.log。如果JAVA Agent for Apache SkyWalking启动失败,进入Agent的安装目录对应的日志位置,如
/opt/skywalking/skywalking-agent/logs/,查看skywalking-agent的日志。如果是SkyWalking APM启动失败,进入SkyWalking APM安装目录,如
/opt/skywalking/apache-skywalking-apm-bin/logs/,查看APM的日志。
# 部分 VI. 兼容性
# 兼容性
# 运行环境
| 类别 | 名称 |
| 操作系统 | Linux: RedHat系列 Suse Linux系列 银河麒麟操作系统 中标麒麟操作系统 统信操作系统 深度操作系统 普华操作系统 ... |
| Unix: HP-Unix类型 IBM AIX系列 Solaris系列 ... | |
| Windows: Windows 7/8/10/2003/2008/2012... | |
| 数据库 | 兼容各类数据库 Oracle MySQL Microsoft SQL Server IBM DB2 Derby Informix 达梦数据库 人大金仓数据库 华为GaussDB 神通数据库 南大通用数据库 瀚高数据库 AntDB数据库 ... |
| 服务器 | 支持各类国产服务器 飞腾 龙芯 TaiShan 鲲鹏 申威 中科可控 英政 兆芯 新华三 ... |
| Java环境 | Oracle JDK1.8+ Open JDK1.8+ IBM JDK 1.8+ Apusic JDK8+ |
| 浏览器 | 支持各类主流浏览器 IE9及以上版本 Chrome Firefox 360浏览器 红莲花浏览器 ... |
# JDK
产品适应JDK8及以上版本。
| 版本 | 说明 |
|---|---|
| JDK8 | 支持 Oracle JDK 、Open JDK 、IBM JDK 版本 8. AAS-V10.1SP3 之后的 AAS 版本自适应 JDK8 各个小版本,SP3 之前的版本建议使用 JDK1.8.0_201 至 JDK1.8.0_232 之间的版本 |
| JDK9 | AAS-V10.1SP3 之后的 AAS 版本自适应 JDK9 各个小版本,SP3 之前的版本需要修改 mydomain/domain.xml 中的 JVM 设置。包括删除或注释掉-Djava.endorsed.dirs 和-Djava.ext.dirs= 这 2 个参数,并增加如下 4 个参数: 独立实例或集群实例还需将独立实例或集群配置文件删除以下参数: |
| JDK10 | 参考 JDK9 |
| JDK11 | 参考 JDK9。如遇到openJDK环境下无法启动,添加JVM参数 |
| JDK15 | AAS-V10.1SP3 之后的 AAS 版本自适应 JDK15 各个小版本,SP3 之前的版本不适用 |
| JDK16以上 | AAS-V10.1SP3 之后的 AAS 版本需要将 domain.xml 中的<jvm-options>中所有文字[9|]和[1.8.0_251|]去掉,SP3 之前的版本不适用 |
# 部分 VII. 配置参数说明
# 网络配置
# 监听程序
在domain.xml中配置格式为
<configs>
<config name="server-config">
<network-config>
<network-listeners>
<network-listener protocol="http-listener-1" port="6888" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp"></network-listener>
<network-listener protocol="http-listener-2" port="6887" name="http-listener-2" thread-pool="http-thread-pool" transport="tcp"></network-listener>
<network-listener protocol="pu-protocol" port="6848" name="admin-listener" thread-pool="admin-thread-pool" transport="tcp"></network-listener>
</network-listeners>
</network-config>
</config>
</configs>
2
3
4
5
6
7
8
9
10
11
配置参数说明:
| 属性名称 | 属性说明 |
|---|---|
| name | 名称:该网络监听程序名称 |
| protocol | 协议:所使用的协议,点击将会跳转至对应协议消息页面状态:默认勾选。表示开启。 |
| security-enabled | 安全性:不勾选代表不启用安全协议,勾选代表启用安全协议 |
| port | 端口:网络监听程序监听的端口(使用变量作为端口时请确保变量被赋值),如http-listener-1的默认端口为6888 |
| transport | 传输:所使用的传输方式,如tcp |
| thread-pool | 线程池:与网络监听程序关联的线程池。如http-listener-1的线程池为http-thread-pool |
# 协议配置
在domain.xml中配置格式为
<configs>
<config name="server-config">
<network-config>
<protocols>
<protocol name="sec-admin-listener" security-enabled="true">
<http compressable-mime-type="text/html,text/xml" compression-min-size-bytes="4095" max-connections="3007" custom-methods="77" relaxed-query-chars="^" disabled-http-methods="PUT:DELETE" chunking-enabled="false" encoded-slash-enabled="true" allow-custom="true" uri-encoding="utf-8" allow-payload-for-undefined-http-methods="false" default-virtual-server="__asadmin" compression="on">
<file-cache enabled="true"></file-cache>
</http>
<ssl classname="com.sun.enterprise.security.ssl.ApusicSSLImpl" client-auth="want" cert-nickname="kaas"></ssl>
</protocol>
</protocols>
</network-config>
</config>
</configs>
2
3
4
5
6
7
8
9
10
11
12
13
14
配置参数说明:
| 属性名称 | 属性说明 |
|---|---|
| name | 网络监听程序名称 |
| protocol | 协议:所使用的协议,点击将会跳转至对应协议消息页面状态:默认勾选。表示开启 |
| security-enabled | 安全性:不勾选代表不启用安全协议,勾选代表启用安全协议 |
| port | 端口:网络监听程序监听的端口(使用变量作为端口时请确保变量被赋值),如http-listener-1的默认端口为6888 |
| transport | 传输:所使用的的传输方式,如tcp |
| thread-pool | 线程池:与网络监听程序关联的线程池。如http-listener-1的线程池为http-thread-pool |
| ssl3-enabled | SSL3:是否开启支持SSL3 |
| tls-enabled | TLS:是否开启支持TLS |
| tls11-enabled | TLS11:是否开启支持TLS11 |
| tls12-enabled | TLS12:是否开启支持TLS12 |
| client-auth | 客户机验证:是否开启要求客户机向服务器验证自身 |
| cert-nickname | 证书昵称:采用单个值, 标识服务器的密钥对和证书 |
| key-store | 密钥库:密钥库文件的名称 (例如, ${com.apusic.aas.instanceRoot}/config/keystore.jks),通常为绝对路径 |
| trust-store-typ | 信任算法:要用于证书路径验证的信任管理算法的名称 (例如, PKIX) |
| trust-store | 信任存储:truststore 文件的名称 (例如, ${com.apusic.aas.instanceRoot}/config/cacerts.jks) |
| server-name | 服务器名:别名 (如果服务器使用别名)。如果附加冒号和端口号, 则服务器向客户机发送的 URL 中将使用此端口 |
| default-virtual-server | 默认虚拟服务器:使用“虚拟服务器”页面定义新的虚拟服务器;_asadmin或server;管控平台server实例默认为_asadmin |
| redirect-port | 重定向端口:用于重定向的 SSL 端口值 |
| max-connections | 最大请求数:在 keep-alive 模式下,每个连接的最大请求数。默认为250 |
| timeout-seconds | 超时:可以将连接视为空闲并保持为保持活动状态的最长时间。值-1表示禁用此设置。默认为30秒。Keepalive时,连接空闲的时间,请求完成后不会立马关闭连接,如果30秒内还没有请求过来,则关闭连接 |
| connection-upload-timeout-millis | 连接上载超时:启用上载超时情况下的上载超时。值 -1 表示禁用此设置。默认为300000毫秒。从网络读取完所有数据的超时时间 |
| request-timeout-seconds | 请求超时:请求超时之前的时间。值 -1 表示禁用此设置。默认为900秒。在HTTP线程池中,处理单个请求的超时时间,如果超过设置的时间则会停止处理 |
| send-buffer-size-bytes | 发送缓冲区大小:默认为8192字节 |
| header-buffer-length-bytes | 标头缓冲区长度:请求处理线程用于读取请求数据的缓冲区的大小。默认为8192字节 |
| max-post-size-bytes | 最大POST大小:POST 操作的最大大小。-1表示无限制。默认为-1 |
| max-save-post-size-bytes | 最大保存POST大小:验证期间容器将保存的 POST 的最大大小。默认为 4096字节 |
| uri-encoding | URI编码:用来对收到的请求 URI 进行解码的字符集.默认为UTF-8 |
| version | 版本:所用 HTTP 协议的版本。默认为 HTTP/1.1 |
| compression | 压缩:启用 HTTP/1.1 GZIP 压缩以节省服务器带宽 。on、off、force;默认为off。 |
| compressable-mime-type | 可压缩Mime类型:使用 HTTP 压缩的 MIME 类型的逗号分隔列表。默认为:text/html,text/xml,text/plain MIME:(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型 |
| compression-min-size-bytes | 压缩最小大小:默认为2048字节 |
| no-compression-user-agents | 无压缩用户代理:以逗号分隔的正则表达式列表, 对应那些不使用压缩的 HTTP 客户机的用户代理 |
| restricted-user-agents | 受限的用户代理:应用 HTTP 压缩的受限用户代理的列表 |
| default-response-type | 默认响应类型:指定为以分号分隔的字符串, 此字符串包含内容类型, 编码, 语言, 字符集 |
| forced-response-type | 强制响应类型:要强制的响应类型 (如果扩展名的任何 MIME 映射无法匹配提供的内容) |
| adapter | 适配器:静态资源适配器的类名;默认为 org.glassfish.grizzly.http.server.StaticHttpHandler |
| comet-support-enabled | Comet支持:是否开启Comet;true/false,默认不勾选 |
| dns-lookup-enabled | DNS查找:是否开启NDStrue/false,默认不勾选。需要配置【JVM选项】-Dapusic.http.getHostFromNameService.enabled=true |
| rcm-support-enabled | RCM支持:是否开启RCM;true/false,默认不勾选 |
| disabled-http-methods | 禁用http方法:禁用选中的http方法。默认有TRACE/OPTION/HEAD/PUT/DELETE |
| allow-custom | 允许自定义HTTP方法:启用后,所有自定义的HTTP方法都被禁止。true/false,默认不勾选 |
| custom-methods | 自定义HTTP方法白名单:可以使用自定义HTTP方法白名单(":"冒号分隔) |
| auth-pass-through-enabled | 传递验证:指示网络监听程序从 SSL 终端代理服务器接收流量,true/false,默认不勾选 |
| chunking-enabled | 分块:启用HTTP响应分块;true/false,默认勾选 |
| xpowered-by | X-Powered-By:在 Servlet 生成的 HTTP 响应标题中包含 X-Powered-By: Servlet/3.0 |
| encoded-slash-enabled | 编码斜杠:URL中允许编码斜杠;true/false,默认false |
| websockets-support-enabled | Websocket支持:是否开启websocket;true/false,默认勾选 |
| relaxed-query-chars | 特殊字符白名单:设置URL允许访问的特殊字符 |
| allow-payload-for-undefined-http-methods | 允许GET HEAD DELETE方法携带请求体:是否允许GET HEAD DELETE方法携带请求体;true/false,默认勾选 |
| 文件高速缓存: | |
| enabled | 状态:是否开启文件高速缓存,默认不勾选 |
| max-age-seconds | 最长存活时间:文件过期被清理出高速缓存之前的最长存活时间 (秒),默认30秒 |
| max-cache-size-bytes | 最大高速缓存大小:文件高速缓存的最大大小 (字节),默认10485760字节 |
| max-files-count | 最大文件数:文件高速缓存中文件的最大数目,默认1024 |
# 传输配置
在domain.xml中配置格式为
| 属性名称 | 属性说明 |
|---|---|
| name | 传输的名称 |
| selection-key-handler | Selection Key 处理器:Selection Key 处理器的类名。如果留空, 则使用默认实现 |
| byte-buffer-type | 字节缓冲区类型:将与传输搭配使用的字节缓冲区的类型,包括HEAP/DIRECT,默认为HEAP |
| buffer-size-bytes | 缓冲区大小:要为使用此传输的网络监听程序创建的输入流提供的缓冲区大小,默认为8192字节 |
| acceptor-threads | 接受方线程:计算机中的处理程序数。如果值为 -1, 则表示传输将自行计算接受方线程的数目。默认为1 |
| max-connections-count | 最大连接数:传输应同时处理的最大连接数。默认为4096 |
| idle-key-timeout-seconds | 空闲键超时:取消空闲键并关闭通道之前的时间,默认30秒 |
| read-timeout-millis | 读取超时:读取操作超时,默认为30000毫秒 |
| selector-poll-timeout-millis | 选择器轮询超时:NIO 选择器将阻止等待事件 (用户请求) 的时间。默认为1000毫秒 |
| write-timeout-millis | 写入超时:写入操作超时。默认30000毫秒 |
| io-strategy | IO策略:org.glassfish.grizzly.strategies.WorkerThreadIOStrategy、org.glassfish.grizzly.strategies.SameThreadIOStrategy、org.glassfish.grizzly.strategies.LeaderFollowerNIOStrategy |
| display-configuration | 显示配置:开启后,将传输的内部配置写入到服务器日志。默认禁用 |
| enable-snoop | 探测:将请求/响应信息转储到服务器日志中。该操作对调试来说很有用, 但会大幅降低性能。默认禁用 |
| http-slow-detect-enable | 慢攻击检测:开启慢攻击检测,当连接超过设置的超时时间后,会自动关闭超时的路径。默认不开启 |
| http-slow-detect-debug | 慢攻击日志:输出慢攻击日志。默认不开启 |
| http-slow-write-bytes | 写最小数据量:连接写N次,且写出去的数据少于该值则判断为慢攻击。默认为128字节 |
| http-slow-write-count | 续写数据次数:连接写N次,且写出去的数据少于配置的最小数据则判断为慢攻击。默认为5次 |
# JDBC属性
| 属性名称 | 属性说明 |
|---|---|
| name | 连接池名称:不能修改。 |
| res-type | 资源类型:默认显示原始设置。 |
| datasource-classname | 数据源类名称:实现 DataSource 和/或 XADataSource API 的特定于供应商的类名。datasource-classname |
| driver-classname | 驱动程序类名称:实现 java.sql.Driver 接口的特定于供应商的类名。driver-classname |
| ping | ping:启用后, 该池在创建或重新配置期间执行试通命令以识别并警告其属性的任何错误值。默认不开启。ping |
| deployment-order | 部署顺序:指定服务器启动时资源的加载顺序。先加载较低的数字。deployment-order |
| steady-pool-size | 初始和最小池大小:在池中维护的连接的最小和初始数量,默认为8。steady-pool-size |
| max-pool-size | 最大池大小:可以为满足客户机请求而创建的连接的最大数量,默认为32 |
| pool-resize-quantity | 池调整大小数量:池空闲超时到期时要删除的连接的数量,默认为2 |
| idle-timeout-in-seconds | 空闲超时:连接在池中可以保持空闲的最长时间。0代表对空闲的连接不进行验证,默认为300秒 |
| max-wait-time-in-millis | 最长等待时间:发送连接超时之前调用方等待的时间,默认为60000毫秒 |
| max-age-time-in-seconds | 最大生存时间 :连接自创建开始的最大生存时间,默认为0秒 |
| non-transactional-connections | 非事务处理连接:返回非事务处理连接,默认不勾选。 |
| transaction-isolation-level | 事务处理隔离:包括Read Uncommitted(读未提交)、Read Committed(读已提交)、Repeatable Read(可重复读取)、Serializable(可串行化),如果未指定, 则使用 JDBC 驱动程序的默认级别。l |
| is-isolation-level-guaranteed | 隔离级别:所有连接都使用同一隔离级别; 需要事务处理隔离,默认勾选 |
| statement-timeout-in-seconds | Statement超时:用于终止异常错误长时间运行查询的连接的超时属性。-1 表示未启用。默认未启用 |
| statement-cache-size | 语句高速缓存大小:设置为非零正数值 (例如 10) 时, 启用高速缓存 |
| init-sql | 初始SQL:指定每当从池创建连接时就执行的 SQL 字符串 |
| wrap-jdbc-objects | 包装JDBC对象:true/false;设置为“真”时, 应用程序将获取 Statement, PreparedStatement, CallableStatement, ResultSet, DatabaseMetaData 的已包装 jdbc 对象。默认为真 |
| pooling | 池化:true/false;设置为“假”时, 禁用池的连接共享。默认为真 |
| connection-leak-timeout-in-seconds | 连接泄露超时:设置确定为连接泄露超时的时间,0表示无连接泄露检测 |
| connection-leak-reclaim | 连接泄露回收:true/false;如果启用该选项, 则连接泄漏超时后, 池将回收泄漏的连接。默认不启用 |
| statement-leak-timeout-in-seconds | 语句泄露超时:设置确定为语句泄露超时的时间,0表示无语句泄漏检测 |
| statement-leak-reclaim | 语句泄露回收:true/false;如果启用该选项, 则语句泄漏超时后, 池将回收泄漏的语句。默认不启用 |
| connection-creation-retry-attempts | 创建重试尝试次数:尝试创建新连接的次数。0 表示不进行重试,连接失败时该连接会一直是失败的状态,不进行重新连接。默认值为0 |
| connection-creation-retry-interval-in-seconds | 重试时间间隔:尝试创建连接时两次重试之间的时间间隔。当“创建重试尝试次数”值大于 0 时有效。默认值为10 秒 |
| lazy-connection-association | 延迟关联:true/false;对连接执行操作时, 连接将延迟关联。默认为不勾选 |
| lazy-connection-enlistment | 延迟连接登记:true/false;仅当在方法中实际使用资源时才将资源添加至事务处理 。默认为不勾选 |
| associate-with-thread | 与线程关联:true/false;当同一线程需要连接时, 它可以重复使用已与该线程关联的连接。默认为不勾选 |
| match-connections | 匹配连接:true/false;启用或禁用池的连接匹配。默认为不勾选 |
| validate-atmost-once-period-in-seconds | 验证连接时间间隔:验证连接是否可用的时间间隔 (单位:秒)。此项配置需在下方开启连接验证功能才生效。默认值为 0, 表示无间隔, 即每次请求都验证连接 |
| max-connection-usage-count | 最大连接使用次数:连接将被池重用指定次数, 超出此数目后连接会关闭。0 表示未启用该功能。默认为0 |
| is-connection-validation-required | 连接验证:true/false;为真时,验证连接, 连接失败时允许服务器重新连接。默认不勾选。 |
| validationmethod | 验证方式:包括table(数据表)、custom-validation(自定义验证)、meta-data(元数据)、auto-commit(自动提交)。默认情况下使用auto-commit,开启【连接验证】,设置【一旦失败】或【创建重试尝试次数】,连接失败后需要重新连接时使用auto-commit的方式即可重新连接。有些驱动无法使用auto-commit的方式,这个时候就尝试用别的【验证方式】,例如table。 |
| validation-table-name | 表名:如果验证方式选择了table,需选择或输入表名。该表名为该连接池中的任意可使用的表,该表可以为空表。 |
# 部分 VIII. 开发插件配置
金蝶Apusic应用服务器提供开发插件,包括Eclipse IDE和IntelliJ IDEA。
# Eclipse IDE插件配置
金蝶Apusic应用服务器提供基于IntelliJ IDEA 的开发插件,可在安装包中下载使用。
# 相关资源
- 金蝶Apusic应用服务器产品包
- Eclipse IDE (版本在2022-03(4.23)及以上)
- 金蝶Apusic应用服务器插件安装包
aas-eclipse-tools.zip - 插件依赖包
sapphire.rar
# 插件安装及使用
首先需要在eclipse中安装sapphire插件。通常情况下,安装包aas-eclipse-tools.zip带有sapphire插件文件。解压依赖sapphire.rar。将features、plugins目录下的文件分别拷贝至Eclipse IDE安装目录对应的features和plugins目录。
解压安装包aas-eclipse-tools.zip,将com.apusic.aas.tools.jver_1.0.2.jar、com.apusic.aas.tools.ui_1.0.2.jar、com.apusic.aas.tools_1.0.2.jar拷贝至EclipseIDE安装目录dropins目录下。
启动EclipseIDE。
进入EclipseIDE,点击window菜单 ,点击Preferences->Server - >Runtime Environment中添加AAS配置。
在应用程序中添加Servers视图。之后可以对应用程序进行部署、调试等操作。
详细操作请参考《金蝶Apusic应用服务器EclipseIDE插件使用指南.pdf》。
# Intellij IDE插件配置
金蝶Apusic应用服务器提供基于IntelliJ IDEA 的开发插件,可在安装包中下载使用。
# 相关资源
- 金蝶Apusic应用服务器产品包
- IntelliJ IDEA Ultimate 2022.3 — 2024.1
- 插件安装包
aas-idea-tools.zip
# 插件安装及使用
进入IntelliJ IDEA,点击主菜单IntelliJ IDEA> Preferences> Plugins,点击右上方Installed配置图标,选择“Install Plugin from Disk”。
插件安装完成后,重启。
打开 IDEA,从主菜单 File > Settings > Build, Execution, Deployment 对话框添加 Apusic 应用服务器。选择 Application Servers,点击右侧的“+”按钮,选择 Apusic Server 进行添加。
新建或打开应用程序,Run > Edit Configurations… >+,选择 Apusic Server/local,配置相关信息。在运行前需先初始化金蝶Apusic应用服务器,设置管理员密码,或配置用户信息。
对应用程序进行部署、调试等操作。
详细操作请参考《金蝶Apusic应用服务器IntelliJ IDEA插件使用指南.pdf》。
# 部分 IX. FAQ
# 创建本地节点,节点类型需选择为"config"

# 应用访问地址获取
在应用列表中点击【访问】链接,出现 web 应用程序链接。
页面中会显示该通过该应用所有目标服务器实例访问应用的链接,点击链接可以访问该应用。


链接的组成为: http: //实例地址:服务端口/应用上下文路径。
注意: 其中"实例地址"是根据实例所在节点的主机地址获取所在机器的 IP 地址。
但是如果节点的主机地址为 localhost,会做特殊处理,获取为机器的主机名 hostname。

# web.xml 格式问题
AAS V10 对应用的描述文件 web.xml 是做严格的规范检测,如果文件内容有问题,如标签库的顺序没有符合标准,部署时会报错,但是能够通过设置,对 web.xml 不校验或者检验后给出错误提示但是继续部署。
问题: 部署某个应用报如下错误:
Exception during lifecycle processing java.io.IOException: org.xml.sax.SAXParseException; lineNumber: 57; columnNumber: 11; Deployment descriptor file WEB-INF/web.xml in archive [report]. 元素类型为 "web-app" 的内容必须匹配 "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)"。
原因分析:
可能是 web.xml 标签库顺序问题<web-file-list>在<taglib>后面部署报错,调整到<web-file-list>在<taglib>前面部署成功。
解决方法:
应用程序设置中可以对 web 应用描述文件 web.xml 解析方式进行设置,默认为"完全",当 web.xml 文件里面的标签库的顺序不对时,会报错并且不进行部署。

XML 验证选项说明:
完全: 报错并且部署失败。
解析: 报告错误,继续部署。
无: 不报告错误,继续部署。
# 中文乱码显示问题
问题一: 访问应用的 html 文件,出现中文乱码问题。
解决方法:
需要在 domains/mydomain/config/default-web.xml 中加入一个 fileEncoding 项。
<init-param>
<param-name>fileEncoding</param-name>
<param-value>utf-8</param-value>
</init-param>
2
3
4

问题二: 应用使用 JSP include html 文件,访问应用时中文出现乱码。
解决方法:
需要在 web.xml 中设置 html 文件的编码。
<jsp-config>
<jsp-property-group>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.html</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
2
3
4
5
6
7
通用解决方法:
- 添加 apusic-web.xml 到应用的 WEB_INF 目录下。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app>
<class-loader delegate="false"/>
<locale-charset-info>
<parameter-encoding default-charset="UTF-8"/>
</locale-charset-info>
</aas-web-app>
2
3
4
5
6
7
8
# 运行在 JDK9 以上版本的问题以及解决方法
问题一: 启动报错。
原因分析: JDK9 以上版本不支持 java.endorsed.dirs 和 java.ext.dirs 参数。
解决放法:
需要修改 mydomain/domain.xml 中的 JVM 设置。包括删除或注释掉-Djava.endorsed.dirs 和-Djava.ext.dirs=这 2 个参数,并增加如下 4 个参数:
<jvm-options>--add-opens=java.base/sun.net.www.protocol.jrt=ALL-UNNAMED</jvm-options>
<jvm-options>--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED</jvm-options>
<jvm-options>--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED</jvm-options>
<jvm-options>--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED</jvm-options>
2
3
4
问题二: 启动实例报错。
原因分析: 如问题 1。
解决方法:
将独立实例或集群配置文件删除以下参数:
<jvm-options>-XX:MaxPermSize=192m</jvm-options>
<jvm-options>-Djava.endorsed.dirs=${com.apusic.aas.installRoot}/modules/endorsed${path.separator}${com.apusic.aas.installRoot}/lib/endorsed</jvm-options>
<jvm-options>-Djava.ext.dirs=${com.apusic.aas.javaRoot}/lib/ext${path.separator}${com.apusic.aas.javaRoot}/jre/lib/ext${path.separator}${com.apusic.aas.instanceRoot}/lib/ext</jvm-options>
2
3
再新增问题 1 的参数,重启实例即可。
可以参考以上方法修改 default.xml,之后新建的实例复制 default.xml 就不需要再修改配置文件。
在JDK11以上启动报错,可以增加jvm参数-Djdk.util.zip.disableZip64ExtraFieldValidation=true。
注意:
- 2020 年 7 月起的 AAS V10 版本才能使用以上解决方法。
- 因为 JDK8 环境下不需修改 domain.xml 的配置,所以如果创建的集群实例中同时存在 JDK8 和 JDK9 以上的实例,集群不能同时启动所有的实例。后续完善问题后再说明。
- AAS-V10.1SP3 之后的版本无需改动。AAS-V10.1SP3 之后的版本支持 JDK1.8/JDK9/JDK10/JDK11/JDK15/JDK16,在 JDK16 启动时,需要把 domain.xml 中的'
`里所有文字[9|]/[1.8.0_251|]去掉。远程节点设置了软连接后各个 JDK 版本可以相互兼容,但鉴于 JDK 版本之间存在一些协议等的差异,建议管控平台与节点使用相同版本 JDK。
# 执行 enable-secure-admin,开启安全管控后重启,重启时报错
java.lang.NoClassDefFoundError: sun/security/ssl/HandshakeStateManager
原因分析: jdk1.8.0_181 及以下的版本不支持 AAS V10 的 ssl。
解决方法 1:
换成 jdk1.8.0_191 及以上的版本。
解决方法 2:
拷贝 aas/lib/endorsed/gm/original/jsse.jar 到 aas/modules/endorsed 目录下。
# 新建 JDBC 连接池,ping 的时候报错 java.lang.StackOverflowError
原因分析: 新建连接池时选择的驱动类为"com.mysql.cj.jdbc.Driver",上传的驱动 jar 文件里面没有该驱动,所以导致报错。
解决方法:
修改驱动类名或者重新上传一个驱动文件。

# 部署应用报错:
- org.xml.sax.SAXException
org.xml.sax.SAXException: Requested schema is not found in local repository, please ensure that there are no typos in the XML namespace declaration
原因分析: war 应用不支持在 META-INF 目录下放置 apusic-appliction.xml。
解决方法:
删除 META-INF/apusic-appliction.xml,重新在 WEB-INF 目录下新建一个 apusic-web.xml 文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE apusic-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 3.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<apusic-web-app error-url="">
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true"></property>
</jsp-config>
</apusic-web-app>
2
3
4
5
6
7
8
- org.apache.catalina.LifecycleException。
org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.NullPointerException

原因分析: servletContext 中的 getRealPath(String path)方法返回了 Null。
解决方法:
增加一个 apusic.context.getRealPath.notAllowNull,如果设置为 true,就不返回 null。

# 如何开启启动时打印类加载信息
解决方法:
增加 JVM 选项"-verbose"。



# 修改配置后,如何确定需要重启才生效?
查看服务器状态,如显示必须重启时需要重启才能生效。
点击"必须重新启动"链接,会打开必须重新启动界面,界面上会显示修改了哪些属性,并且也能在界面上点击【重新启动】按钮重启应用服务器。

# JAVA 运行环境-指定 JDK 路径设置
- 默认使用环境变量中的 JAVA 环境。
- 可以指定 AAS V10 中的 JAVA 运行环境,通过设置 AS_JAVA 值得方法指定,APUSIC_HOME 为 AAS 安装目录,例如/opt/ApusicAS/aas。
Windows:修改%APUSIC_HOME%/config/asenv.bat,增加 AS_JAVA 变量。
如: set AS_JAVA=H:javajdk1.8.0_201
Linux: 修改${APUSIC_HOME}/config/asenv.conf, 增加 AS_JAVA 变量。
如: AS_JAVA="/home/java/jdk1.8.0_211"
# 如何配置虚拟服务器的白名单和黑名单
在创建/编辑虚拟主机时,可以增加如下属性进行白名单和黑名单控制,value 根据实际需要填写,最后在配置文件的格式如下类似:
<virtual-server network-listeners="http-listener-1,http-listener-2" id="server">
<property name="allowRemoteAddress"value="127.0.0.1"></property>
</virtual-server>
2
3
| 属性 | 介绍 |
|---|---|
| allowRemoteAddress | 表示允许访问的 IP 地址,多个 IP 地址以逗号分隔,可以正则表达式的使用通配符。只有符合规则的 IP 地址才能访问。如果同时也配置了 denyRemoteAddress 属性,则优先检查 denyRemoteAddress 属性,如果在符合规则,则拒绝访问。 |
| denyRemoteAddress | 表示拒绝访问的 IP 地址,多个 IP 地址以逗号分隔,可以正则表达式的使用通配符,符合该规则的 IP 地址会被拒绝访问。该属性优先级比 allowRemoteAddress 高,即如果一个 IP 地址同时符合在 denyRemoteAddress 和 allowRemoteAddress 属性的规则,则被拒绝。 |
| allowRemoteHost | 表示允许访问的域名地址,多个域名地址以逗号分隔,可以正则表达式的使用通配符。只有符合规则的域名地址才能访问。 |
| denyRemoteHost | 表示拒绝访问的域名地址,多个域名地址以逗号分隔,可以正则表达式的使用通配符。符合规则的域名地址会被拒绝访问。该属性优先级比 allowRemoteHost 高。 |
| allowLinking | 表示是否允许使用符合连接,默认为 false。开启后,则该主机下的所有应用默认都使用该参数值,也可以修改应用中的 apusic-web.xml 进行单独修改。 |
可以通过管理控制台进行属性的增加和修改:

# 虚拟主机配置
- 添加虚拟主机: 配置 -> server-config -> 虚拟服务器 -> 新建。

- 填写虚拟服务器信息,如虚拟主机地址,选择网络监听器,选择虚拟主机配置的应用。

- 然后在浏览器客户端所在的机器上,修改 hosts 文件,添加虚拟主机与 AAS 的 IP 地址对应 172.20.129.12 lgr.apusic.com。

然后通过虚拟主机访问应用
http://lgr.apusic.com:6888/testSession/也可以在应用程序界面给应用分配虚拟主机。


# 节点类型以及节点和实例的说明
- ssh 类型的节点。
创建 SSH 类型节点的前提是节点所在机器需要与 DAS 所在集群能够通过 SSH 通讯。新建该类型的节点,可以从 DAS 拷贝 AAS 安装文件到节点的"安装目录"下进行安装。


# 如何开启访问日志
路径配置 -> xxx-config -> HTTP 服务,xxx-config 为配置的名称,如 server-config,勾选上"访问日志记录"后保存,在 logs 目录下会生产一个 assess 目录,里面存放访问日志文件。
开启访问日志后需要重启才能生成访问日志。

# sql 语句执行不了
使用人大金仓 V8 的 JDBC 连接池和驱动,在 JDBC 资源界面执行 sql 语句执行不了。

原因分析: JDBC 连接池驱动名称和 url 写错了,人大金仓 V8 驱动名称需要写成**"com.kingbase.Driver",url 需要以"jdbc:kingbase8:"**开头。

# 隐藏指定的 HTTP Header
HTTP Header 中的 Server 默认不开启,即不发送到客户端,如果需要发送,则要开启 JVM 参数 apusic.http.header.server.enabled=true 也可以通过 JVM 参数 product.name 来定义 server 头的内容。
HTTP Header 中的 Powered-By 默认不开启,即不发送到客户端,如果需要发送,则要开启 JVM 参数 apusic.http.header.x-Powered-By.enabled=true, JSP 生成的文件如果需要加入 Powered-By,则需要修改 default-web.xml 中 JSP Servlet 的 xpoweredBy 属性为 true。
# 通过系统参数设置实例启动(后台执行任务)超时时间
增加 JVM 参数: -Dwait.for.das.time.ms=12000000
# 自定义修改默认三个管理员用户的用户名
解决方法:
修改安装包中 ApusicAS/aas/domains/mydomain/config/admin-keyfile 文件里面的用户名,然后启动系统即可。

# 如何开启 gzip
问题: 用 AAS V10 进行性能测试时,发现带宽被占满了,原因可能是没有开启 gzip。
解决方法:
配置 -> server-config -> 网络配置 -> 网络监听器 -> http-listener-1 -> HTTP 页签, 设置压缩为开启。

# 如果多个 AAS 安装在同一台机器上,需要注意以下端口,避免冲突
<system-property name="JMS_PROVIDER_PORT" value="6876"></system-property>
<iiop-listener address="0.0.0.0" port="6837" lazy-init="true" id="orb-listener-1"></iiop-listener>
<iiop-listener address="0.0.0.0" port="6838" id="SSL" security-enabled="true">
<iiop-listener address="0.0.0.0" port="6839" id="SSL_MUTUALAUTH" security-enabled="true">
<jmx-connector address="0.0.0.0" port="6886" name="system" auth-realm-name="admin-realm">
<jvm-options>-Dosgi.shell.telnet.port=6866</jvm-options>
<network-listener protocol="http-listener-1" port="6888" name="http-listener-1" thread-pool="http-thread-pool" transport="tcp"></network-listener>
<network-listener protocol="http-listener-2" port="6887" name="http-listener-2" thread-pool="http-thread-pool" transport="tcp"></network-listener>
<network-listener protocol="pu-protocol" port="6848" name="admin-listener" thread-pool="admin-thread-pool" transport="tcp"></network-listener>
# 负载均衡器状态为已停止
在负载均衡器已被其他 AAS 管理或者是启动状态时,再次添加该负载均衡器后负载均衡器状态为【已停止】,此时需要点击【重新启动】才能启动负载均衡器。

# 集群分配 apache 后,通过 apache 访问,出现 503 的错误

mod_jk 日志信息如下:

原因是集群没有配置 jvmroute,如果集群配置了 jvmroute 后再访问,还是同样的错,是浏览器缓存问题,清掉缓存重新访问就能访问成功。
# 集群使用 GMS 多播,启动集群报错
集群使用 GMS 多播,部署应用并启用可用性,启动集群报错 Caused by: java.net.SocketException: 没有那个设备。

解决方法:
给集群的多播地址指定固定的网卡。
执行命令如:
route add -host 228.9.186.253 enp5s0f3
228.9.186.253 为集群多播地址
enp5s0f3 为网卡名称使用 IP add 查看系统网卡。
注意: 为了防止这种情况发生,在新建集群之前就将所有的多播端口绑定到某个网卡。 ip route add 224.0.0.0/4 dev enp5s0f1 给所有的多播地址绑定网卡 ip route delete 224.0.0.0/4 --删除路由 ip route get 228.9.186.253 查看集群多播地址路由到哪个网卡

# 集群的复制功能使用的 GMS(组管理服务)
GMS 用于内存中会话复制,事务服务和计时器服务功能。 可以指定 GMS 使用以下协议和传输组合之一来广播消息:
- 用户数据报协议(UDP)多播(默认使用该方式)。
- 无多播的传输控制协议(TCP)。
- 多播形式

- TCP 配置
- 去掉集群多播设置。

2. DAS 中创建 GMS_LISTENER_PORT-tcpcluster 属性,并重启。

3. 给集群创建属性 GMS_DISCOVERY_URI_LIST,并赋值 `tcp':'//10.152.23.224':'9090,tcp':'//10.152.23.224':'9091,tcp':'//10.152.23.224':'9092 mycluster`

4. 给每个实例添加 GMS_LISTENER_PORT-mycluster。


5. 重启 DAS 和集群。
# 查看版本号
启动 AAS 后执行./asadmin version
# 使用 jconsole 连接 AAS
- 关闭 jmx 的安全性。
方式一: 修改 domain.xml,对应实例配置如 server-config 下的 jmx-connector,修改参数为 security-enabled="false"。
注意: 通过文件修改需要重启 AAS。

方式二: 在管控,server-config -> 管理服务 -> JMX 连接器,去掉勾选"安全性"。

- 设置 JMX 连接地址,默认为 0.0.0.0,可能会获取域名,如果远程连接,最好将该地址设置为 AAS 服务器所在地址的具体 IP。
方式一: 修改配置文件 domain.xml 修改 jmx-connector 中的 address 为实际 IP 地址。
注意: 通过文件修改需要重启 AAS。

方式二: 直接在管控上修改, server-config -> 管理服务 -> JMX 连接器,修改"地址"为具体的 IP 地址。

- 使用 jconsole 连接。
步骤一: 获取 JMXserviceURL。
启动时日志里面会打印 JMXserviceURL。

或者管控上能查看到。

步骤二: 打开 jconsole,选择远程连接,输入地址和用户名/口令,用户名和口令为登录管理的管理员用户名密码。

步骤三: 登录后点击"以不安全的方式连接"。

# 在远程节点上建实例,出现通讯问题,报错 DAS hostname 识别不了

解决方法 1:
添加jvm参数 -Dapusic.admin.useIp.enabled=true,【集群间通过ip通讯】,如果想直接设置ip,再多一个jvm参数指定DAS的ip 比如 -Dapusic.admin.useIp.ip=172.20.140.17。重启实例。
解决方法 2:
修改 DAS 的的网络监听端口的 admin-listener。
路径为:配置 -> server-config -> 网络监听程序 -> admin-listener,修改地址由“0.0.0.0”为 DAS 实际 ip 地址。
解决方法 3:
在 DAS 的服务器上添加远程节点服务器的域名,即在 hosts 上添加远程节点服务器的域名。
如:DAS 在 172.20.140.21;远程节点在 172.20.140.43,域名为 myhost;需要在 172.20.140.21 的 hosts 上添加 172.20.140.43 myhost。



问题延伸:
本地实例起不来, 修改了 admin-listener 也没有效果。
解决方法:
需要设置环境变量 /etc/bashrc AS_ADMIN_HOST=172.20.10.3,然后重启。
报错信息:
Could not contact the domain administration server running at localhost:6848. This could be because a firewall is blocking the connection back to the domain administration server or because the domain administration server host is known by a different name on the instance host SeeyonAPP. To change the hostname that the domain administration server uses to identify itself please update the domain administration server admin HTTP listener address.
或: 通过配置 -Dapusic.adminListenerHost.used=true 设置本地实例同样使用 adminListener 监听地址访问 das。
注意: 如果希望本地实例使用不同于 adminListener 监听地址的 IP 访问 das,则需要在/etc/profile 里编写环境变量; 如 AS_ADMIN_HOST=172.20.140.17(本地实例访问 DAS 的 IP) 然后重启系统)。
# 无法启动本地的实例(包括集群中的实例和独立实例)
修改 server-config 中的 admin-listener 属性"地址"后,无法启动本地的实例(包括集群中的实例和独立实例)。
解决方法:
1.配置 -> server-config -> HTTP 服务 -> HTTP 监听程序 -> admin-listener,将属性"地址"改为 0.0.0.0。
或2.通过配置 -Dapusic.adminListenerHost.used=true 设置本地实例同样使用adminListener监听地址访问das

# 远程或本地实例启动失败 或者 执行命令出错报 ...server host is known by a different name on ... 等信息要求在本地执行命令的问题
一般是因为实例与DAS通讯有问题,默认是通过域名进行通讯,如果实例不能解析DAS的域名,则出现异常。
解决方式:
1.加jvm参数 -Dcom.apusic.aas.hostName=管控IP
或2.实例机器上hosts文件添加DAS域名映射
# 修改 adminListener 的端口或者 host 后命令行无法使用,出现 Verify the server is available
解决方法:
改了 adminListener host 或者端口,asadmin 这个脚本无法同步,需要手动改/etc/profile,在/etc/profile 配置 AS_ADMIN_PORT 环境变量。
# 提示端口 6848 被占用: There is a process already using the admin port 6848
出现这个提示但是实际上并没有占用该端口: There is a process already using the admin port 6848。
解决方法:
在 hosts 文件里面设置 hostname,并且保证能够 ping 通。
# 集群部署应用程序无法访问
解决方法:
部署应用程序时,将属性"可用性"取消勾选。
# 避免过多的对象存储在内存中,出现内存占用过大问题
AAS V10 事务 Timeout Timer 的内存泄漏问题需要在 domains.xml 中添加 purge-cancelled-transactions-after 属性,含义为 timer 的队列中已取消的任务数达到这个值,就会清除队列中的所有过期任务。默认值是 0,不会清除过期任务,会引起内存泄漏。
<transaction-service tx-log-dir="${com.apusic.aas.instanceRoot}/logs">
<property name="purge-cancelled-transactions-after" value="10000">/property>
</transaction-service>
2
3
# 找不到 java 或 jar 命令
创建或启动远程节点,提示找不到 java 或 jar 命令时,需要查看远程节点是否安装了 JDK;如果安装了 JDK,需要检查 JDK 安装路径;将 JDK 环境变量配置在**~/.bashrc** 文件上;或创建 Java 或 jar 命令软连接。
出现如下报错,在远程节点服务器创建 java 软连接:
ln -s $JAVA_HOME/bin/java /usr/bin/java

出现如下报错,在远程节点服务器创建 jar 软连接:
ln -s /opt/java/jdk1.8.0_212/bin/jar /usr/bin/jar
/opt/java/jdk1.8.0_212 是 JDK 安装路径。

# 出现无法使用 SSL 问题
通常是 Java 加密套件强度限制引起的 SSL handshake_failure,只需要:
- 修改${JAVA_HOME}/jre/lib/security/java.security 文件,取消 crypto.policy=unlimited 的注释。
- 删除之前的 Java 软连接:
rm -rf /usr/bin/java。 - 重现创建 Java 软连接:
ln -s ${JAVA_HOME}/bin/java /usr/bin/java。
注意: 如果远程节点断网或者连接不上也会提示 SSL handshake 出现问题。
问题解决延伸:
在 openJDK1.8.0_242 环境下发现,单纯执行以上步骤不能解决问题,需要:
- 停止所有 Java 进程。
- 修改${JAVA_HOME}/jre/lib/security/java.security 文件, 将 security.useSystemPropertiesFile 改为 false,即:
security.useSystemPropertiesFile=false。 - 修改${JAVA_HOME}/jre/lib/security/java.security 文件, 将 SSLv3 去掉。
#jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, jdk.tls.disabledAlgorithms=RC4, DES, MD5withRSA, DH keySize < 1024,1
2- 保存 java.security 文件。
在 jdk1.8.0_291 以上会出现 javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake,需要:
- 停止所有 Java 进程。
- 修改${JAVA_HOME}/jre/lib/security/java.security 文件, 将
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves1
2
3中的 TLSv1, TLSv1.1,删除。
报错截图如下:




# java.lang.NoSuchFieldError: nullSession 问题
使用 JDK_1.8.0_251 或以上版本,可能会出现 java.lang.NoSuchFieldError:nullSession 问题。
修改方法: 将${APUSIC_HOME}/aas/modules/endorsed/下的 grizzly-npn-bootstrap.jar 中的 sun 目录删除,重新启动 AS 即可。
报错截图:

修改路径截图:

# stop-domain 无效,提示"xxx server not running"问题
OpenJDK_1.8.0_252 或以上出现 stop-domain 无效,提示"xxx server not running"问题。
原因: 在于 252 版本中 JDK 的安全配置文件 jre/lib/security/java.security 增加了属性 security.useSystemPropertiesFile=true,这个属性会导致 Java 的安全模块会去找系统的安全配置文件: /etc/crypto-policies/back-ends/java.config(这个位置是 JDK 代码写死的),有些软件会创建这个文件,比如: crypto-policies-20190807-1.git9b1477b.el8.noarch(这个软件包有可能是安装 openssl 之类的软件安装的)。在这个系统安全配置文件中如果禁用了 TLSV1 就会导致客户端(执行 stop-domain 的时候也是往本地服务器上发 https 请求)没有可用的 tls 协议版本(JDK 中默认的 tls 就是 TLSV1)。
解决方法:
修改 jre/lib/security/java.security 文件,将 security.useSystemPropertiesFile 置为 false。
修改系统安全配置文件,将 TLSV1 从禁用列表中删除,或者干脆删除系统安全配置文件。
问题截图:

解决问题截图:

# AAS-V10 验证是否支持 HTTP2 方法
AAS-V10支持HTTP2,建议在JDK1.8.0_281以上JDK版本环境下操作。验证是否支持 HTTP2,可以使用 curl 工具。执行命令:
curl http://localhost:6888 --http2 -v -I
显示有 Upgrade: h2c 字样代表已升级为 HTTP2。

# IPV6 验证方法
AAS 安装的操作系统的网络适配器开启 IPv6 的支持(如 Windows 的网络配置里)。
在 domain.xml 中把
-Djava.net.preferIPv4Stack=true去掉。系统查看 IPv6 的地址,去掉%及其后面部分,如 fe80::29aa:7867:5c4e:589b%11,则取值 fe80::29aa:7867:5c4e:589b。
启动后访问格式类似 http://[fe80::29aa:7867:5c4e:589b]:6888。
注意: 如果是 Linux,远程访问的话需要交换机支持 IPv6 才可以访问,否则只能通过本地访问。

# 创建实例时出现"Syntax error: "(" unexpected"的解决方法
解决方法:
取消 dash。执行命令:
sudo dpkg-reconfigure dash
在选择项中选 No。
报错截图:

# 部署带有 so 文件的应用时报错
报错信息: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.UnsatisfiedLinkError: hcsystem.Listener.HCServletContextListener.contextInitialized(Ljavax/servlet/ServletContextEvent;)V]]
报错截图:

原因: AAS 对 so 文件的存放路径有要求,需要指定。
解决方法:
在 JVM 选项中添加 -Djava.library.path=so 路径。
# 修改错误页面默认版本信息方法
隐藏: 增加 JVM 参数 apusic.http.errorpage.server.disabled,设置为 true 则不显示。
自定义: 设置 JVM 参数 product.name=XXXX;为空时,效果跟隐藏的参数一致。
新版本添加了一个新的 JVM 参数控制错误页面是否打印异常信息: -Dapusic.http.errorpage.throwable.disabled=false 默认打印,true 则不打印。
# 解决使用 jul-to-slf4j 相关日志输出框架时出现日志循环输出的问题
JVM 参数 com.apusic.log.swallowOutput,当设置为 false 时,不接管控控制控制台输出,解决使用 jul-to-slf4j 相关日志输出框架时出现日志循环输出的问题,默认之为 true。
# AAS V10 支持 PHP 运行的说明(以 Windows 系统下说明,其他系统类似)
准备 php 运行环境,下载地址 (opens new window), 测试例子运行使用的版本是 7.2.34。
解压到一个目录,如 D:\php7,这个目录后续配置会使用到
从该目录下的 php.ini-development 复制一份文件,并改名为 php.ini
修改 php.ini 里面的参数:
;cgi.force_redirect = 1 修改为 cgi.force_redirect = 0,即去掉前面的分号;并把 1 修改为 0
;extension_dir = "ext" 去掉前面的分号;。配置环境变量,把 php.exe 所在的目录加入 PATH 环境变量中,如 D:php7 目录。
运行终端,输入 php -v 测试是否能正确显示版本信息,是则配置完成,如下图所示:
- 建立 testphp 应用,在应用的 web.xml 增加如下的配置:
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>D:php7php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
参数说明:
| 参数 | 说明 |
|---|---|
| cgiPathPrefix | 搜索文件的路径,默认搜索地址为 webAppRootDir + File.separator + cgiPathPrefix |
| executable | 可执行程序的文件路径 |
| debug | 设置该 Servlet 日志输出的详细程度,值为 0-10,默认为 0,值越大输出的日志约详细 |
| passShellEnvironment | 是否把系统环境变量内容传输给 CGI 脚本,默认为 false |
| parameterEncoding | 对参数进行编码的字符集,如果没有设置该参数,则默认读取 file.encoding 的值,如果 file.encoding 为空,则为 UTF-8 |
| stderrTimeout | 异常输出的超时时间,单位为毫秒,默认值为 2000 |
| stripRequestURI | 在找资源时需要去掉的前缀,默认值为空,适用于在路径中包含附加标识的场景 |
- 在应用中建立 index.php 文件,内容如:
<?php phpinfo();?>
- 部署 testphp 应用,启动 Apusic 后,在浏览器地址输入地址如:http://localhost:6888/testphp/index.php,则可以显示 php 版本相关信息,表示成功,如下图所示。

# 验证码无法加载问题
问题描述: 登录页面验证码无法加载,后台抛出异常。
java.lang.NullPointerException at sun.awt.FontConfiguration.getVersion(FontConfiguration.java 1264)
原因分析: 有些操作系统(如中标麒麟)使用自带的 JDK,JDK 中缺少 FontConfig 组件,而验证码的 API 用到了 AWT 的东西,所以需要安装 FontConfig 组件。
解决方法:
如果使用的 docker 容器环境,需要在镜像中进行安装
yum install fontconfig,并执行fc-cache --force直接更换一个完整的 JDK。
# 使用 JSF 框架 MyFaces 导致 javax.faces.application.ViewExpiredException
解决方法:
在 apusic-web.xml 中添加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app error-url="">
<class-loader delegate="false"/>
<property name="useMyFaces" value="true"/>
</aas-web-app>
2
3
4
5
6
# 应用程序与 AAS 存在类冲突
解决方法:
- 添加 apusic-web.xml 到 WEB_INF 中,将类加载模式设置成
<class-loader delegate="false"/>,打破双亲类加载机制,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE aas-web-app PUBLIC "-//Apusic.com//DTD Apusic Application Server 10.1 Servlet 3.0//EN" "http://apusic.com/dtds/apusic-web-app_3_0-1.dtd">
<aas-web-app error-url="">
<class-loader delegate="false"/>
</aas-web-app>
2
3
4
5
- 根据代码逻辑,delegate 为 false 时,对 java,javax 开头的内容是不生效的,必须要添加参数 com.apusic.enterprise.overrideablejavaxpackages 再指定。如:
-Dcom.apusic.enterprise.overrideablejavaxpackages=javax.validation,org.apache.taglibs.standard,javax.ws,"javax", "sun","org.xml.sax", "org.w3c.dom","org.apache.taglibs.standard", "com.sun.faces","org.apache.commons.logging"
这些 package 默认情况下,即使设置了 delegate 为 false,也不会优先从应用加载,需要配置上面属性才行。
# 客户通过 cdn 访问静态资源时,静态资源不在应用包里,getRealPath()方法返回 Null,导致异常解决方法
原因: 客户通过 cdn 访问静态资源时,静态资源不在应用包里,getRealPath()方法返回 Null,导致异常,需要令这个方法不返回 null,后续才能读到 cdn 的静态资源。
解决方法:
增加参数 apusic.context.getRealPath.notAllowNull=true 控制 ServletContext 的 getRealPath()方法不返回 Null 的问题,默认为 false。
错误截图:

# 应用程序通用配置位置
应用程序通用配置位于 ${DOMAIN_HOME}/mydomain/config/default-web.xml。
# AAS 访问欢迎页面替换
将${DOMAIN_HOME}/mydomain/ROOT/index.jsp 替换即可。
# 登录过管控台的浏览器需要清空缓存或者使用 https 协议才能正常登录客户应用
原因: 访问客户应用和管控台都是同样的域名,当访问完管控后将会生成一个 secure 为 true(https)的 cookie,然后浏览器将不再接受同域名下的不安全的 cookie,即使上下文路径不一样,只接受 secure 为 true 的 cookie,所以使用 https 协议才能正常登录。
三种不同解决方法:
利用不同的域名访问应用和管控台。(比如在 host 文件添加域名 IP 然后利用 IP:6848 访问管控利用域名:6888 访问应用)。
清空浏览器缓存或使用不同浏览器访问 AAS V10 管控台与应用。
使用 https 协议访问应用。
# AAS V10 部署项目自动扫描项目下的所有文件导致启动慢
解决办法:
在 domain.xml 增加参数过滤不必要扫描的目录,使用","分隔目录,参数格式如下:
<jvm-options>-DAPUSIC_IGNORE_SCAN_DIR_PATTERNS=(.*)?/test-webapp/upload$,(.*)?/test-webapp/upload2$</jvm-options>
# 下载中文文件名的文件时文件名缺失异常
解决方法:
添加 JVM 参数控制字符校验-Dapusic.skipCheckPrintableUsAscii = true 代表不进行非 Ascii 字符过滤。
注意: sp4 版本改成默认为 true,默认跳过过滤。
# 绑定 JNDI 资源时出现序列化异常 java.io.NotSerializableException
解决方法:
增加一个系统属性: 目前的 JNDI 在绑定和 lookup 的时候都会先拷贝对象(使用 Java 的序列化机制拷贝,如果没有实现序列化接口则不拷贝).这里增加一个系统属性: com.apusic.aas.naming.copyObject,当该属性为 false 的时候不进行拷贝。默认为 true。
# 执行命令行 asadmin 不用输入密码设置方法
方法 1. 在启动工具,如bin/asadmin 中添加jvm参数 apusic.command.password.disabled=true 设置关闭命令行密码校验。如下:
exec "$JAVA" -jar -Dapusic.command.password.disabled=true "$AS_INSTALL_LIB/client/aas-appserver-cli.jar" "$@"
方法2. 执行命令./asadmin --host localhost --port 6848 login,输入用户名和密码,生成一个密码文件 /root/.aasclient/pass,以后这台机器执行 asadmin 命名不用输入密码。
方法 3. 使用明文存储密码,储存文档格式为 AS_ADMIN_PASSWORD=[PASSWORD];如文件1.txt中内容为 AS_ADMIN_PASSWORD=Admin1014
再执行命令,如 ./asadmin start-instance instance1 --user admin --passwordfile 1.txt
# 安全扫描时提示SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
该问题一般在2023年以前的AAS版本可能会出现,提示SSL/TLS的瞬时 Diffie-Hellman 公共密钥小于等于1024位。
解决方法1:更换keystore.jks、cacerts.jks。
解决方法2:添加JVM参数,-Djdk.tls.ephemeralDHKeySize=2048。
# 使用JDK17报错
报错信息如下:

解决方法:
添加JVM参数
<jvm-options>[11|]Djdk.util.zip.disableZip64ExtraFieldValidation=true</jvm-options>
# 配置x-forwarded-proto
Tomcat 可以配置Valve节点(RemoteIpValve实现类)实现客户端通过负载均衡器后获取客户端ip地址为真实客户端ip地址。AASV10也参照Tomcat 实现获取客户端真实ip地址。
AASV10创建socket监听端口后,Connector下的所有service都是共享的(同Tomcat一样),故添加的Valve对于多个端口都会生效。
- NetworkListeners

- WebContainer
com.sun.enterprise.web.WebContainer#postConstruct 方法增加创建Valve对象增加至pipeline:

- RemoteIpValue
新增RemoteIpValve类并抽取部分Tomcat代码实现,由于AASV10只有Tomcat部分功能,故对于完整的Tomcat RemoteIpValve配置只支持核心的配置参数valve-class-name、remote-ip-header。配置在AASV10配置文件 domain.xml的network-listeners节点:

valve-class-name: 配置为org.apache.catalina.valves.RemoteIpValve。
remote-ip-header: 默认为X-Forwarded-For,如果不是该参数需要配置。
配置示例如下:

- Nginx配置
Nginx 配置如下:


# 生成密码字符串工具
应用服务器的密码加密储存,如果想要通过直接修改文件方式更新密码,需要借助code-jar-with-dependencies.jar 生成对应的用户密码字符串。
执行以下命令:
java -jar code-jar-with-dependencies.jar admin admin123 sysadmin PRIVILEGE
参数含义为:
用户名 用户名密码 角色 类型(PRIVILEGE为默认类型即是默认三个用户(admin,secure,audit) 其它新增的用户为NORMAL)
获得字符串
admin;{SSHA256}dhOKpSrk2Dc6k5F+gTMBrq0xBuAVtUOtTbIiPcdT7Rv3cacwRB+O3g==;sysadmin;PRIVILEGE
将字符串替换admin-keyfile中对应的字符串,启动AAS即可。
# 创建节点时报错com.jcraft.jsch.JSchException: Auth fail
创建SSH节点时显示如下报错:
使用 SSH不能连接到主机172.20.140.38 : com.jcraft.jsch.JSchException: Auth fail: Auth fail: host=172.20.140.38 port=22 user=test password=<concealed> keyFile=/root/.ssh/id_rsa keyPassPhrase=null authType=null knownHostFile=/root/.ssh/known_hosts
解决方法:
在管控服务器和远程服务器上执行以下命令:
ssh-keygen -m PEM -t rsa -b 2048
# 关闭JMX懒加载启动
默认的机制是第一次通过密码连接jmx才会进行jmx模块启动(JMXConnector connector = JMXConnectorFactory.connect(url, environment);)【懒加载】;如果客户希望通过不需要密码的本地连接的方式获取监控数据(ManagementFactory.getPlatformMBeanServer();),那么可以添加 JVM参数
-Dcom.apusic.jmx.auto.start=true 关闭jmx懒加载启动。
# 文件压缩后显示乱码解决方法
在default-web.xml中关闭压缩静态资源:
<init-param>
<param-name>useCompression</param-name>
<param-value>false</param-value>
</init-param>
2
3
4
# 强制压缩配置方法
强制压缩功能,不管是否传了支持压缩的头信息过来,都进行压缩,用于性能测试场景。可通过web.xml中的<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>中增加以下内容:
<init-param>
<param-name>apusic.http.force.compression</param-name>
<param-value>true</param-value>
</init-param>
2
3
4
