290.2. 安装所需的 SAP Libraries


290.2.1. 在 Fuse OSGi 容器中部署

您可以将 SAP JCo 库和 SAP IDoc 库安装到 JBoss Fuse OSGi 容器中,如下所示:

  1. 从 SAP Service Marketplace 下载 SAP JCo 库和 SAP IDoc 库,确保为您的操作系统选择适当的库版本。http://service.sap.com/public/connectorshttp://service.sap.com/public/connectors

    注意

    您必须有一个 SAP Service Marketplace 帐户 才能下载和使用这些库。

  2. sapjco3.jarlibsapjco3.so (或 Windows 上的 sapjco3.dll )和 sapidoc3.jar 库文件复制到 Fuse 安装的 lib/ 目录中。
  3. 在文本编辑器中打开配置属性文件 etc/config.properties,以及自定义属性文件 etc/custom.properties。在 etc/config.properties 文件中,查找 org.osgi.framework.system.packages.extra 属性并复制完整属性设置(此设置会扩展多个行,带有反斜杠字符 \,用于表示行继续)。现在,将此设置粘贴到 etc/custom.properties 文件中。

    现在,您可以添加支持 SAP 库所需的额外软件包。在 etc/custom.properties 文件中,将所需的软件包添加到 org.osgi.framework.system.packages.extra 设置中,如下所示:

    org.osgi.framework.system.packages.extra  \
     ... , \
     com.sap.conn.idoc, \
     com.sap.conn.idoc.jco, \
     com.sap.conn.jco, \
     com.sap.conn.jco.ext, \
     com.sap.conn.jco.monitor, \
     com.sap.conn.jco.rt, \
     com.sap.conn.jco.server
    Copy to Clipboard Toggle word wrap

    不要忘记在新条目前面的每行的末尾包含一个逗号和反斜杠 \,以便正确执行列表。

  4. 重启容器以使这些更改生效。
  5. 在容器中安装 camel-sap 功能。在 Karaf 控制台中输入以下命令:

    JBossFuse:karaf@root> features:install camel-sap
    Copy to Clipboard Toggle word wrap

290.2.2. 在 JBoss EAP 容器中部署

要在 JBoss EAP 容器中部署 SAP 组件,请执行以下步骤:

  1. 从 SAP Service Marketplace 下载 SAP JCo 库和 SAP IDoc 库,确保为您的操作系统选择适当的库版本。http://service.sap.com/public/connectorshttp://service.sap.com/public/connectors

    注意

    您必须有一个 SAP Service Marketplace 帐户 才能下载和使用这些库。

  2. 将 JCo 库文件和 IDoc 库文件复制到 JBoss EAP 安装的子目录中。

    重要

    按照命名规则进行操作

    原生库必须安装在遵循命名标准的子目录中,格式为 < osname>-<cpuname& gt;。

    JBoss 模块手册中 提供了信息和允许名称的完整列表。

    例如,如果您的主机平台是 64 位 Linux (linux-x86_64),请按如下所示安装库文件:

    Example

    cp sapjco3.jar sapidoc3.jar $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/
    mkdir -p $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/lib/linux-x86_64
    cp libsapjco3.so $JBOSS_HOME/modules/system/layers/fuse/com/sap/conn/jco/main/lib/linux-x86_64/
    Copy to Clipboard Toggle word wrap

  3. 创建名为 $JBOSS_HOME/modules/system/layers/fuse/org/wildfly/camel/extras/main/module.xml 的新文件,并添加以下内容

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="org.wildfly.camel.extras">
    
    	<dependencies>
    		<module name="org.fusesource.camel.component.sap" export="true" services="export" />
    	</dependencies>
    
    </module>
    Copy to Clipboard Toggle word wrap

要使用 maven-resourcesmaven-jar 插件使用 Maven 部署 SAP,请按照以下步骤操作:

  1. 下载库
  2. 添加依赖项
  3. 将库放在项目中
  4. 为库添加配置
  5. 部署到 OpenShift

290.2.3.1. 下载库

您需要三个库:

  • 所有环境的通用库:

    • sapidoc3.jar
  • 架构库:

  1. 从 SAP Service Marketplace 下载 SAP JCo 库和 SAP IDoc 库,确保为您的操作系统选择适当的库版本。http://service.sap.com/public/connectorshttp://service.sap.com/public/connectors

    注意

    您必须有一个 SAP Service Marketplace 帐户 才能下载和使用这些库。

290.2.3.2. 添加依赖项

  1. Maven 用户需要把以下依赖项添加到其 pom.xml 文件中,才能使用此组件:
