java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录

  • 1、准备工作
    • 1.1 接口调用账户
    • 1.2 下载 金蝶星空云 Java SDK
    • 1.3 Maven项目使用
    • 1.4 调用测试
      • 获取列表查询相关字段
        • 第一种
        • 第二种
        • 第三种
        • 打包注意
  • 最后 还有一个 超级超级超级大的坑
      • 断点测试,金蝶SDK配置是否加载正确
      • Linux改编码测试运行
    • SpringBoot 启动自动创建 金蝶配置文件
      • 第一步,加入依赖
      • 第二步,在 resource 下准备好金蝶源配置文件
      • 第三步,创建一个系统启动任务类
      • 第四步,打包 jar运行测试

必须要吐槽 金蝶的接口文档,简直就是噩梦,文档和示例牛头不对马嘴,示例代码都是错误的

1、准备工作

1.1 接口调用账户

准备工作,金蝶倒是写的很全, 金蝶云星空 OpenApI
这里有一个注意点,就是 kdwebapi.properties 配置

## 账套ID ,在第三方登录授权配置获取
X-KDApi-AcctID=123123123
## APPID ,在第三方登录授权配置获取
X-KDApi-AppID=229492_SYbOQwvH7plexfys4+6MzbUt1q47TNlG12312
## 秘钥 ,在第三方登录授权配置获取
X-KDApi-AppSec=c1cc65ee19dd4be19eb27ec667e123123bf6ed3123123123123
## 调用接口的用户名 ,在第三方登录授权配置获取
X-KDApi-UserName=李杨123123
## 固定 2052
X-KDApi-LCID=2052
## 这个是你的金蝶云星空产品部署的服务器访问地址
X-KDApi-ServerUrl=http://12.19.119.240/k3cloud/

1.2 下载 金蝶星空云 Java SDK

SDK

解压 后导入 Eclipse 或者 Idea, 结构目录:

1.3 Maven项目使用

使用 maven 编译jar

mvn install:install-file -Dfile=k3cloud-webapi-sdk.7.6.1.jar -DgroupId=k3cloud -DartifactId=k3cloud-webapi-sdk -Dversion=7.6.1 -Dpackaging=jar

编译出来的 maven jar包

使用

        <!-- 金蝶k3  jar, 本地maven 打包 --><dependency><groupId>k3cloud</groupId><artifactId>k3cloud-webapi-sdk</artifactId><version>7.6.1</version></dependency>

目录结构

可能会出现的异常
登录会话失效 -> 需要检查配置是否正确
java.net.UnknownHostException: zam.devopen.kingdee.com -> 修改hosts文件
Windows hosts文件路径:C:\Windows\System32\drivers\etc
hosts文件 加入: 金蝶服务器访问ip或者域名(这个地址 和 kdwebapi服务器路径一样,如果有端口 不需要加端口) zam.devopen.kingdee.com

2.19.109.123 zam.devopen.kingdee.com

1.4 调用测试

比如我现在要调用 生产制造-生产订单-订单列表接口, 金蝶 单据查询 就是 列表接口

这里有一个很大的坑就是 FieldKeys 显示字段这个坑,这个字段必填,用于指定返回哪些字段,但是 官网的 单据查询接口文档并没有写有哪些字段可以选择

有三种方式可以大概知道有哪些字段

获取列表查询相关字段

第一种

不知道字段 可以去 保存接口中查看

例如,我现在调用的 是 生产订单列表接口,我不知道选择哪些字段返回,可以去 保存接口当中找

找到 data.Model.FTreeEntity这个对象参数,里面就是 列表当中存在的字段

第二种

** 去 数据字典里面找** 数据字典

第三种

推荐 用这种方式 结合 保存接口 基本上 就可以搞定
还可以去 金蝶直接导出 excel, 里面有列名字段

还有一个注意点,就是 接口返回的数据 必须用对象映射
生产订单 - 订单列表测试
配置

import com.kingdee.bos.webapi.sdk.K3CloudApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** <h2>金蝶 bean配置</h2>* <p>** </p>** @author Evan <1922802352@qq.com>* @since 2022年06月28日 14:34*/
@Configuration
public class KingdeeConfig {@Beanpublic K3CloudApi K3CloudApi(){return new K3CloudApi();}
}

实体类 PrdMo

