金蝶容器介绍

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

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

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

AAS架构

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\

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

目录内容
adminconsoleApusic管理控制台运行所需文件,如果使用的安装包包含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包之前; 默认情况下,此目录为空
domainsApusic应用服务器的域,见[下表](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创建域

root@sqh-virtual-machine:/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] root@lccy-os:/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] root@lccy-os:/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] root@lccy-os:/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] root@lccy-os:/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整合进行了总结。详细的梳理了金蝶容器的使用,以期望能对后来使用金蝶容器的开发人员有所帮助。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