<dependency>
	<groupId>org.fusesource</groupId>
	<artifactId>camel-sap-starter</artifactId>
	<exclusions>
		<exclusion>
			<groupId>com.sap.conn.idoc</groupId>
			<artifactId>sapidoc3</artifactId>
		</exclusion>
		<exclusion>
			<groupId>com.sap.conn.jco</groupId>
			<artifactId>sapjco3</artifactId>
		</exclusion>
	</exclusions>
</dependency>
Copy to Clipboard Toggle word wrap

290.2.3.3. 放置库

  1. 将 SAP 库文件复制到相对于 pom.xmllib 目录中

    运行 Maven 时,它会遵循 pom.xml 中的指令,并将文件复制到指定的位置。

    示例:AMD64

    src
    └── lib
        └── amd64.com.sap.conn
            ├── idoc
            │     └── sapidoc3.jar
            └── jco
                ├── sapjco3.jar
                └── sapjco3.so
    Copy to Clipboard Toggle word wrap

    警告

    不要将 SAP 库文件添加到自定义 Maven 存储库中

    SAP Java Connector 对 JAR 文件 sapjco3.jarsapidoc3.jar 的名称执行验证。

    如果您将 JAR 文件复制到 Maven 存储库,spring-boot-maven-plugin 将通过附加版本号来重命名它们。

    这会导致验证失败,从而导致应用程序正确部署。