import lombok.Data;/*** <h2>金蝶生产订单实体类</h2>* <p>** </p>** @author Evan <1922802352@qq.com>* @since 2022年06月28日 14:39*/
@Data
public class PrdMo {/*** 主生产订单ID*/private String FID;/*** 生产订单号*/private String FBillNo;/*** 类别说明ID,单据类型ID*/private String FBillType;/*** 明细订单ID, 一个单据 订单对应多个 订单*/private String FTreeEntity_FEntryId;/*** 明细行号, 同一个 生产订单号 多个 明细订单,按序号区分*/private String FTreeEntity_FEntryId_RowIndex;/*** 物料编码ID*/private String FMaterialId;/*** 物料名称*/private String FMaterialName;/*** 生产数量*/private String FQty;/*** 完成数量*/private String FRptFinishQty;/*** 未完成数量, 生产数量 减去 完成数量*/private String FRemainingQty;/*** 开工日期*/private String FStartDate;/*** 完工日期*/private String FFinishDate;/*** 语言*/private String F_SDFG_BasePyuyan;/*** 规格型号*/private String FSpecification;/*** 是否完工*/private Boolean isSuccess;/*** 创建时间*/private String FCreateDate;}

查询示例

import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.kingdee.bos.webapi.sdk.QueryParam;
import com.mh.jishi.kingdee.entity.PrdMo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;/*** <h2>金蝶生产订单服务</h2>* <p>** </p>** @author Evan <1922802352@qq.com>* @since 2022年06月28日 14:36*/
@Service
@Slf4j
public class KingdeePrdMoService {private final K3CloudApi api;public KingdeePrdMoService(K3CloudApi api) {this.api = api;}/*** 生产订单列表* @param beginDateTime 开始时间 如果为空,则默认 一天, 尽量不取全部数据* @param endDateTime 结束时间, 如果为空 根据开始时间 获取默认*/public Object QUERY_PRD_MOExecuteDetailRpt(String beginDateTime, String endDateTime) {// 表单内码IDString formId = "PRD_MO";HashMap<String, Object> hashMap = new HashMap<>();try {// 需要查询的字段列表LinkedList<String> fieldKeys = new LinkedList<>();fieldKeys.add("FID");fieldKeys.add("FBillNo");fieldKeys.add("FBillType");fieldKeys.add("FTreeEntity_FEntryId");fieldKeys.add("FMaterialId");fieldKeys.add("FMaterialName");fieldKeys.add("FQty");fieldKeys.add("FRptFinishQty");fieldKeys.add("FStartDate");fieldKeys.add("FFinishDate");fieldKeys.add("F_SDFG_BasePyuyan");fieldKeys.add("FSpecification");fieldKeys.add("FCreateDate");// 查询对象QueryParam queryParam = new QueryParam();queryParam.setFormId(formId);queryParam.setFieldKeys(String.join(",", fieldKeys));// 排序QueryParam.set// 筛选条件列表LinkedList<String> queryfilters = new LinkedList<>();// 条件筛选if(StringUtils.isNotBlank(beginDateTime)){queryfilters.add(String.format("FCreateDate >= '%s'", beginDateTime));}if(StringUtils.isNotBlank(endDateTime)){queryfilters.add(String.format("FCreateDate <= '%s'", endDateTime));}if(!CollectionUtils.isEmpty(queryfilters)){String filterStr = String.join("  and  ", queryfilters);log.info("条件筛选输出: 【{}】", filterStr);queryParam.setFilterString(filterStr);}List<PrdMo> queryList = api.executeBillQuery(queryParam, PrdMo.class);int total = queryList.size();hashMap.put("list", queryList);hashMap.put("total", total);} catch (Exception e) {log.error("获取金蝶生产订单异常!");e.printStackTrace();}return hashMap;}
}

保存示例
示例是 修改生产入库单, 一个入库单据下 有两条明细分录,只修改其中一条分录

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.kingdee.bos.webapi.sdk.K3CloudApi;
import org.junit.Test;/*** <h2>金蝶测试2</h2>* <p>** </p>** @author Evan <1922802352@qq.com>* @since 2022年06月24日 15:02*/
@SuppressWarnings("all")
public class TestKingdee2 {private K3CloudApi client = new K3CloudApi();/*** 保存生产入库订单* 这个示例 案例是: 单据下 生产入库单据下 有多个订单,只更新某条订单序列号* FIsNew 是否新增行 要去除, 只更新序列号 需要在 更新字段【NeedUpDateFields】加上FEntity,这样只更新订单内部数据不更新单据信息,IsDeleteEntry 是否删除相同其他分录要设置 false,不然会删除其他的分录* A单据有{*      aa 订单*      bb 订单*      cc 订单* }* 我现在只更新bb订单序列号信息,那么除了 bb 订单序列号有内容 ,其他订单序列号字段不需要填入内容, 请参考 get1方法和get2 */@Testpublic void TEST_SAVE_PRD_INSTOCK() {String formId = "PRD_INSTOCK";// 数据jsonJSONObject json = new JSONObject();// model内容JSONObject model = new JSONObject();/** 单据数据*/// 单据IDmodel.put("FID", 104222221);// 单据编码model.put("FBillNo", "SCRK2202207022222222222222224001");// 单据类型JSONObject FBillTypeJson = new JSONObject();FBillTypeJson.put("FNUMBER", "SCRKD02_SY2S");model.put("FBillType", FBillTypeJson);// 单据创建日期model.put("FDate", "2022-07-04T00:00:00");// 货主JSONObject FOwnerId0Json = new JSONObject();FOwnerId0Json.put("FNUMBER", 100);model.put("FOwnerId0", FOwnerId0Json);// 单据明细订单数据JSONArray FEntityArray = new JSONArray();JSONObject FEntityJson = get1();JSONObject FEntityJson2 = get2();// 将 单据明细订单 放入进 modelFEntityArray.add(FEntityJson);// 复制一份FEntityArray.add(FEntityJson2);// 复制一份结束model.put("FEntity", FEntityArray);// json.put("Model", model);// 是否删除已存在的分录,布尔类型,默认true(非必录),这个一定要设置,不然会删除其他数据json.put("IsDeleteEntry", "false");// 需要更新的字段,数组类型,格式:[key1,key2,...] (非必录)注(更新单据体字段得加上单据体key)
//      JSONArray NeedUpDateFields = new JSONArray();
//      NeedUpDateFields.add("FEntity");// 实收数量
//      NeedUpDateFields.add("FRealQty");
//      NeedUpDateFields.add("FEntity");
//      NeedUpDateFields.add("FEntity_FSerialSubEntity");
//        NeedUpDateFields.add("FEntity.FSerialSubEntity.FDetailID");
//      NeedUpDateFields.add("FEntity.FSerialSubEntity.FSerialNo");
//      NeedUpDateFields.add("FEntity.FSerialSubEntity.FSerialNote");
//      json.put("NeedUpDateFields", NeedUpDateFields);
//
//      json.put("NeedReturnFields", NeedUpDateFields);try {String jsonStr = json.toJSONString();System.out.printf("json数据: \r%s%n", jsonStr);String sRet = client.save(formId, jsonStr);System.out.printf("保存结果: \r%s%n", sRet);} catch (Exception e) {e.printStackTrace();}}public JSONObject get1() {JSONObject FEntityJson = new JSONObject();// 是否新增行,固定 false
//        FEntityJson.put("FIsNew", "false");// 物料编码JSONObject FMaterialIdJson = new JSONObject();FMaterialIdJson.put("FNumber", "03-06-045-220005-00");FEntityJson.put("FMaterialId", FMaterialIdJson);// 入库类型FEntityJson.put("FInStockType", "12");// 单位JSONObject FUnitIDJson = new JSONObject();FUnitIDJson.put("FNumber", "Pcs");FEntityJson.put("FUnitID", FUnitIDJson);FEntityJson.put("FEntity_FEntryID", "1215222314");FEntityJson.put("FEntryID", "1215222314");FEntityJson.put("ID", "1215222314");// 应收数量
//      FEntityJson.put("FMustQty", "50");
//
//      // 实收数量
//      FEntityJson.put("FRealQty", "0");// 成本权重
//        FEntityJson.put("FCostRate", "100");// 单位JSONObject FBaseUnitIdJson = new JSONObject();FBaseUnitIdJson.put("FNumber", "Pcs2");FEntityJson.put("FBaseUnitId", FBaseUnitIdJson);// 货主类型FEntityJson.put("FOwnerTypeId", "BD_OwnerOrg");// 货主JSONObject FOwnerIdJson = new JSONObject();FOwnerIdJson.put("FNumber", "101230");FEntityJson.put("FOwnerId", FOwnerIdJson);// 仓库JSONObject FStockIdJson = new JSONObject();FStockIdJson.put("FNumber", "CK001233");FEntityJson.put("FStockId", FStockIdJson);// Bom,如果单据没有就没有JSONObject FBomIdJson = new JSONObject();FBomIdJson.put("FNumber", "03-06-045-0005-00_V1.0(中文)");FEntityJson.put("FBomId", FBomIdJson);// 生产订单编号FEntityJson.put("FMoBillNo", "123");// 生产订单内码FEntityJson.put("FMoId", "101712351");// 生产订单分录内码FEntityJson.put("FMoEntryId", "105123187");// 生产订单行号FEntityJson.put("FMoEntrySeq", "22");// 保管者类型FEntityJson.put("FKeeperTypeId", "BD_KeeperOrg");// 库存状态JSONObject FStockStatusIdJson = new JSONObject();FStockStatusIdJson.put("FNumber", "KCZT01_SYS");FEntityJson.put("FStockStatusId", FStockStatusIdJson);// 保管者JSONObject FKeeperIdJson = new JSONObject();FKeeperIdJson.put("FNumber", "100");FEntityJson.put("FKeeperId", FKeeperIdJson);// 单据订单明细 序列号列表JSONArray FSerialSubEntityArray = new JSONArray();JSONObject FSerialSubEntityJson = new JSONObject();// 序列号FSerialSubEntityJson.put("FSerialNo", "李杨1");// 序列号备注FSerialSubEntityJson.put("FSerialNote", "李杨1");FSerialSubEntityArray.add(FSerialSubEntityJson);// 将 单据明细订单序列号放入订单, 如果这条明细分录订单不需要更新序列号,就不需要这个字段
//      FEntityJson.put("FSerialSubEntity", FSerialSubEntityArray);return FEntityJson;}public JSONObject get2() {JSONObject FEntityJson = new JSONObject();// 是否新增行,固定 false, 保存才用true
//        FEntityJson.put("FIsNew", "false");// 物料编码JSONObject FMaterialIdJson = new JSONObject();FMaterialIdJson.put("FNumber", "03-01-0027-0001-00");FEntityJson.put("FMaterialId", FMaterialIdJson);// 入库类型FEntityJson.put("FInStockType", "12");// 单位JSONObject FUnitIDJson = new JSONObject();FUnitIDJson.put("FNumber", "Pcs");FEntityJson.put("FUnitID", FUnitIDJson);FEntityJson.put("FEntity_FEntryID", "1315115316");FEntityJson.put("FEntryID", "1315115316");FEntityJson.put("ID", "1315115316");// 应收数量
//      FEntityJson.put("FMustQty", "10");
//
//      // 实收数量
//      FEntityJson.put("FRealQty", "10");// 成本权重
//        FEntityJson.put("FCostRate", "100");// 单位JSONObject FBaseUnitIdJson = new JSONObject();FBaseUnitIdJson.put("FNumber", "P12cs");FEntityJson.put("FBaseUnitId", FBaseUnitIdJson);// 货主类型FEntityJson.put("FOwnerTypeId", "BD_OwnerOrg");// 货主JSONObject FOwnerIdJson = new JSONObject();FOwnerIdJson.put("FNumber", "101230");FEntityJson.put("FOwnerId", FOwnerIdJson);// 仓库JSONObject FStockIdJson = new JSONObject();FStockIdJson.put("FNumber", "CK0203");FEntityJson.put("FStockId", FStockIdJson);// Bom,如果单据没有就没有JSONObject FBomIdJson = new JSONObject();FBomIdJson.put("FNumber", "03-01-007-0001-00_V1.0(日本)");FEntityJson.put("FBomId", FBomIdJson);// 生产订单编号FEntityJson.put("FMoBillNo", "SCDD20220704002");// 生产订单内码FEntityJson.put("FMoId", "1017123511");// 生产订单分录内码FEntityJson.put("FMoEntryId", "101235189");// 生产订单行号FEntityJson.put("FMoEntrySeq", "42");// 保管者类型FEntityJson.put("FKeeperTypeId", "BD_KeeperOrg");// 库存状态JSONObject FStockStatusIdJson = new JSONObject();FStockStatusIdJson.put("FNumber", "KCZT01_SYS");FEntityJson.put("FStockStatusId", FStockStatusIdJson);// 保管者JSONObject FKeeperIdJson = new JSONObject();FKeeperIdJson.put("FNumber", "100");FEntityJson.put("FKeeperId", FKeeperIdJson);// 单据订单明细 序列号列表JSONArray FSerialSubEntityArray = new JSONArray();JSONObject FSerialSubEntityJson = new JSONObject();// 第一条序列号FSerialSubEntityJson.put("FSerialNo", "我是第二个你好呀66666666");// 序列号备注FSerialSubEntityJson.put("FSerialNote", "我是第二个你好呀66666666");JSONObject FSerialSubEntityJson2 = new JSONObject();// 第二条序列号FSerialSubEntityJson2.put("FSerialNo", "我是第二个你好呀77777777");// 序列号备注FSerialSubEntityJson2.put("FSerialNote", "我是第二个你好呀77777777");FSerialSubEntityArray.add(FSerialSubEntityJson);FSerialSubEntityArray.add(FSerialSubEntityJson2);// 将 单据明细订单序列号放入订单, 如果不需要更新序列号,就不需要这个字段FEntityJson.put("FSerialSubEntity", FSerialSubEntityArray);return FEntityJson;}/*** 根据入库单据编号 查看单据信息*/@Testpublic void TEST_VIEW_PRD_INSTOCK() throws Exception {String params = "{\"Number\": \"生产入库单据编号\",\"Id\": \"\"}";String result = client.view("PRD_INSTOCK", params);JSONObject resultJson = JSONObject.parseObject(result);if (result.indexOf(",\"IsSuccess\":false,") != -1) {System.out.printf("查询异常 原因:\r%s%n",resultJson.getJSONObject("Result").getJSONObject("ResponseStatus").getJSONArray("Errors"));} else {System.out.printf("查询成功:\r%s%n\n", result);}}}

打包注意

Jar程序 目录,要把配置放在jar同一级

War Tomcat 这个需要去研究,要把配置放在和程序同一级才有效

最后 还有一个 超级超级超级大的坑

如果最后打包出来Jar 在windows上面运行,你会发现 请求金蝶一直异常,会提示会话失效问题
这个问题困扰我了整整一个月,没有任何文档,相关论坛也没有出现过这个问题,连金蝶技术人员也不知道什么问题

最后发现是 windows编码问题

找到对应的活动代码页

52936  简体中文(HZ)
936   中国 - 简体中文(GB2312)
950   繁体中文(Big5)
65001  Unicode (UTF-8)
1200   Unicode

要把编码改为 65001 Unicode (UTF-8) 才可以正常请求金蝶
但是很遗憾,windows不支持修改编码,所以只能在linux上面运行, 修改windows编码为UTF-8也运行不了

但是 但是 但是 ,改windows编码不行,可以改JVM编码,Java程序都是在JVM上面跑
只需要改一下JVM就可以解决了

如果是 Jar程序 修改为

java -Dfile.encoding=utf-8 -jar test.jar

如果是Tomcat ,找到 Tomcat中配置catalina文件
Linux中,在catalina.sh配置JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=utf-8"
Windows中,在catalina.bat配置set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8

断点测试,金蝶SDK配置是否加载正确

找到 cfgUtil.class 这个文件 ,打一个断点,测试是否加载配置正确

Linux改编码测试运行

把linux改为 和windows一样的编码再去运行程序,记得备份 Linux原配置

Linux查看编码命令

locale

Linux修改 编码命令(centos 7)

vim /etc/locale.conf

修改为 windows编码

LANG=zh_CN.gb2312

再去运行程序,就会发现 请求金蝶api就会出现 会话失效,哪怕是配置明明读取是正常的,可就是请求不了

SpringBoot 启动自动创建 金蝶配置文件

程序打包出来是一个jar包,要把金蝶配置文件放在 和jar 同级目录,直接系统创建一份配置文件

第一步,加入依赖

使用 FileUtils org.apache.commons.io.FileUtils
需要加入 commons.io maven依赖或者 jar包

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version>
</dependency>

第二步,在 resource 下准备好金蝶源配置文件

## jar 运行 要设置 编码格式 不然请求金蝶会异常 java -Dfile.encoding=utf-8 -jar 要运行的jar包.jar
## 这个配置文件 要放在和 程序jar包 同一级目录
X-KDApi-AcctID=AcctID
X-KDApi-AppID=AppID
X-KDApi-AppSec=AppSec
X-KDApi-UserName=金蝶账号用户名
X-KDApi-LCID=2052
X-KDApi-ServerUrl=金蝶服务url

金蝶源文件路径 示例图:

第三步,创建一个系统启动任务类

import java.io.File;
import java.io.IOException;
import java.io.InputStream;import org.apache.commons.io.FileUtils;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;import lombok.extern.slf4j.Slf4j;/*** <h2>系统启动,创建一些必要相关配置文件</h2>* <p>** </p>** @author 作者<1922802352@qq.com>* @since 2022年09月07日 下午2:38:50**/
@Configuration
@Slf4j
public class InitDefaultConfigTask {static {try {/*** 一定保证 创建金蝶配置文件 要比 金蝶SDK读取配置先执行*/createKingDeeConfigFIle();} catch (IOException e) {}}/*** <h1> 创建金蝶配置文件</h1>* 因为金蝶SDK读取配置文件是根据 jar所在路径读取配置,所以创建的配置文件要与jar程序在同一级目录<br>* 可以事先将 源配置文件放在 resources下,可以让程序读取到源文件 ,然后在jar 目录在创建一份* @throws IOException */private static void createKingDeeConfigFIle() throws IOException {log.info("==================  系统启动 开始创建金蝶配置文件 ==================  ");/*** 输出文件的路径* * @filed outFilePath 当前 程序jar路径, 比如当前 程序jar 在D:\my\jar, 那么路径就是 D:\my\jar +*        在拼接上文件名称*/String outFilePath = (new File(".")).getCanonicalPath();// 判断 金蝶配置文件是否存在outFilePath = outFilePath.concat("/kdwebapi.properties");File file = new File(outFilePath);if(!file.exists()) {log.info("==================  金蝶配置文件不存在,创建一份 ==================  ");// 读取 resources下源文件String sourcePath = "/kdwebapi.properties";// 获取输入流Resource resource = new ClassPathResource(sourcePath);InputStream inputStream = resource.getInputStream();// 将inputStream 流复制源文件 到 jar 目录FileUtils.copyInputStreamToFile(inputStream, file);inputStream.close();}else {log.info("==================  金蝶配置文件存在 不需要创建 ==================  ");}log.info("==================  系统启动 创建金蝶配置文件完成 ==================  ");}}

第四步,打包 jar运行测试

启动jar 要设置 编码 -Dfile.encoding=utf-8

完整运行命令:

java -Dfile.encoding=utf-8 -Duser.timezone=Asia/Shanghai -Xms1024m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC  -jar 程序jar名称.jar

JVM启动参数:

命令 介绍
-Dfile.encoding=utf-8 设置系统文件编码格式为utf-8,针对金蝶SDK配置文件使用
-Duser.timezone=Asia/Shanghai 时区
-Xms1024m JVM初始内存
-Xmx1024m JVM最大可用内存
-XX:MetaspaceSize=128m 元空间 初始内存大小(永久代)
-XX:MaxMetaspaceSize=128m 元空间最大大小(永久代)
-XX:+HeapDumpOnOutOfMemoryError 开启堆快照
-XX:+PrintGCDateStamps 打印GC日志的日期格式
-XX:+PrintGCDetails 打印详细的GC日志
-XX:NewRatio=1 老年代占1/2
-XX:SurvivorRatio=30
-XX:+UseParallelGC 指定使用 并行垃圾收集器
-XX:+UseParallelOldGC 指定使用 增强版并行垃圾收集器
-jar 程序名称.jar 运行的jar程序

启动完成

java金蝶星空云金蝶Java 对接 金蝶云星空 接口 对接 金蝶API 对接 金蝶 接口 解决 会话失效 问题 会话已失效,请重新登录相关推荐

