289.2. 필요한 SAP Libraries 설치
289.2.1. Fuse OSGi 컨테이너에 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 SAP JCo 라이브러리와 SAP IDoc 라이브러리를 JBoss Fuse OSGi 컨테이너에 설치할 수 있습니다.
SAP JCo 라이브러리와 SAP IDoc 라이브러리(http://service.sap.com/public/connectors)를 다운로드하여 운영 체제에 적합한 라이브러리 버전을 선택해야 합니다.
참고이러한 라이브러리를 다운로드하고 사용하려면 SAP 서비스 마켓플레이스 계정이 있어야 합니다.
-
sapjco3.jar,libsapjco3.so(또는 Windows의sapjco3.gradle) 및sapidoc3.jar라이브러리 파일을 Fuse 설치의lib/디렉토리에 복사합니다. 텍스트 편집기에서 구성 속성 파일
등/config.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새 항목 앞의 각 줄 끝에 쉼표와 백슬래시(
, \)를 포함시켜 목록이 올바르게 계속되도록 하는 것을 잊어 버립니다.- 이러한 변경 사항을 적용하려면 컨테이너를 다시 시작합니다.
컨테이너에
camel-sap기능을 설치합니다. Karaf 콘솔에서 다음 명령을 입력합니다.JBossFuse:karaf@root> features:install camel-sap
289.2.2. JBoss EAP 컨테이너에 배포 링크 복사링크가 클립보드에 복사되었습니다!
JBoss EAP 컨테이너에 SAP 구성 요소를 배포하려면 다음 단계를 수행합니다.
SAP JCo 라이브러리와 SAP IDoc 라이브러리(http://service.sap.com/public/connectors)를 다운로드하여 운영 체제에 적합한 라이브러리 버전을 선택해야 합니다.
참고이러한 라이브러리를 다운로드하고 사용하려면 SAP 서비스 마켓플레이스 계정이 있어야 합니다.
JCo 라이브러리 파일과 IDoc 라이브러리 파일을 JBoss EAP 설치를 위한 하위 디렉터리에 복사합니다.
중요이름 지정 규칙을 따릅니다.
네이티브 라이브러리는 <
osname>-<cpuname> 형식으로 이름 지정 표준을 따르는 하위 디렉터리에 설치해야 합니다.제공된 정보 및 허용된 이름 전체 목록은 JBoss 모듈 설명서 에서 확인할 수 있습니다.
예를 들어 호스트 플랫폼이 64비트 Linux(
linux-x86_64)인 경우 다음과 같이 라이브러리 파일을 설치합니다.예제
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/$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>
289.2.3. Spring Boot 및 OpenShift Container Platform에 배포 링크 복사링크가 클립보드에 복사되었습니다!
maven-resources 및 maven-jar 플러그인을 사용하여 Maven으로 프로젝트에 SAP를 배포하려면 다음 단계를 따르십시오.
- 라이브러리 다운로드
- 종속 항목 추가
- 프로젝트에 라이브러리 배치
- 라이브러리에 대한 구성 추가
- OpenShift에 배포
289.2.3.1. 라이브러리 다운로드 링크 복사링크가 클립보드에 복사되었습니다!
세 개의 라이브러리가 필요합니다.
모든 환경에 대한 공통 라이브러리:
-
sapidoc3.jar
-
아키텍처용 라이브러리:
-
sapjco3.jar sapjco3.so자세한 내용은 SAP Java Connector 설명서를 참조하십시오.
-
SAP JCo 라이브러리와 SAP IDoc 라이브러리(http://service.sap.com/public/connectors)를 다운로드하여 운영 체제에 적합한 라이브러리 버전을 선택해야 합니다.
참고이러한 라이브러리를 다운로드하고 사용하려면 SAP 서비스 마켓플레이스 계정이 있어야 합니다.
289.2.3.2. 종속 항목 추가 링크 복사링크가 클립보드에 복사되었습니다!
- 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>
289.2.3.3. 라이브러리 배치 링크 복사링크가 클립보드에 복사되었습니다!
pom.xml에 상대적인lib디렉토리에 SAP 라이브러리 파일을 복사합니다.Maven을 실행하면
pom.xml의 지침에 따라 파일을 지정된 위치에 복사합니다.예: AMD64
src └── lib └── amd64.com.sap.conn ├── idoc │ └── sapidoc3.jar └── jco ├── sapjco3.jar └── sapjco3.so주의사용자 정의 Maven 리포지토리에 SAP 라이브러리 파일을 추가하지 마십시오.
SAP Java Connector는 JAR 파일
sapjco3.jar및sapidoc3.jar에서 유효성 검사를 수행합니다.JAR 파일을 Maven 리포지토리에 복사하는 경우
spring-boot-maven-plugin은 버전 번호를 추가하여 해당 파일의 이름을 변경합니다.이로 인해 검증이 실패하여 애플리케이션이 제대로 배포되지 않습니다.
289.2.3.4. 플러그인 구성 링크 복사링크가 클립보드에 복사되었습니다!
Spring
-boot-maven-plugin 아래에구성을 추가합니다.pom.xml에 mavenmaven-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>이렇게 하면 필요한 아티팩트에 대해 올바른 구조를 생성하고 SAP 라이브러리가 필요한 대상 디렉터리에 배포되도록 합니다.
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>이는
'oc 명령을 실행할 때 relative복사합니다.lib에서 target/lib에 libraries 디렉토리를
289.2.3.5. Openshift에 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에 배포하고 Maven 빌드를 트리거하려면 다음 단계를 완료합니다.
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>"필요에 따라 값을 바꿉니다.
-
<current_Fuse_Java_OpenShift_Imagestream_version> : 현재 이미지 스트림 -
<application_name> : 선택한 애플리케이션 이름입니다. -
<additional_args> : maven에 추가할 인수입니다. <relative_path_of_target_directory> : 대상 앱의 상대 경로예제
이 예에서
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"
-
빌드 시작(Multimodule 상위 디렉터리에서)
oc start-build sapik6 --from-dir=.이렇게 하면 maven 빌드가 실행되는 OpenShift로 로컬 호스트에서 소스가 전송됩니다.
앱 시작
oc new-app --image-stream=<name>:<version>예제
oc new-app --image-stream=sapik6:latest
289.2.4. JKube를 사용하여 Spring Boot 및 OpenShift Container Platform에 배포 링크 복사링크가 클립보드에 복사되었습니다!
openshift-maven-plugin 플러그인을 사용하여 JKube 를 사용하여 프로젝트에 SAP를 배포하려면 다음 단계를 따르십시오.
커넥터를 프로젝트의
lib디렉터리에 배치합니다.예: AMD64
src └── lib └── amd64.com.sap.conn ├── idoc │ └── sapidoc3.jar └── jco ├── sapjco3.jar └── sapjco3.so주의사용자 정의 Maven 리포지토리에 SAP 라이브러리 파일을 추가하지 마십시오.
SAP Java Connector는 JAR 파일
sapjco3.jar및sapidoc3.jar에서 유효성 검사를 수행합니다.JAR 파일을 Maven 리포지토리에 복사하는 경우
spring-boot-maven-plugin은 버전 번호를 추가하여 해당 파일의 이름을 변경합니다.이로 인해 검증이 실패하여 애플리케이션이 제대로 배포되지 않습니다.
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>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>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>
289.2.4.1. Openshift에 배포 링크 복사링크가 클립보드에 복사되었습니다!
openshift-maven-plugin 이 pom.xml 에 구성되면 fuse spring-boot 이미지를 애플리케이션의 빌더 이미지로 특정 네임스페이스로 가져올 수 있습니다.
애플리케이션 경로에서 시작합니다.
cd <sap_application_path>프로젝트 스트림을 생성합니다.
oc new-project streams이미지 스트림을 가져옵니다.
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)프로젝트 생성
oc new-project <your_project>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