289장. SAP 구성 요소
SAP 구성 요소는 10개의 서로 다른 SAP 구성 요소로 구성된 패키지입니다. sRFC, tRFC 및 qRFC 프로토콜을 지원하는 원격 함수 호출(RFC) 구성 요소가 있으며 IDoc 형식의 메시지를 사용하여 통신을 용이하게 하는 IDoc 구성 요소가 있습니다. 구성 요소에서는 SAP Java Connector(SAP JCo) 라이브러리를 사용하여 SAP 및 SAP IDoc 라이브러리와 양방향 통신을 용이하게 하여 중간 문서(ID) 형식으로 문서를 쉽게 전송할 수 있습니다.
289.1. 개요
289.1.1. 종속 항목
Maven 사용자는 이 구성 요소를 사용하려면 다음 종속성을 pom.xml
파일에 추가해야 합니다.
<dependency> <groupId>org.fusesource</groupId> <artifactId>camel-sap</artifactId> <version>x.x.x</version> <dependency>
289.1.2. SAP 구성 요소에 대한 추가 플랫폼 제한 사항
SAP 구성 요소는 타사 JCo 3 및 IDoc 3 라이브러리를 사용하므로 라이브러리가 지원하는 플랫폼에만 설치할 수 있습니다. 지원되는 라이브러리 버전 및 플랫폼 제한 사항에 대한 자세한 내용은 Red Hat JBoss Fuse 지원 구성 을 참조하십시오.
289.1.3. SAP JCo 및 SAP IDoc 라이브러리
SAP 구성 요소 사용에 대한 전제 조건은 SAP Java Connector (SAP JCo) 라이브러리와 SAP IDoc 라이브러리가 Java 런타임의 lib/
디렉터리에 설치되어 있다는 것입니다. SAP Service Marketplace에서 대상 운영 체제에 대한 적절한 SAP 라이브러리 세트를 다운로드해야 합니다.
라이브러리 파일의 이름은 표 289.1. “필수 SAP 라이브러리” 에 표시된 대로 대상 운영 체제에 따라 달라집니다.
SAP 구성 요소 | Linux 및 UNIX | Windows |
---|---|---|
SAP JCo 3 |
|
|
SAP IDoc |
|
|
289.1.4. Fuse OSGi 컨테이너에 배포
다음과 같이 SAP JCo 라이브러리 및 SAP IDoc 라이브러리를 JBoss Fuse OSGi 컨테이너에 설치할 수 있습니다.
SAP Service Marketplace(SAP JCo 라이브러리 및 SAP IDoc 라이브러리를 다운로드하여 운영 체제에 적합한 버전의 라이브러리를 선택해야 합니다.
참고이러한 라이브러리를 다운로드하여 사용하려면 SAP Service Marketplace 계정이 있어야 합니다.
-
sapjco3.jar
,libsapjco3.so
(또는 Windows에서sapjco3.dll
) 및sapidoc3.jar
라이브러리 파일을 Fuse 설치의lib/
디렉토리에 복사합니다. 텍스트 편집기에서 구성 속성 파일,
etc/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.1.5. JBoss EAP 컨테이너에 배포
JBoss EAP 컨테이너에 SAP 구성 요소를 배포하려면 다음 단계를 수행합니다.
SAP Service Marketplace(SAP JCo 라이브러리 및 SAP IDoc 라이브러리를 다운로드하여 운영 체제에 적합한 버전의 라이브러리를 선택해야 합니다.
참고이러한 라이브러리를 다운로드하여 사용하려면 SAP Service Marketplace 계정이 있어야 합니다.
JCo 라이브러리 파일 및 IDoc 라이브러리 파일을 JBoss EAP 설치의 적절한 하위 디렉터리에 복사합니다. 예를 들어 호스트 플랫폼이 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/
중요네이티브 라이브러리(예:
libsapjco3.so
)를 JBoss EAP 설치에 설치하려면 라이브러리 하위 디렉터리의 이름 지정을 위한 표준화된 규칙이 있습니다. 64비트 Linux의 경우 하위 디렉터리는linux-x86_64
입니다. 다른 플랫폼의 경우 https://docs.jboss.org/author/display/MODULES/Native+Libraries 에서 참조하십시오.$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.1.6. URI 형식
SAP 구성 요소에서 제공하는 엔드포인트에는 RFC(Remote Function Call) 엔드포인트와 Intermediate Document (IDoc) 엔드포인트가 두 가지가 있습니다.
RFC 엔드 포인트의 URI 형식은 다음과 같습니다.
sap-srfc-destination:destinationName:rfcName sap-trfc-destination:destinationName:rfcName sap-qrfc-destination:destinationName:queueName:rfcName sap-srfc-server:serverName:rfcName[?options] sap-trfc-server:serverName:rfcName[?options]
IDoc 엔드포인트의 URI 형식은 다음과 같습니다.
sap-idoc-destination:destinationName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]] sap-idoclist-destination:destinationName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]] sap-qidoc-destination:destinationName:queueName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]] sap-qidoclist-destination:destinationName:queueName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]] sap-idoclist-server:serverName:idocType[:idocTypeExtension[:systemRelease[:applicationRelease]]][?options]
sap-endpointKind-destination이 접두사가 붙은 URI 형식은 대상 끝점(즉, Camel 생산자 끝점)을 정의하는 데 사용되며 destinationName 은 SAP 인스턴스에 대한 특정 아웃바운드 연결의 이름입니다. 아웃바운드 연결의 이름은 설정 요소 수준에서 289.2.2절. “대상 구성” 에 설명되어 있습니다.
sap-endpointKind-server 접두사가 붙은 URI 형식은 서버 엔드포인트(즉, Camel 소비자 엔드포인트)를 정의하는 데 사용되며 serverName 은 SAP 인스턴스의 특정 인바운드 연결 이름입니다. 인바운드 연결의 이름은 289.2.3절. “서버 설정” 에 설명된 대로 구성 요소 수준에서 이름이 지정되고 구성됩니다.
RFC 끝점 URI의 다른 구성 요소는 다음과 같습니다.
- rfcName
- (필수) 대상 끝점 URI에서 는 연결된 SAP 인스턴스의 끝점에서 호출한 RFC의 이름입니다. 서버 끝점 URI에서 는 연결된 SAP 인스턴스에서 호출할 때 끝점에서 처리하는 RFC의 이름입니다.
- queueName
- 이 끝점이 SAP 요청을 보내는 큐를 지정합니다.
IDoc 엔드포인트 URI의 다른 구성 요소는 다음과 같습니다.
- idocType
- (필수) 이 끝점에서 생성한 IDoc의 기본 IDoc 유형을 지정합니다.
- idocTypeExtension
- 이 끝점에서 생성한 IDoc의 IDoc 형식 확장을 지정합니다.Specifies the IDoc Type Extension, if any, of an IDoc produced by this endpoint.
- systemRelease
- 이 끝점에서 생성한 IDoc의 관련 SAP Basis 릴리스를 지정합니다.
- applicationRelease
- 관련 애플리케이션 릴리스(있는 경우) 이 끝점에서 생성한 IDoc의 릴리스를 지정합니다.
- queueName
- 이 끝점이 SAP 요청을 보내는 큐를 지정합니다.
289.1.7. RFC 대상 끝점에 대한 옵션
RFC 대상 끝점(sap-srfc-destination
,sap-trfc-destination
, sap-qrfc-destination
)은 다음 URI 옵션을 지원합니다.
이름 | 기본 | 설명 |
---|---|---|
|
|
|
|
|
|
289.1.8. RFC 서버 끝점에 대한 옵션
SAP RFC 서버 끝점(sap-srfc-server
및 sap-trfc-server
)은 다음 URI 옵션을 지원합니다.
이름 | 기본 | 설명 |
---|---|---|
|
|
|
|
|
(SAP-trfc-server 끝점만 해당) |
289.1.9. IDoc List Server 끝점에 대한 옵션
SAP IDoc List Server 끝점(sap-idoclist-server
)은 다음 URI 옵션을 지원합니다.
이름 | 기본 | 설명 |
---|---|---|
|
|
|
|
|
|
289.1.10. RFC 및 IDoc 끝점 요약
SAP 구성 요소 패키지는 다음과 같은 RFC 및 IDoc 엔드포인트를 제공합니다.
sap-srfc-destination
JBoss Fuse SAP Synchronous Remote Function Call Destination Camel 구성 요소. 이 엔드포인트는 Camel 경로가 SAP 시스템에 대한 요청 및 응답의 동기 전달이 필요한 경우에 사용해야 합니다.
참고이 구성 요소에서 사용하는 SRFC 프로토콜은 최상의 노력 으로 SAP 시스템에 대한 요청 및 응답을 제공합니다. 요청을 전송하는 동안 통신 오류가 발생하는 경우 수신 SAP 시스템의 원격 함수 호출의 완료 상태는 의심스럽 다.
sap-trfc-destination
JBoss Fuse SAP Transactional Remote Function Call Destination Camel 구성 요소. 이 끝점은 요청을 최대 한 번 수신 SAP 시스템에 전달해야 하는 경우에 사용해야 합니다. 이를 위해 구성 요소는 경로 교환에서 구성 요소를 통해 전송되는 모든 요청을 구성하는 트랜잭션 ID인
tid
를 생성합니다. 수신 SAP 시스템은 요청을 전송하기 전에 요청과 함께 제공되는 트id를 기록합니다; SAP 시스템이 요청을 전송하면 해당 요청을 전송하지 않습니다.따라서 경로가 이 구성 요소의 끝점을 통해 요청을 보낼 때 통신 오류가 발생하면 동일한 교환 내에서 요청을 다시 시도할 수 있습니다. 이는 한 번만 전달되고 실행됩니다.
참고이 구성 요소에서 사용하는 tRFC 프로토콜은 비동기적이며 응답을 반환하지 않습니다. 따라서 이 구성 요소의 엔드포인트는 응답 메시지를 반환하지 않습니다.
참고이 구성 요소는 끝점을 통한 일련의 요청 순서를 보장하지 않으며 이러한 요청의 전달 및 실행 순서는 통신 오류 및 요청 재전송으로 인해 SAP 시스템에 따라 다를 수 있습니다. 보장된 전달 주문은 JBoss Fuse SAP Queued Remote Function Call Destination Camel 구성 요소를 참조하십시오.
sap-qrfc-destination
JBoss Fuse SAP Queued Remote Function Call Destination Camel 구성 요소. 이 구성 요소는 끝점을 통해 요청 전달 보장을 추가하여 JBoss Fuse Transactional Remote Function Call Destination camel 구성 요소의 기능 을 확장합니다. 이 끝점은 일련의 요청이 서로 종속되어 최대 한 번 순서대로 수신 SAP 시스템에 전달해야 하는 경우에 사용해야 합니다. 구성 요소는 JBoss Fuse SAP Transactional Remote Function Call Destination Camel 구성 요소와 동일한 메커니즘을 사용하여 최대 한 번 제공 보장을 수행합니다. 주문 보장은 SAP 시스템에서 수신한 순서대로 요청을 인바운드 대기열로 serialize하여 수행됩니다. 인바운드 대기열은 SAP 내의 QIN 스케줄러에서 처리합니다. 인바운드 큐가 활성화 되면 QIN Scheduler가 큐 요청을 순서대로 실행합니다.
참고이 구성 요소에서 사용하는 qRFC 프로토콜은 비동기적이며 응답을 반환하지 않습니다. 따라서 이 구성 요소의 엔드포인트는 응답 메시지를 반환하지 않습니다.
sap-srfc-server
- JBoss Fuse SAP Synchronous Remote Function Call Server Camel 구성 요소. 이 구성 요소 및 해당 엔드포인트는 Camel 경로가 SAP 시스템의 요청을 동기적으로 처리하고 대응해야 하는 경우에 사용해야 합니다.
sap-trfc-server
-
JBoss Fuse SAP Transactional Remote Function Call Server Camel 구성 요소. 이 엔드포인트는 Camel 경로에 대한 요청을 대부분 한 번 전송해야 하는 경우 SAP 시스템을 전송해야 합니다. 이를 위해 송신 SAP 시스템은 구성 요소의 끝점으로 보내는 모든 요청을 구성하는 트랜잭션 ID인
tid
를 생성합니다. 전송 SAP 시스템은 먼저 지정된tid
가tid
와 연결된 일련의 요청을 보내기 전에 해당 구성 요소에 대해 확인합니다. 구성 요소는 유지 관리하는 통신 목록을 확인하고, 해당 목록에 없는 경우 전송된tid
를 기록한 다음 전송 SAP 시스템에 응답하여tid
tid
가 이전에 기록되지 않은 경우에만 일련의 요청을 보냅니다. 이를 통해 전송 SAP 시스템은 일련의 요청을 camel 경로로 안정적으로 보낼 수 있습니다. sap-idoc-destination
- JBoss Fuse SAP IDoc Destination Camel 구성 요소. 이 엔드포인트는 Camel 경로가 SAP 시스템에 중간 문서(ID) 목록을 보내는 데 필요한 경우 사용해야 합니다.
sap-idoclist-destination
- JBoss Fuse SAP IDoc List Destination Camel 구성 요소. 이 엔드포인트는 Camel 경로가 중간 문서(IDocs) 목록 목록을 SAP 시스템으로 보내는 데 필요한 경우 사용해야 합니다.
sap-qidoc-destination
- JBoss Fuse SAP Queued IDoc Destination Camel 구성 요소. 이 구성 요소 및 해당 엔드포인트는 Camel 경로가 중간 문서(ID) 목록을 SAP 시스템에 전송해야 하는 경우에 사용해야 합니다.
sap-qidoclist-destination
- JBoss Fuse SAP Queued IDoc List Destination Camel 구성 요소. 이 구성 요소 및 해당 엔드포인트는 comel 경로가 중간 문서(ID) 목록 목록을 SAP 시스템에 전송해야 하는 경우에 사용해야 합니다.
sap-idoclist-server
-
JBoss Fuse SAP IDoc List Server Camel 구성 요소. 이 엔드포인트는 SAP 시스템을 Camel 경로로 전송해야 하는 경우 중간 문서 목록을 제공해야 하는 경우에 사용해야 합니다. 이 구성 요소는 tRFC 프로토콜을 사용하여
sap-trfc-server-standalone
퀵 스타트에 설명된 대로 SAP와 통신합니다.
289.1.11. SAP RFC 대상 끝점
RFC 대상 끝점은 SAP에서 이러한 끝점을 통해 RFC를 호출할 수 있도록 하는 SAP에 대한 아웃 바운드 통신을 지원합니다. RFC 대상 끝점은 SAP 인스턴스에 대한 특정 연결에 대해 특정 ABAP 함수에 대한 RFC 호출을 수행하도록 구성되어 있습니다. RFC 대상은 아웃바운드 연결의 논리적 지정이며 고유한 이름을 갖습니다. RFC 대상은 대상 데이터 라고 하는 연결 매개 변수 집합에 의해 지정됩니다.
RFC 대상 끝점은 SAP 호출에서 해당 요청을 수신하고 디스패치하는 IN-OUT 교환의 입력 메시지에서 RFC 요청을 추출합니다. 함수 호출의 응답은 교환의 출력 메시지에서 반환됩니다. SAP RFC 대상 끝점은 아웃바운드 통신만 지원하므로 RFC 대상 끝점은 생산자 생성만 지원합니다.
289.1.12. SAP RFC 서버 끝점
RFC 서버 끝점은 SAP의 ABAP 애플리케이션이 서버 끝점에 대한 RFC 호출을 수행할 수 있도록 SAP의 인바운드 통신을 지원합니다. ABAP 애플리케이션은 원격 함수 모듈인 것처럼 RFC 서버 끝점과 상호 작용합니다. RFC 서버 끝점은 SAP 인스턴스에서 특정 연결을 통해 특정 RFC 함수에 대한 RFC 호출을 수신하도록 구성되어 있습니다. RFC 서버는 인바운드 연결에 대한 논리적 지정이며 고유한 이름을 갖습니다. RFC 서버는 서버 데이터 라고 하는 연결 매개 변수 집합에 의해 지정됩니다.
RFC 서버 끝점은 들어오는 RFC 요청을 처리하고 IN-OUT 교환의 입력 메시지로 전달합니다. 교환의 출력 메시지는 RFC 호출의 응답으로 반환됩니다. SAP RFC 서버 끝점은 인바운드 통신만 지원하므로 RFC 서버 끝점은 소비자 생성만 지원합니다.
289.1.13. SAP IDoc 및 IDoc 목록 대상 끝점
IDoc 대상 끝점은 SAP에 대한 아웃 바운드 통신을 지원하므로 IDoc 메시지에서 추가 처리를 수행할 수 있습니다. IDoc 문서는 SAP가 아닌 시스템과 쉽게 교환될 수 있는 비즈니스 트랜잭션을 나타냅니다. IDoc 대상은 대상 데이터 라는 연결 매개 변수 집합에 의해 지정됩니다.
IDoc 목록 대상 끝점은 IDoc 대상 끝점과 유사합니다. 처리하는 메시지는 IDoc 문서 목록으로 구성되어 있습니다.
289.1.14. SAP IDoc 목록 서버 끝점
IDoc 목록 서버 끝점은 SAP에서 인바운드 통신을 지원하므로 Camel 경로가 SAP 시스템에서 IDoc 문서 목록을 수신할 수 있습니다. IDoc 목록 서버는 서버 데이터 라고 하는 연결 매개 변수 집합에 의해 지정됩니다.
289.1.15. meta-data 리포지토리
meta-data 리포지토리는 다음과 같은 유형의 메타 데이터를 저장하는 데 사용됩니다.
- 함수 모듈에 대한 인터페이스 설명
- 이 메타 데이터는 JCo 및 ABAP 런타임에서 RFC 호출을 확인하여 이러한 호출을 디스패치하기 전에 통신 파트너 간 데이터 형식 안전한 전송을 보장하기 위해 사용됩니다. 리포지토리는 리포지토리 데이터로 채워집니다. 리포지토리 데이터는 이름이 지정된 함수 템플릿의 맵입니다. 함수 템플릿에는 모든 매개변수와 함수 모듈로 전달되는 입력 정보를 설명하는 메타 데이터가 포함되어 있으며 설명된 함수 모듈의 고유한 이름이 있습니다.
- IDoc 유형 설명
- 이 메타 데이터는 IDoc 문서를 통신 파트너로 전송하기 전에 올바르게 포맷되도록 IDoc 런타임에서 사용합니다. 기본 IDoc 유형은 이름, 허용된 세그먼트 목록, 세그먼트 간의 계층적 관계에 대한 설명으로 구성됩니다. 일부 추가 제약 조건은 세그먼트에 부과될 수 있습니다: 세그먼트는 필수 또는 선택적일 수 있으며, 각 세그먼트에 대해 최소/최대 범위를 지정할 수 있습니다(해당 세그먼트의 허용된 반복 수 정의).
따라서 SAP 대상 및 서버 끝점을 사용하려면 RFC 호출을 전송하고 수신하기 위해 리포지토리에 액세스해야 하며 IDoc 문서를 보내고 받을 수 있습니다. RFC 호출의 경우 끝점에서 호출하고 처리하는 모든 함수 모듈의 메타 데이터는 리포지토리 내에 있어야 합니다. IDoc 엔드포인트의 경우, 엔드포인트에서 처리하는 모든 IDoc 유형 및 IDoc 유형 확장에 대한 meta-data는 리포지토리 내에 있어야 합니다. 대상 및 서버 끝점에서 사용하는 리포지토리의 위치는 대상 데이터와 해당 연결의 서버 데이터에 지정됩니다.
SAP 대상 끝점의 경우 일반적으로 사용하는 리포지토리는 SAP 시스템에 상주하며 기본적으로 연결된 SAP 시스템으로 설정됩니다. 이 기본값에는 대상 데이터에서 명시적인 구성이 필요하지 않습니다. 또한 대상 엔드포인트가 호출하는 기존 함수 모듈의 저장소에 이미 존재하는 원격 함수 호출의 meta-data가 이미 존재합니다. 대상 끝점의 호출에 대한 meta-data는 SAP 구성 요소에서 구성하지 않아도 됩니다.
반면 서버 끝점에서 처리하는 함수 호출에 대한 메타 데이터는 일반적으로 SAP 시스템의 리포지토리에 존재하지 않으며 SAP 구성 요소에 있는 리포지토리에서 제공해야 합니다. SAP 구성 요소는 이름이 지정된 meta-data 리포지토리의 맵을 유지 관리합니다. 리포지토리 이름은 메타 데이터를 제공하는 서버의 이름에 해당합니다.