  1. python和接码平台对接_GitHub - zhupite233/yima: 易码平台API的Python接口

    易码API - Python接口 1. 简介: 本python包旨在为易码api提供一个python封装包,使调用变得更简单. 2. 使用方法: 2.1 安装 pip install yima 2.2 ...

  2. 钉钉开放平台API对接第一讲

    DING日程-API对接: 官方API:https://ding-doc.dingtalk.com/doc#/serverapi2/iqel76 对接评语: 优点:钉钉API对接相对于微信API对接比 ...

  3. 对接金蝶凭证K3(java对接)

    讲怎么对接之前先让我吐槽一下,对接金蝶要安装金蝶系统,我自己安装了一次没安装成功,金蝶公司的给我安装了七次也没有成功,最后发给我一个镜像,里面有安装好的金蝶系统才勉强可以,后面的就是这种坑了,对你爱理 ...

  4. 金蝶云星空与管易云对接集成采购订单查询连通采购订单新增(金蝶对接管易采购订单)

    金蝶云星空与管易云对接集成采购订单查询连通采购订单新增(金蝶对接管易采购订单) 来源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代 ...

  5. 金蝶云星空对接打通旺店通·企业奇门调拨单查询接口与创建其他出库单接口

    数据源平台:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理 ...

  6. 管易云·奇门对接打通金蝶云星空历史订单查询接口与销售出库新增接口

