欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

金蝶容器运维指南

程序员文章站 2022-04-25 15:15:52
...

金蝶容器介绍

​ 在进行28所项目的时候,由于项目国产化的需要,因此AI服务器在开发的过程中必须使用Tomcat、Jetty、Undertow等容器的国产化替代产品,因为国家的政策法规已经将信息安全问题上升到国家的高度,在项目开发过程中使用的产品必须是自主可控、而且源代码安全的。

​ 金蝶Apusic应用服务器 AAS是应用系统的运行平台,为应用系统提供便捷开发、灵活部署、可靠运行、高效管理及快速集成等关键支撑。支持Java企业级规范和主流应用框架,广泛应用于电子政务和企业核心关键应用。

​ 28所项目、AI服务器、以及未来的大船项目中,均会采用相同的国产化形态软件,AAS+国产化数据库的应用结构来进行开发,因此结合28所项目、所里AI服务器项目的金蝶容器使用实践,总结以往的经验,温故而知新。把相关金蝶容器的使用经验记录如下。

AAS架构

金蝶容器运维指南

技术白皮书

金蝶容器技术白皮书

应用场景

​ 电子政务系统、电子商务系统、企业CRM系统等JavaEE应用都需要使用JavaEE应用服务器。

安装包目录结构

目录结构

较为重要的由两个文件夹,一个是根目录下的文件夹,只要能够较为熟悉的了解两层目录中文件夹和文件的基本含义,即可对容器有初步的理解并且使用。

Apusic应用目录结构

​ 在Apusic应用目录结构中较为重要的文件夹为domains文件夹,该文件中包含用户通过bin/config创建的自定义域。我们可以把自己制作的war包或者文件见部署在domains**self-defined-domain**中。

应用程序部署在APUSIC_HOME\domains\self-defined-domain\applications\目录下,如果不创建自定义域则放置在APUSIC_HOME\domains\mydomain\applications\

金蝶容器运维指南

应用目录结构中的具体作用如下表所示

目录 内容
adminconsole Apusic管理控制台运行所需文件,如果使用的安装包包含adminconsole,则安装完后adminconsole在此目录中
bin 一些命令行脚本,通常,您需要修改其中setenv.cmd(setenv)文件,将其中JAVA_HOME设置为正确的JVM所在目录
classes 服务器运行时,会将此目录置为系统CLASSPATH最前端,默认情况下,此目录为空
common 服务器运行时,会将此目录中的jar包(含zip)置于系统CLASSPATH中,位于sp目录中的jar包之后,lib目录中的jar包之前
lib 服务器运行时,会将此目录中的jar包(含zip)置于系统CLASSPATH中,位于common目录中的jar包之后
sp 补丁程序所在位置,服务器运行时,会将此目录中的jar包(含zip)置于系统CLASSPATH中,位于classes目录之后,common目录中的jar包之前; 默认情况下,此目录为空
domains Apusic应用服务器的域,见[下表](file:///C:/Users/宋姗姗/Desktop/宋姗姗/AAS-V9.0_2019-1-7/readme.html#table2)。
src 一些第三方jar包的源码包
templates 创建domain时所用到的模板
tools 包含管控api文档,以及工具脚本和readme.txt说明文档

注意:在tools文件中包含了许多的非交互式脚本,用来简化AAS容器的全局配置。

tools非交互式脚本介绍

域目录结构

金蝶容器运维指南

​ Apusic应用服务器的域信息保存在APUSIC_HOME/domains目录下,每个域的信息保存在同名的子目录中,安装服务器后domains目录下包含预定义的mydomain域。mydomain中的子目录及子目录描述如下表:

目录 内容
applications 凡放到此文件夹中的ear、war、rar等符合J2EE规范的文件或文件夹,都会被自动部署到Apusic应用服务器上
bin 一些命令行脚本,通常,您需要运行其中startapusic.cmd(startapusic)脚本来启动Apusic应用服务器
config 服务器中的数据库连接池、web服务器、JMS服务、日志服务等相关配置文件、负载均衡示例配置文件等
deploy 服务器从未运行过时,此目录不存在,当服务器启动以后,会自动创建此文件夹。此文件夹中放置了应用系统运行时所产生的一些中间过程文件,譬如,由jsp文件生成的servlet等
lib 允许用户在这里放置一些公用的jar包(譬如数据库JDBC Driver等),此文件夹中的jar包(含zip)会自动置于系统CLASSPATH的尾部
logs 服务器日志文件
store 系统用户存储文件,JMS消息存储文件等

​ APUSIC_HOME/domains目录下还包含预定义的samples域,samples域预部署了若干个示例应用,用以演示JavaEE5的最新技术。samples域的目录结构与mydomain基本一致,但多了一个src目录,存放示例应用的源代码及构建脚本。

证书

​ 由于AAS的运行是付费的,因此必须从金蝶获取符合时间的证书,当前可用的证书如下:

<?xml version="1.0" encoding="UTF-8"?>
<license

/>

把该证书置于根目录下即可

\AAS-V9.0_2019-1-7

若证书时间过期,则在运行时会弹出如下的问题:

金蝶容器运维指南

Linux管理

​ 金蝶容器与Tomcat容器一样,zip安装包支持Windos和Linux环境下运行。在启动运行程序时,在mydomains\applications文件夹中

在上述的行文以及下述的行文中,并不创建自定义域,而仅仅使用预先安装的mydomain域来演示程序。

使用如下的脚本来控制应用程序的启停。

金蝶容器运维指南

由于Windows和Linux端应用程序的管理别无二致,Linux端金蝶的使用是日后工作的重点,因此如下使用Linux端来演示应用程序的启停管理

配置应用端口

我们可以采用如下的方式创建一个新的域,较为重要步骤是要确定域监听的的端口和SSL端口

创建域使用config脚本,该脚本位于APUSIC_HOME\config,其他以默认方式执行即可。该行命令执行完毕,则可以在APUSIC_HOME\domains目录下看见自定义的域。

windos环境创建域

C:\Users\AAS-V9.0_2019-1-7\bin>config.cmd
Using APUSIC_ENDORSED_DIRS: C:\Users\AAS-V9.0_2019-1-7\lib\endorsed

-----------------------------------------------------------
|                欢迎进入Apusic域配置向导                 |
|           版本 :Apusic Application Server 9.0           |
|                                                         |
|                深圳市金蝶中间件有限公司                 |
|                        版权所有                         |
-----------------------------------------------------------

选择任务 ...
------------

您希望执行下面的哪一个任务?

    1- 创建一个新的Apusic域
    2- 删除一个现有的Apusic域
    3- 构建一个新的Apusic域模板

请选择相应的数字: 1


欢迎进入域创建向导中心
----------------------

该向导将会帮助您创建一个全新的Apusic域,同时也会在您的计算机上创建一些相关文件和需要的目录.<ENTER>键继续:

选择域来源 ...
--------------

选择将要创建的域的来源.您能够指定一个域模板来创建域,也可以不使用域模板创建域.


  ->1- 选择系统默认模板
    2- 选择自定义模板

请选择相应的数字,或按<ENTER>键接受默认选择:1

选择系统默认模板 ...
--------------------

标准模板与集群模板的区别是: 基于集群模板创建的domain拥有集群服务。


  ->1- 标准
    2- 集群

请选择相应的数字,或按<ENTER>键接受默认选择:1

域配置 ...
----------

您想在哪一位置安装该域?
默认位置 = C:\Users\AAS-V9.0_2019-1-7\domains

请输入一个绝对路径,或按<ENTER>键接受默认位置

    安装路径:

请为该域输入一个有效的名称,域名称是该域的有效标识.

已存在的域名称:
    1- mydomain

    域名称: sqh

服务器配置 ...
--------------

设置服务器监听端口
默认端口 = 6888

请输入您的服务器监听端口,<ENTER>键接受默认选择

    监听端口 : 8888


设置服务器SSL安全监听端口
默认端口 = 6889

请输入您的服务器SSL安全监听端口,<ENTER>键接受默认选择
    SSL监听端口 : 7888

高级选项配置 ...
----------------

这里将会帮助您继续进行数据源配置,J2EE应用程序配置.
默认选择 = 否

请选择,或按<ENTER>键接受默认选择

是否希望配置一些高级选项? (Y|N):

请稍后...
---------

..................................................................................................................................................................................

您所选择的任务成功执行完毕.

Linux创建域

aaa@qq.com:/usr/local/aas/bin# ./config

-----------------------------------------------------------
|      Welcome to Apusic Domain Configuration Wizard      |
|         Version :Apusic Application Server 9.0          |
|                                                         |
|     Copyright 2006 ShenZhen Kingdee Middleware Inc.     |
|                   All rights reserved                   |
-----------------------------------------------------------

Select Task ...
---------------

Which task would you like to perform?

    1- Create a new Apusic Domain 创建一个新域
    2- Remove a existing Apusic Domain
    3- Build a new Apusic Domain Template

CHOOSE TASK BY NUMBER: 1


WELCOME TO CREATE DOMAIN WIZARD 欢迎来到创建域向导
-------------------------------

This wizard will help you to create a new domain, and it will create some files and directories on your computer.

PRESS <ENTER> TO CONTINUE:

Select Apusic Domain Source ...  选择Apusic域来源
-------------------------------

Select the source for which the domain will be created. You can create the domain without domain template or by selecting an existing Apusic domain template.


  ->1- Select the system default template 选择系统默认模板
    2- Select a custom template

CHOOSE DOMAIN SOURCE BY NUMBER, OR PRESS <ENTER> TO ACCEPT THE DEFAULT:1

Select The System Default Template ...
--------------------------------------

The difference between Standard Edition template and Cluster Edition template is that Cluster Edition is a cluster enable domain template.


  ->1- Standard Template  标准模板
    2- Cluster Template

CHOOSE DEFAULT TEMPLATE BY NUMBER, OR PRESS <ENTER> TO ACCEPT THE DEFAULT:1

Apusic Domain Configuration ...
-------------------------------

Where would you like to install the domain?
Defalut location = /usr/local/aas/domains

ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT

    Domain Location: 

Enter the name for the domain,the name is a valid identity of the domain.

Domain names already exists:
    1- mydomain
    2- samples

    Domain Name: screenshot

Apusic Server Configuration ...
-------------------------------

Set up the server listening port  设置该域监听端口  HTTP
 default port = 6888  Apusic默认使用6888

Please enter your server listening port,PRESS <ENTER> TO ACCEPT THE DEFAULT

    Listen Port    : 4444   


Set up the server security listening port   HTTPS端口
 default port = 6889

Please enter your server security listening port,PRESS <ENTER> TO ACCEPT THE DEFAULT
    SSL Listen Port : 5555

Apusic Advanced Options Configuration ...
-----------------------------------------

Here will help you to to continue the data source configuration, J2EE application configuration.
Default value = NO

ENTER YOUR CHOOSE, OR PRESS <ENTER> TO ACCEPT THE DEFAULT

Do you want to define advanced options? (Y|N): n

Please wait...
--------------

...............

The task has been finished successfully.

apusic.conf

创建域之后,可以通过修改配置文件APUSIC_HOME/domains/mydomain/config/ apusic.conf来修改端口号
在配置文件中apusic.conf中,关注参数PortSecurePortSSLEnabled

 <SERVICE
        CLASS="com.apusic.net.Muxer"
        >
        <ATTRIBUTE NAME="Port" VALUE="8080"/>
        <ATTRIBUTE NAME="Backlog" VALUE="1024"/>
        <ATTRIBUTE NAME="Timeout" VALUE="30"/>
        <ATTRIBUTE NAME="LookAheadTimeout" VALUE="30"/>
        <ATTRIBUTE NAME="MaxWaitingClients" VALUE="200"/>
        <ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/>
        <ATTRIBUTE NAME="SSLEnabled" VALUE="False"/>
        <ATTRIBUTE NAME="SecurePort" VALUE="6889"/>
        <ATTRIBUTE NAME="KeyStore" VALUE="config/sslserver"/>
        <ATTRIBUTE NAME="KeyStorePassword" VALUE="keypass"/>
        <ATTRIBUTE NAME="KeyPassword" VALUE="keypass"/>
    </SERVICE>

部署应用

​ 再金蝶容器中部署应用时,有两种部署方式。一种是通过war包的方式,另外一种则是通过文件夹的方式;在智慧营区项目实践过程中,我们采用war包的方式来部署应用。通过使用

mvn package

可以把项目的打包过后的目录拷贝至APUSIC_HOME\mydomain\applications目录下。

​ 具体拷贝内容如下图所示:

金蝶容器运维指南

war包部署

​ 与Tomcat容器一样,金蝶容器可以使用war包的方式进行部署,当在运行时会产生如下几种效果:

deploy文件夹

​ Apusic容器会把拷贝进入applications目录的war包解压到domains\mydomain\deploy,并且在该目录下可以看到如下的内容,可以通过cmd的tree命令查看目录层级

C:\Users\AAS-V9.0_2019-1-7\domains\mydomain\deploy\rest-0.0.1-SNAPSHOT>tree
卷 OS 的文件夹 PATH 列表
卷***为 68EB-2279
C:.
├─.extends
│  ├─rest-0.0.1-SNAPSHOT
├─.system
│ 
└─rest-0.0.1-SNAPSHOT
    └─tmpfiles
        ├─docroot
        │  ├─META-INF
        │  │  └─maven
        │  │      └─com.example
        │  │          └─rest
        │  └─WEB-INF
        │      ├─classes
        │      │  └─com
        │      │      └─example
        │      │          └─rest
        │      │              └─controller
        │      └─lib
        └─jsp

由此,可以分析出程序会解析war包,并把相关的资源拷贝到deploy目录。

日志产生

程序产生的日志位于applications同级目录下的logs目录domains\mydomain\logs

在Linux环境下,可以采用

tail -f ..\domains\mydomain\logs\apusic.log.0

来动态产看程序所产生的日志。

浏览器访问

点击跳转

访问请求验证

package com.example.rest.controller;

import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * 添加问候controller
 *
 * @author songquanheng
 * @Time: 2020/2/19-17:58
 */
@RestController
public class HelloController {
    Logger logger = LoggerFactory.getLogger(this.getClass());
    @GetMapping("/hello")
    public String hello() {
        logger.info("Enter hello");
        JSONObject result = new JSONObject();
        result.fluentPut("code", 0)
                .fluentPut("msg", "success");
        logger.info("Leave hello");
        return result.toJSONString();
    }
}

则在程序正常运行之后,若想要访问hello接口,则应采用如下的方式:

http://hostname:port/war包名/@RequestMapping.value

上述URL中变化的位置为war包名的有无,若指定项目生成的war包为ROOT,则war包名为空采用如下的URL形式即可

http://hostname:port/@RequestMapping.value

文件夹部署

文件夹部署与war包部署很相似,没什么区别。不再赘述

金蝶容器运维指南

应用管理

​ 无论是在Linux还是windows环境中,灵活的使用进程号pid和端口号是控制应用的灵活方式。

如下的启动、终止脚本位于APUSIC_HOME\domains\mydomain\bin目录下。Windows环境下使用.cmd结尾的脚本,Linux使用另外的启动和停止脚本。如下的陈述以Linux为主

启动应用

./mydomain/bin/startapusic

上述命令会在当前终端启动该应用程序,若当前终端关闭,则该应用程序终止,显然这不是希望的方式。

可以使用nohup命令来把当前进程放进后台,具体操作如下:

    [Unauthorized System] aaa@qq.com:/usr/local/yyzc/52-project/AAS-V9.0_2019-1-7/domains/mydomain/applications# nohup ../bin/startapusic 1> ../bin/nohup.out 2>&1 &
    [1] 28330
    
    [Note] System unauthorized, Please contact the system supplier.

此时,会在…/bin目录下生成nohup.out,其中的内容为platform项目生成的日志。

使用数据重定向技术把相关的日志打入bin目录下的nohup.out文件。

注意:不要把日志文件打入applications目录下,因为Apusic默认会把该文件下的文件看作一个应用程序对待。

数据重定向可以将stanardout output和standard error output分别传送到其他的文件或设备区,分别使用如下的特殊字符。
金蝶容器运维指南

终止应用

[Unauthorized System] aaa@qq.com:/usr/local/yyzc/52-project/AAS-V9.0_2019-1-7/domains/mydomain/applications# ../bin/stopapusic

​ 需要注意的是,在金蝶容器中执行了上述的停止命令,虽然执行成功了,但程序其实并未执行成功,此时需要通过杀死进程的方式来解决该问题,可以使用如下的方式来获取pid

获取pid

lsof
lsof  -i:port
netstat
7/domains/mydomain/applications# netstat -ano | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      关闭 (0.00/0/0)

[Note] System unauthorized, Please contact the system supplier.

[Unauthorized System] aaa@qq.com:/usr/local/yyzc/52-project/AAS-V9.0_2019-1-7/domains/mydomain/applications# netstat -anop | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      3745/java        关闭 (0.00/0/0)
jps

jps(Java Virtual Machine Process Status Tool),可以用于

是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程的一些简单情况。

jps命令使用如下所示:

-q:只输出进程 ID
-m:输出传入 main 方法的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数

jps命令在Linux环境和Windows环境下均可使用。

C:\UsersR\AAS-V9.0_2019-1-7\domains\mydomain\deploy>jps -v
21508 Jps -Dapplication.home=C:\Program Files\Java\jdk1.8.0_66 -Xms8m
21736 RemoteMavenServer -Djava.awt.headless=true -Didea.version==2018.1.5 -Xmx768m -Didea.maven.embedder.version=3.3.9 -Dfile.encoding=GBK

1612 Main -Djava.endorsed.dirs=C:\Users\AAS-V9.0_2019-1-7\lib\endorsed -Dcom.apusic.domain.home=C:\Users\AAS-V9.0_2019-1-7\domains\mydomain -Djava.net.preferIPv4Stack=true -Xms512m -Xmx1024m -XX:MaxPermSize=256m -verbose

22428  -Xms128m -Xmx750m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djb.vmOptionsFile=C:\Program Files\JetBrains\IntelliJ IDEA 2018.1.5\bin\idea64.exe.vmoptions -Didea.jre.check=true -Dide.native.launcher=true -Didea.paths.selector=IntelliJIdea2018.1 

终止进程

[Unauthorized System] aaa@qq.com:/usr/local/yyzc/52-project/AAS-V9.0_2019-1-7/domains/mydomain/applications# kill -9 1612

问题解决

跨域问题

跨域问题原因

​ 出于浏览器的同源策略限制。**同源策略(Sameoriginpolicy)**是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

跨域实例

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

当前页面url				被请求页面url					是否跨域	原因
http://www.test.com/	http://www.test.com/index.html	否		同源(协议、域名、端口号相同)
http://www.test.com/	https://www.test.com/index.html	跨域		协议不同(http/https)
http://www.test.com/	http://www.baidu.com/			跨域		主域名不同(test/baidu)
http://www.test.com/	http://blog.test.com/			跨域		子域名不同(www/blog)
http://www.test.com:8080/	http://www.test.com:7001/	跨域		端口号不同(8080/7001

解决步骤

​ 在北京15所保障第二次测试时,由于AI相关的应用程序A在一个金蝶容器中,28所开发的应用程序B在另外一个金蝶容器中。在实际运行时发现,若B想要通过请求获取A中的图片资源时,页面报错,跨域。可以通过如下的配置解决该问题。

  • 修改APUSIC_HOME\domains\mydomain\config\web.xml
<!--  提供跨域支持 -->
    <filter>    
        <filter-name>CORS</filter-name>    
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>    
        <init-param>    
            <param-name>cors.allowOrigin</param-name>   
            <param-value>*</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportedMethods</param-name>   
            <param-value>GET, POST, HEAD, PUT, DELETE</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportedHeaders</param-name>   
            <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.exposedHeaders</param-name>   
            <param-value>Set-Cookie</param-value>   
        </init-param>    
        <init-param>    
            <param-name>cors.supportsCredentials</param-name>   
            <param-value>true</param-value>   
        </init-param>    
    </filter>    
    <filter-mapping>    
        <filter-name>CORS</filter-name>    
        <url-pattern>/*</url-pattern>    
   </filter-mapping>

JNDI配置

概念

java Naming and Directory Interface:java命名和目录接口

​ 主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

一句话说:创建了一个目录,然后将创建的对象存进去,类似于在注册中心注册了一个东西,以后使用的时候,只需要在注册中心也就是目录中根据名字去查找,注册中心也就是目录会返回给你想要的。

​ JNDI提供了应用编程接口(application programming interface,API)和服务提供者接口(service provider interface,SPI)。这一点的真正含义是,要让应用与命名服务或目录服务交互,必须有这个服务的JNDI服务提供者,这正是JNDI SPI发挥作用的地方。服务提供者基本上是一组类,这些类为各种具体的命名和目录服务实现了JNDI接口—很像JDBC驱动为各种具体的数据库系统实现了JDBC接口一样。

​ 这样做的好处:比如更换数据库,只需要修改配置信息,名称不变,因此代码也不会变(也就是平常自己使用都是Class.forName,然后指定驱动类名,每次需要使用的时候都要加载并创建连接,如果更换了数据库,就需要修改代码中的驱动类名;而使用JNDI后,第一次加载数据库后根据配置文件信息创建连接,并将此连接放入目录中,以后不管在哪里使用只需要从目录中获取即可)

​ JNDI中的命名(Naming),就是将Java对象以某个名称的形式绑定(binding)到一个容器环境(Context)中,以后调用容器环境(Context)的查找(lookup)方法又可以查找出某个名称所绑定的Java对象。读者也许会感到奇怪:自己创建一个Java对象,将其绑定到JNDI容器环境中后又查询出来,这有什么意思?在真实的项目应用中,通常是由系统程序或框加程序先将资源对象绑定到JNDI环境中,以后在该系统或框架中运行的模块程序就可以从JNDI环境中查找这些资源对象了。例如,Tomcat服务器在启动时可以创建一个连接到某种数据库系统的数据源(DataSource)对象,并将该数据源(DataSource)对象绑定到JNDI环境中,以后在这个Tomcat服务器中运行的Servlet和JSP程序就可以从JNDI环境中查询出这个数据源(DataSource)对象进行使用,而不用关心数据源(DataSource)对象是如何创建出来的,这种方式极大地增强了系统的可维护性,当数据库系统的连接参数发生变更时,这只是Tomcat系统管理员一个人要关心的事情,而与所有的应用程序开发人员无关。

​ 上述行文的含义就是,我们在金蝶容器中配置数据库连接时,可以把DataSource对象注册进入JDNI命名中,就好像注入到容器中的组件,在使用时,只需要获得该组件的引用即可,而不关注DataSource是如何产生的。

应用场景

  • spring中连接数据库(不再使用Class.forName)

  • tomcat之类的应用服务器上配置的连接池

  • 程序中不是使用Class.forName来获取链接的

  • 而是使用Context lookup从池中获取有用的连接

在28所项目开发过程中,也是通过JDNI来统一数据库的访问。这样当以后需要更改数据库配置时,通过命名服务,代码不需要更改,只需要修改配置即可。

金蝶容器运维指南

Tomcat和金蝶容器AAS都支持这种JDNDI配置。

金蝶容器配置步骤

金蝶容器、SpringBoot整合JNDI来获取数据源的配置步骤如下:

金蝶容器配置
Bean关联

金蝶容器web端

​ 基于浏览器的Web管理控制台,是内置在Apusic应用服务器之上的一个Web应用,能够通过Web管理控制台方便的对Apusic应用服务器进行各种管理配置工作。在访问Web管理控制台之前,首先要确保已经正确的启动了Apusic应用服务器。

按照以下步骤启动远程管理控制台:

  1. 在浏览器中输入以下URL:

http://hostname:port/admin

其中:
hostname 指安装Apusic应用服务器软件的计算机的IP地址或主机名
port 是Apusic应用服务器的http端口、默认为6888

在登陆页面要键入在启动应用时输入的用户名和密码。金蝶容器的初始用户名和密码为

admin:Admin1234

注意:如果是自定义的域,在第一次部署程序时,会让用户输入用户名和密码。浏览器使用用户名和密码来可视化访问该容器。

日志查看

金蝶容器运维指南

应用设置

​ 在28所项目进行的过程中,由于把项目制作成了ROOT.war,因此需要配置应用程序上下文,配置如下:

金蝶容器运维指南

总结

​ 上述行文中,围绕金蝶容器,详细的总结了金蝶容器的目录结构、域创建、应用程序启停、日志查看等细节,并且在行文中把自己在使用金蝶容器过程中遇到的两个问题:跨域问题和JNDI整合进行了总结。详细的梳理了金蝶容器的使用,以期望能对后来使用金蝶容器的开发人员有所帮助。

相关标签: 容器