问题描述
我需要容器化一个与 SAP 系统通信的服务。该服务是使用 Spring Boot 编写的。
我有一份在 Linux 机器上手动执行步骤的文档,这将有助于连接到 SAP 系统。它遵循的步骤是:
- 下载所需文件
- 切换到用户
- 解压这些文件
- 创建符号链接
- 准备证书和密钥
- 生成 PSE
- 将 SAP 根证书和中间证书添加到 PSE 等等。
我正在考虑编写一个包含上述所有步骤的 Dockerfile。目前不知道还有其他选择。
几个查询:
- 编写一个包含我们在任何 Linux 机器上手动执行的所有步骤的 Dockerfile 是否是个好主意,这也有助于我将与 SAP 系统通信的服务容器化。
- 是否有其他替代方案或库可用于实现相同的目标。
- docker 文件是否已经存在,它将帮助我连接到 SAP 系统。
- 如何使用 Dockerfile 在我的应用程序中配置 SAP SNC。
有人可以帮我吗?
感谢您的帮助!提前致谢!
解决方法
如果您有一个基于 Java 的 Spring 应用程序,您可以使用 SAP Jco library,它可用于从外部连接到 SAP 系统。此处描述了配置步骤:
https://help.mulesoft.com/s/article/Enabling-SNC-in-SAP-connector
它在 Mulesoft 帮助中给出,但要点对于任何基于 Java 的系统都是相同的。
需要为 SNC 设置的最重要的 JCo 参数:
参数 | 姓名 | 说明 |
---|---|---|
jco.client.snc_mode | SNC 模式 | 1:SNC 已激活 0:SNC 未激活 |
jco.client.snc_lib | SNC 库路径 | 指定外部库的路径和文件名。默认是在环境变量 SNC_LIB 中定义的系统定义库。示例:C:SAP\J2EE_Engine\SAPCrypto\libs\apcrypto.dll |
jco.client.snc_qop | SNC 级别 | 指定用于连接的保护级别。 1:仅认证 2:完整性保护 3:隐私保护(默认) 8:在 SAP 应用服务器上使用 snc/data protection/use 中的值 9:在 SAP 应用服务器上使用 snc/data_protection/max 中的值 |
jco.client.snc_myname | SNC 名称 | 指定 SNC 名称。应设置此参数以确保使用正确的 SNC 名称进行连接。示例:p:CN=SAPJ2EE,O=MyCompany,C=US |
jco.client.snc_partnername | SNC 合作伙伴 | 指定 SAP 应用程序服务器的 SNC 名称。它可以在 SAP 配置文件参数 snc\identity\as 中找到。示例:p:CN=ABC,C=US |