    数据源系统:管易云·奇门 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司,公司于2008年成立,拥有从事电商及新零售业务相关专业知识工作者超过1000人.为伊利.网易有道.东阿阿胶.金龙鱼. ...

  7. 金蝶云星空对接打通四化智造MES(API)逐个单据查询接口与新增订单接口

    数据源平台:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台.金蝶K/3Cloud围绕着"生态.人人.体验&qu ...

  8. 金蝶发布2021年财报:云业务同比增44.2%,继续加码研发技术创新

    编辑 | 宋慧 出品 | CSDN云计算 金蝶国际软件集团有限公司("金蝶国际"."金蝶"或"公司",连同其附属公司统称"集团&q ...

  9. java对接阿里云短信服务详解(验证码,推广短信,通知短信)

    前言 小前提: - java:springboot框架,maven版本管理. - 阿里云:有账号,已经进行实名认证. java对接阿里云短信服务详解(验证码,推广短信,通知短信) 前言 1. 登录阿里 ...

最新文章

  1. 476. 数字的补数 【位运算】
  2. php扩展memcached和memcache的安装配置方法
  3. (转)千万别熬夜:身体器官晚上工作时间表一览
  4. leetcode1047. 删除字符串中的所有相邻重复项
  5. 读书笔记《集体智慧编程》Chapter 2 : Make Recommendations
  6. Android 屏幕适配资料汇总
  7. 小程序文本高度左对齐问题
  8. LeetCode:10.regular-expression-matching(正则式表达)
  9. 【转载】StreamInsight系列-QueryTemplate\QueryBinder\Query
  10. 高等代数第3版下 [丘维声 著] 2015年版_一文搞懂代数几何发展史(一)
  11. 计算机管理能看到移动硬盘,我的移动硬盘 在我的电脑和 磁盘管理 中都看不到,只能在设备管理器的磁盘驱动器中能看到,怎么恢復啊...
  12. Android设置网络图片为手机背景图片的方法
  13. Session的钝化和活化(序列化和反序列化)
  14. 英雄联盟服务器维护2019.4.5,lol维护公告最新时间 英雄联盟11.9版本4月29日更新内容...
  15. 超火爆的人类一败涂地Human Fall Flat Mac中文版(支持m1)
  16. 面试:GET 请求能上传图片吗,已解决
  17. 51单片机 | 蜂鸣器实验
  18. 网络测试一般使用这四个命令就可以了
  19. 保卫萝卜迅玩版53关php,保卫萝卜迅玩版 28关 | 手游网游页游攻略大全
  20. investment

热门文章

  1. 公共场所的标志和说明英文表达100例
  2. C# winform实现百度地图导航
  3. #力扣 LeetCode35. 搜索插入位置 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC
  4. 05- 防火墙用户管理
  5. latex与word之间的各种转化方法
  6. MATLAB实现多元非线性回归
  7. 寻找怪数:有一种奇怪的自然数,它的比其本身小的所有因子之和等于它本身,例如:6=1+2+3,其中1、2、3都是6的因子,编程找出整数N之内的所有怪数。
  8. 深入浅出的图神经网络,神经调节的知识网络图
  9. 苹果手机对html的要求,原神iPhone 8能玩吗?苹果手机最低配置要求一览
  10. Vue关于pdf展示问题——第三方电子签章不能正常展示