290.2.3.4. 配置插件

  1. 将 maven 配置添加到 pom.xml 中,在 spring-boot-maven-plugin 下:

    添加 maven-jar-plugin,并将 Class-Path 条目设置为 lib 文件夹位置:

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestEntries>
                        <Class-Path>lib/${os.arch}/sapjco3.jar lib/${os.arch}/sapidoc3.jar</Class-Path>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    Copy to Clipboard Toggle word wrap

    这会为必要的工件创建正确的结构,并使 SAP 库部署到所需的目标目录中。

  2. 使用 pom.xml 中的 maven-resources-plugin 来复制库

         <plugin>
           <artifactId>maven-resources-plugin</artifactId>
           <executions>
              <execution>
                 <id>copy-resources01</id>
                 <phase>process-classes</phase>
                 <goals>
                    <goal>copy-resources</goal>
                 </goals>
                 <configuration>
                    <outputDirectory>${basedir}/target/lib</outputDirectory>
                    <encoding>UTF-8</encoding>
                    <resources>
                       <resource>
                          <directory>${basedir}/lib</directory>
                          <includes>
                             <include>**/**</include>
                          </includes>
                       </resource>
                    </resources>
                 </configuration>
              </execution>
           </executions>
        </plugin>
    Copy to Clipboard Toggle word wrap

    这会在 运行 'oc 命令时将相对 lib 中的库目录复制到 target/lib

290.2.3.5. 部署到 Openshift

完成以下步骤以部署到 OpenShift,并触发 Maven 构建。

  1. 运行 oc 以创建并配置构建:

    oc new-build --binary=true
     --image-stream="<current_Fuse_Java_OpenShift_Imagestream_version>"
     --name=<application_name>
     -e  "ARTIFACT_COPY_ARGS=-a ."
     -e "MAVEN_ARGS_APPEND=<additional_args>
     -e "ARTIFACT_DIR=<relative_path_of_target_directory>"
    Copy to Clipboard Toggle word wrap

    根据需要替换值:

    • <current_Fuse_Java_OpenShift_Imagestream_version& gt; : 当前镜像流。
    • <APPLICATION_NAME > :您选择的应用程序名称。
    • <additional_args > : 附加到 maven 的参数。
    • <relative_path_of_target_directory& gt; : path of app to target。

      Example

      在本例中,使用 MAVEN_ARGS_APPEND 指定仅在 spring-boot 目录中构建特定项目:

      oc new-build --binary=true --image-stream="fuse7-java-openshift:1.4"
      --name=sapik6 -e  "ARTIFACT_COPY_ARGS=-a ." -e "MAVEN_ARGS_APPEND=-pl spring-boot/sap-srfc-destination-spring-boot" -e "ARTIFACT_DIR=spring-boot/sap-srfc-destination-spring-boot/target"
      Copy to Clipboard Toggle word wrap
  2. 启动构建(从多模块父目录)

    oc start-build sapik6 --from-dir=.
    Copy to Clipboard Toggle word wrap

    这会将本地主机源发送到运行 maven 构建的 OpenShift。

  3. 启动应用程序

    oc new-app --image-stream=<name>:<version>
    Copy to Clipboard Toggle word wrap

    Example

    oc new-app --image-stream=sapik6:latest
    Copy to Clipboard Toggle word wrap

要使用 openshift-maven-plugin 插件在项目中部署 SAP,请按照以下步骤操作: https://www.eclipse.org/jkube/

  1. 将连接器放在项目的 lib 目录中:

    示例:AMD64

    src
    └── lib
        └── amd64.com.sap.conn
            ├── idoc
            │     └── sapidoc3.jar
            └── jco
                ├── sapjco3.jar
                └── sapjco3.so
    Copy to Clipboard Toggle word wrap

    警告

    不要将 SAP 库文件添加到自定义 Maven 存储库中

    SAP Java Connector 对 JAR 文件 sapjco3.jarsapidoc3.jar 的名称执行验证。

    如果您将 JAR 文件复制到 Maven 存储库,spring-boot-maven-plugin 将通过附加版本号来重命名它们。

    这会导致验证失败,从而导致应用程序正确部署。

  2. pom.xml 中的初学者中排除嵌入的连接器:

    <dependency>
       <groupId>org.fusesource</groupId>
       <artifactId>camel-sap-starter</artifactId>
       <exclusions>
          <exclusion>
             <groupId>com.sap.conn.idoc</groupId>
             <artifactId>sapidoc3</artifactId>
          </exclusion>
          <exclusion>
             <groupId>com.sap.conn.jco</groupId>
             <artifactId>sapjco3</artifactId>
          </exclusion>
       </exclusions>
    </dependency>
    Copy to Clipboard Toggle word wrap
  3. pom.xml 中将本地连接器定义为静态资源:

    <resources>
       <resource>
          <directory>src/lib/${os.arch}/com/sap/conn/idoc</directory>
          <targetPath>BOOT-INF/lib</targetPath>
          <includes>
             <include>*.jar</include>
          </includes>
       </resource>
       <resource>
          <directory>src/lib/${os.arch}/com/sap/conn/jco</directory>
          <targetPath>BOOT-INF/lib</targetPath>
          <includes>
             <include>*.jar</include>
          </includes>
       </resource>
    </resources>
    Copy to Clipboard Toggle word wrap
  4. 配置资源和部署配置,在 pom.xml 中指定连接器路径:

    <plugin>
       <groupId>org.eclipse.jkube</groupId>
       <artifactId>openshift-maven-plugin</artifactId>
       <version>1.4.0</version>
       <configuration>
          <images>
             <image>
                <name>${project.artifactId}:${project.version}</name>
                <build>
                   <from>${java.docker.image}</from>
                   <assembly>
                      <targetDir>/deployments</targetDir>
                      <layers>
                         <layer>
                            <id>static-files</id>
                            <fileSets>
                               <fileSet>
                                  <directory>src/lib/${os.arch}/com/sap/conn/jco</directory>
                                  <outputDirectory>static</outputDirectory>
                                  <includes>
                                     <include>*.so</include>
                                  </includes>
                               </fileSet>
                            </fileSets>
                         </layer>
                      </layers>
                   </assembly>
                </build>
             </image>
          </images>
       </configuration>
       <executions>
          <execution>
             <goals>
                <goal>resource</goal>
                <goal>build</goal>
                <goal>apply</goal>
             </goals>
          </execution>
       </executions>
    </plugin>
    Copy to Clipboard Toggle word wrap

290.2.4.1. 在 Openshift 上部署

pom.xml 中配置了 openshift-maven-plugin 后,您可以将 fuse spring-boot 镜像导入到特定命名空间中,作为我们的应用程序的构建器镜像。

  1. 在应用程序路径中启动:

    cd <sap_application_path>
    Copy to Clipboard Toggle word wrap
  2. 创建项目流:

    oc new-project streams
    Copy to Clipboard Toggle word wrap
  3. 导入镜像流:

    oc import-image streams/fuse7-java-openshift:1.11 --from=registry.redhat.io/fuse7/fuse-java-openshift-rhel8:1.11-32 --confirm -n streams (JDK8)
    Copy to Clipboard Toggle word wrap
  4. 创建项目

    oc new-project <your_project>
    Copy to Clipboard Toggle word wrap
  5. 使用 maven 部署应用程序:

    mvn clean oc:deploy -Djkube.docker.imagePullPolicy=Always -Popenshift -Djkube.generator.from=streams/fuse7-java-openshift:1.11 -Djkube.resourceDir=./src/main/jkube -Djkube.openshiftManifest=target/classes/META-INF/jkube/openshift.yml -Djkube.generator.fromMode=istag
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat