레이블이 PI/PO인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PI/PO인 게시물을 표시합니다. 모든 게시물 표시

2022-01-04

log4j 취약점(CVE-2021-XXXXX) PO에는 영향이 없을까?

LOG4J 취약점(CVE-2021-XXXXX)은 무엇일까?

원격코드 실행(RCE: Remote Code Execution)에 취약하다고 하는데.. Java나 log4j에 따라 보안등급이 다른것 같고 취약점이 발견된 버젼과 조치방법에 대해 링크된 사이트에서 자세하게 볼수 있는것 같습니다.
Log4J(Log4Shell) 역대 최악 보안 취약점(CVE-2021-44228) 정리
Apache Log4j Security Vulnerabilities


Log4j 취약점에 대한 PO에서의 대응

기존 XI/PI 그리고 PO는 JAVA기반 플랫폼이라 메시지모니터링이나 다른 관련 메뉴에서 로그출력되는 내용들을 보면 LOG4J 라이브러리를 사용하고 있지않을까 의심되기도 합니다.

그럼 해당 라이브러리는 PO에 어디 위치에 있을까? 궁금해지기도 하는데요.
NWA > Configuration > Infrastructure > Java Class Loader > Viewer > livrary로 검색하면 lib/commons-logging-1.1.1.jar 파일을 볼수 있고 외부사이트에서 같은 버젼의 .jar파일을 다운로드받아 압축을 풀어보면 pom.xml에 log4j가 dependency되어있는걸 볼수 있었던것 같은데.. 해당 취약점과 관련있는지는 잘 모르겠네요.

2021-11-05

What is the cause of HTTP 400 Bad Request?

에러현상

타겟이 SOAP Receiver Adapter에서 종종 아래와 같은 에러를 보게 됩니다.
Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 400 Bad Request

해당 에러에 대해 찾아보면 서버에서 클라이언트의 잘못된 요청, 유효하지 않은 요청메시지, 변조된 라우팅 요청 등 감지해 요청은받았으나 처리하지못하는 거라고 합니다. 쉽게 생각하면 잘못된 클라이언트 잘못된 요청으로 인한 서버에서 처리를 거절하는 것이라고 생각됩니다.

정상로그의 헤더정보와 에러난 로그의 헤더정보를 비교해봤지만 특이사항을 찾을수가 없었습니다.

2021-10-16

SAP PO에서 JDBC Sender채널 실행 시 두개의 노드에서 중복실행이 되는 현상

현상

JDBC Sender채널 실행 시 두개의 서로 다른 노드에서 중복실행(약 0.03초 차이)되는 현상이 발생되며 메시지 아이디가 다른경우가 존재할수 있는것 같습니다.
Adapter Engine > Communication Channel Monitor에서의 다른 시간의 로그에서는 'Retry interval started' 이나 아래의 에러들이 확인되었던것 같습니다.
'already exist in duplicate check table: com.sap.sql.exception.OpenSQLIntegrityConstraintViolationException: [301]: unique constraint violated: Table[BC_MSG_DUP_CHECK]'
그외 어댑터 프레임워크 스케쥴러 상태 페이지(http://<host>:<port>/AdapterFramework/scheduler/scheduler.jsp에서도 특이사항이 없었던것 같습니다.

2021-09-16

java.sql.SQLSyntaxErrorException: ORA-00936: missing expression in sap po

오라클과 연계 시 발생되는 에러코드와 내용은 다른 데이터베이스와 다르게 직관적이고
에러코드를 검색하면 원인과 해결방법에 대해서도 쉽게 확인할수 있어 SAP PO에서 오라클
과 연계한 인터페이스는 테스트가 좀더 수월했던것 같습니다.

하지만 ORA-00936: missing expression(누락된표현식)이라는 에러는 데이터로 발생된
에러가 대부분이고 원인으로는 데이터안에 '(싱클쿼테이션)과 ,(콤마) 등 으로 발생되는데
이번에 발생된 에러는 다른원인이라 정리를 해보았습니다.

Could not find mongo DB connection method in sap po

요즘 대세라고 하는 NoSQL 데이터베이스 그중에 몽고DB를 SAP PO와 연계할수 있는 일이 생길수도 있어 이번에 정리해봤습니다.

몽고DB란?

"몽고DB는 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이다. NoSQL 데이터베이스로 분류된느 몽고DB는 JSON과 같은 동적 스키마형 도큐먼트들을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 한다."

2021-08-21

What is SAP XI/PI/PO System User?

SAP XI/PI/PO에서는 시스템 설치시 관리자나 시스템 유저명을 설정가능 한걸로 알고 있습니다. 이렇게 설정된 유저들은 Enterprise Services Builder, Integration Builder, System Landscape Directory, Runtime Workbeanch, Configuration and Monitoring Home, SAP NetWeaver Administrator 등 툴에서의 개발과 PO메뉴접근시 사용되거나 내부(IS/AE간연결), 외부시스템(레거시, SAP 등)과의 연결시에도 사용되는 사용자 유저와 시스템유저 등이 존재하는 것 같습니다.
각 유저에 어느 목적으로의 사용이나 구체적인 역할에 대해 알지 못하여 이번에 간단하게 정리해봤습니다.

PI 7.3이전과 다르게 이후버젼부터는 유저명은 PI<Component><SID>규칙으로 구성이 되며
각 유저에 대해 정리해보면

2021-08-14

Firewall open port for each adapter of SAP PO with external system

SAP PO에서 소스, 타겟 시스템 간 인터페이스를 연계할때 중간에 방화벽이 존재하는 경우 Adapter별 방화벽 오픈이 필요한 경우가 존재합니다. 각 어댑터별 포트 확인하는 방법 및 관련 내용에 대해 정리를 해보겠습니다. SAP의 포트들은 솔루션이나 플랫폼 설치시 원하는 포트를 지정할수 있는것도 있으며 특이사항이 없는 경우 기본 포트를 사용되는것 같습니다.

내부망에 PO와 SAP, 레거시 시스템이 같이 존재하는 경우 방화벽에 대한 오픈작업은 별도로 요청하거나 설정을 안했던것 같습니다. 하지만 DMZ같은 외부망에 존재하는 시스템이나 PO같은 경우 사전에 방화벽 오픈 작업이 필요할수도 있으며 PO Tool(ESB, IB)이나 어댑터별 포트에 대한 오픈요청을 해당 담당자한테 요청을 해야하는 번거로움이 있을수 있습니다.

DMZ(Demilitarized Zone)이란?

"내,외부 네트워크 구간 사이에 위치한 중간지점으로, 침입차단시스템 등으로 접근 제한 등을 수행하지만 외부 네트워크에서 직접 접근이 가능한 영역을 뜻합니다. 방화벽을 공부하다 보면 내부 네트워크 구간,, 외부 네트워크 구간 그리고 DMZ구간이라는 용어가 등장합니다."
PO개발자가 DMZ에 있는 ESB, IB 관련 툴을 접속하기 위해서는 50004나 50001 포트를 오픈해야할 수도 있으며 해당 포트 확인은 각 repository/directory.jnlp 파일안에 아래와 같이 확인이 가능합니다.
jnlp.com.sap.aii.connect.diretory.rmiport = 50004
jnlp.com.sap.aii.connect.landscape.httpsport = 50001

2021-07-23

Dialog work processes(DIA WP) 란?

DIA WP(Dialog work processes)는 ABAP기반의 IE(Integration Engine)에서 실행 중인 프로세스와 관련이 있는 모든 작업프레스가 사용되거나 관련 리소스가 부족한경우 PO나 PI와 SAP시스템(ERP, MDG...) 간의 연계방식인 Proxy, IDoc, BPM 등의 인터페이스에 병목현상이 보일수도 있다고 하며 DIA를 늘리는것을 권고한다는 내용을 어디선가 본것 같습니다.
통합엔진의 파이프라인 단계에서는 이 작업 프로세스를 사용하여 qRFC LUW를 기반으로 실행된다고 하며 PI의 ccBPM의 Business Process Engine에서도 통합프로세스의 단계를 실행한다고 합니다.

병목현상으로 인해 저체적인 인터페이스의 흐름에 영향을 줄수 있는 부분이며 비동기 메시지를 처리할때 관련있는 SM50, SM66, SMQR의 qRFC scheduler(Qin Scheduler)를 통해 어떤 유저로 인해 장시간 프로세스를 점유하고 있는지 확인이 가능하다고 하며 ABAP기반의 비동기 메시지는 qRFC를 통하여 처리된다고 합니다. 해당 리소스 상태는 SARFC에서 학인 및 모니터링이 가능한데 이런 작업과 확인을 통해 DIA작업 프로세스 수를 튜닝하여 이런 병목현상을 해결하는 경우도 있었던것 같습니다.

2021-07-11

SFTP Adapter Receiver Channel 연결 방법

SAP PO의 EAI 프로젝트를 하다보면 SFTP(Secure File Transfer Protocol)나 FILE 연계방식을 잘 사용해본적이 없던것 같습니다. 이번에 기존 타겟 시스템의 FTP 방식을 SFTP로 변경하는 요청사항이 발생되었으며 SFTP연계작업에 대해 간단하게 정리보았습니다.

요청항목

SFTP에 입력되어야할 필수정보(Server, Port, Username, Password, Filename, Filepath 등)에 대해 요청해서 받아야하며 그외 FTP에 없는
Server fingerpring나 인증서 등에 대한 작업이 추가적으로 필요할수 있을것 같습니다. 그리고 FTP Adapter와 차이점 중 데이터 컨버젼할때 FTP같은 경우 채널에 Message Protocol에 'File Content Conversion'을 선택하게되면 Content Conversion > Parameters를 지정할수 있으며 SFTP인경우 Adapter Module에 'AF_Modules/MessageTransformBean'을 설정하여 셋팅이 가능합니다.

SAP PO의 REST Sender Adapter에서 클라이언트 호출 시 인증문제

현상, 확인과정

Rest Sneder채널의 옵션중
'지금까지 Rest Sender Channel > Channel Selection > Allow public access(no authoriztion required)'
이라는 옵션을 설정하게 되면 Rest Sender채널을 호출하는 모든 클라이언트에서 인증없이 호출이 가능한 상태일거라 생각을 했습니다.
하지만 어느 특정 클라이언트의 IE(Internet Explorer)브라우져에서 PO의 로그인/패스워드를 요청하는 팝업창이 나타나는 현상이 발생되었으며 지금까지 알던 REST채널기능과는 달랐습니다.

'Allow public access(no authoriztion required)'이라는 옵션의 설명을 보게되면
"공개 액세스 허용을 활성화하여 이 채널을 공개 엑세스에 사용할 수 있도록 하며 이 옵션은 발신자채널에 대한 인증을 비활성화
합니다. 그외 CORS(Cross-Origin-Resource-Sharing Request)를 활성화 하여 모든 클라이언트에서 허용하게 만들수도 있으며
특정 클라이언트 URI들만 지정하여 허용지정을 할수 있다고 합니다."

2021-07-05

SAP PO 로그인 편하게 하는 방법(TOOL, NWA, PIMON, SLD)


SAP PO 인터페이스 프로젝트를 하다보면 여러 환경을 경험하게 되는데 특히 PO업무가 진행되는 브라우져에 로그인 아이디/패스워드를 저장못하거나 세션유지 시간이 짧거나 추가로 패스워드 생성 규칙이 복잡한경우 정말.. 하루에도 최소 몇번아니면 몇십번을 PO 개발/품질/운영에 로그인하는 경우가 있어 너무 불편한경우가 있습니다.

그래도 같이 일하시는 분이 로그인할때 좋은 아이디어로 만든걸 공유해줘서 지금은 편하게 로그인할수 있는것 같습니다.

SAP PO작업을 위해 http://<host>:<port>/dir/start/index.jsp를 접속하게 되는데 개발을 위한 ESB(Enterprise Services Builder)와 IB(Integration Builder), 인터페이스 관련 정보(Products, Software Components, Technical/Business Systems)가 있는 SLD(System Landscape Directory), 모니터링을 위한 Configuration and Monitoring Home, PO의 전체적인 시스템설정을 위한 NWA(SAP NetWeaver Administrator) 메뉴들이 있습니다.

2021-06-26

CXF Webservice(SOAP) Provider for File Attachment In JAVA and SAP PO - Server Side

테스트환경

Eclipse Version 2018-12(4.10.0)
JDK 1.8._201
Tomcat 8.5
CXF 3.3.3

SOAP UI -> JAVA(CXF) 파일 전송

1. Webservice(SOAP) Provider 프로젝트 생성

이클립스에서 Dynamic Web Project를 만들어 웹서비스를 위한 클래스와 메서드를 생성
오른쪽 마우스버튼 > Web Service > Create Web Service를 클릭하여 해당하는 메서드의 CXF 웹서비스를 생성하면 WEB-INF 아래 cxf-beans.xml과 WSDL파일이 생성됩니다.

2021-06-11

Difference between PO/PI/XI XML version 0.1 and 1.1


기본적으로 XML포맷으로 인터페이스를 하는 SAP XI/PI/PO에서 소스,타겟 간에 테스트나 운영중인 인터페이스에서 이상한 문자로 인한 매핑에러가 발생되는 경우가 있습니다.
"Character reference &# See error logs for details"
이렇게 XML에서 허용안하는 문자에 대해 가끔 에러가 발생되어 송신측이 SOAP인경우 CDATA로 인한 데이터를 묶어주거나 JDBC인경우 송신측 문제가 되는 데이터를 삭제해주는데 PO에서는 자바매핑으로 해결하는 경우도 있습니다.
근데 이런방법들도 완벽하지 않은게 PO에서는 어떤 문제가 되는 데이터가 유입되는지는 알수 없기에 100% 해결될수 없는 부분이 있다고 생각이 듭니다.

다른 사이트에서 보았는데
SOAP호출시 사용되는 CDATA로 묶이는 데이터에도 허용안하는 문자들로 인해 이클립스 안에서 에러가 발생될수 있다고 하네요.
"An invalid XML character (Unicode: 0xb) was found in the CDATA section"
송,수신간에 OAP연결 방식에도 SOAP버젼이 1.1과 1.2가 존재하는데 이 두개가 W3C(World Wide Web Consortium) 표준이라고 하는데 SOAP 1.1버젼은 XML 1.0이라고 합니다.

2021-05-05

What is 'DB_ENTRY_QUEUING' of SAP Integration Engine?


XI/PI가 듀얼스택일때 타 SAP 시스템과 연계할때 ABAP Proxy방식을 사용하며 Integration Engine을 통해 인터페이스를 했던적이 있습니다. 하지만 현재는 PO의 싱글스텍만 존재하여 PO에서 ECC나 MDG로 전송할때 Adapter Engine를 통해 송신을 하면 타 SAP시스템에서는 Integration Server(IE)를 통해 수신받게 되는 환경이 있습니다.

가끔 SXI_MONITOR이나 SXMB_MONI 티코드를 통해 Integration Engine을 통해 들어오는 메시지들을 모니터링 가능한데 비동기 메시지, 인바운드 큐를 통해 들어오는 메시지들중 처리시간이 유독 오래걸리는것들이 존재할때도 있습니다.

모니터링에서는 설정된 로그레벨에 따라 ABAP Proxy가 처리되는 단계를 확인할수 있는데 지금까지 경험상 상세모니터링 화면의 PerformanceHeader정보에서 'DB_ENTRY_QUEUING' 나 'PROXY_INBOUND_APPLMETH' 의 처리시간이 오래걸리는 현상이 확인된적이 있는데요. ABAP프록시의 각 처리순서에 대해 알아보면 롱처리시간되는 스탭에 대해 해결방법에 대해서 확인해보려고 합니다.

2021-04-27

Resolving an error that occurs when executing the WSDL file Generate Client in Eclipse

SAP PO의 Audit로그를 간단하게 보기위해 Directory API사용을 하려고하는데 'AdapterMessageMonitoringVi' WSDL파일을 사용할때 오류가 발생됩니다.

현상, 에러

Apache CXF 3.3.3버젼으로 사용시 아래와 같은 에러발생
WSDLToJava Error: org.xml.sax.SAXParseException; schema_reference:
accessExternalSchema 속성으로 설정된 제한으로 인해 'http' 엑세스가 허용되지 않으므로 스키마 문서 'ws-addr.xsd' 읽기를 실패했습니다.

2021-03-20

How to delete holding message in sap po 7.5

개요

SAP PO에서는 메시지를 보내는 방식(Quality of Service)이 세가지가 있으며 각 방식에는 동기로 알고 있는 BE(Best Effort), 비동기인 EO(Exactly Once), 순차처리를 위한 방식으로 EOIO(Exactly Once In Order)가 있습니다. 이중에 그냥 에러난 상태로 나두면 나중에 치우기 번거로울수 있는 EOIO의 System Error, Holdding 상태 로그들에 대한 내용을 담아봤습니다.

현재 여러곳에서 PO서버의 부하를 줄이기 위해 아니면 다른 목적으로 소스시스템에서 순차큐를 셋팅하여 EOIO방식으로 데이터를 전송하고 있는 곳들이 있을겁니다. EOIO는 시퀀스대로 처리되기 때문에 앞에 메시지가 시스템에러가 발생되면 뒤의 처리되는 메시지는 처리가 되지 못한 상태에서 홀딩 상태로 남아있으며 관리가 잘되는 PO 운영은 웬만해서는 해당이 안될것 같은데요. 품질이나 개발 서버 같은경우 이런 EOIO 에러에 대해 꾸준하게 관리를 하지 않는 경우 어느날 엄청난 수에 시스템에러와 홀딩상태인 메시지에 깜짝 놀랄수 도 있을것 같습니다.

2021-02-26

Pipeline steps of integration engine in sap PI7.x

SAP PI7.x의 Integration Engine에서 수행하는 Pipeline 스탭별 처리상태를 설명합니다.

Sender Adapter

수신받은 메시지를 XML 메시지 형식으로 변환합니다.

XML Validation

수신받은 메시지에 대해 Data Type에 정의 된 XSD 스키마의 유효성 검증을 진행합니다.

Receiver Determination

라우팅 조건에 따라 수신 시스템(Business System)이 결정됩니다.

How to check sap po CommunicationChannel password externally

일반적으로 SAP PO의 JDBC Communication Channel에 패스워드 항목에 값을 넣게 되면 '*****' 이렇게 보입니다. 그래서 패스워드를 따로 엑셀에 관리를 하거나 채널 디스크립션에 넣어서 확인이 가능한데요. 하지만 시간이 지나고 유지보수 인력이 바뀌면서 이런 접속정보 관리 문서들은 어느세 사라지고 여러 인력들이 개발을 진행하면서 채널의 디스크립션에 넣었던 패스워드는 사라져 패스워드를 못찾아서 난감했던 경우가 있는데 운이좋아 패스워드를 찾게되면 다행이지만 이렇게 패스워드를 관리하다가는 나중에 문제가 생길수도 있겠다는 생각이 들었습니다.

예를 들어 채널에서 패스워드를 관리한다면 PO개발 채널의 디스크립션의 패스워드를 삭제하고 품질이나 운영서버에 이관후에 엑티브하는 하는 경우에 패스워드를 찾을수 없습니다.

그렇다고 해서 SAP PI/PO의 Directory API를 사용해서 외부에서 채널의 정보를 가져온다고 해도 패스워드를 확인할수 없었습니다.

2021-02-19

What is 'Invalid adapter status' in Proxy acknowledgment

SAP PO의 동기 인터페이스를 줄이기 위한 방법 중 비동기로 소스시스템에 Acknowledgment를 전달해주는 방법이 있는데 가끔 PO에서 정상로그인 PROXY to JDBC 패턴의 인터페이스가 소스 SAP시스템의 SXI_MONITOR에서 ACK상태가 'Deferred acknowledgment handling, Invalid adapter status' 로 확인되는 경우가 있습니다. 아래와 같이 여러 상태를 확인해보면 문제는 없어보이는것 같은데 종종 발생되는 이 오류에 대한 궁금증이 생겨 좀더 알아보기로 했습니다.

정상 ack상태인경우 로그에서 'No error in acknowledgment' 로 보이며 에러인경우 'Still awaiting acknowledgment' 로 확인되는데 정상처처리가 안되고 무언가 대기중인 상태인것으로 확인이 됩니다.
하지만 더 자세하게 상태를 확인해봤을때는 정상,에러가 동일하게 Status가 'OK', AckStatus가 077로 확인되는데 이상태는 'message is delivered' 인것 같습니다.

2021-02-03

How to use Java proxy correctly in sap po 7.5

SAP PO7.5의 자바프록시는 JAVA 응용프로그램을 구현하여 동기, 비동기 그리고 아웃바운드, 인바운드 통신을 하여 IS(Integration Server) 또는 AEX(Advanced Adapter Engine Extended)로 메시지를 보낼수 있다고 합니다.
신규 SAP PO를 도입하는 프로젝트에서는 별로 사용할일이 없는데 다른 EAI솔루션을 전환하는 프로젝트에서는 유용하게 사용할일이 많아지는것 같고 보통 PO의 Inbound Service Interface에서 Outbound Java Proxy를 호출하는 케이스를 많이 경험을 했었습니다.

특징

이클립스 기반인 NWA(SAP NetWeaver Developer Studio)에서 자바프록시 생성방법은 이전글을 참고하시면 될것 같은데 검색을 하시면 더 좋은 가이드가 많아서 그사이트를 참고하시면 도움이 되실것 같습니다.
[PO 7.5] Creation JavaProxy in SAP Netweaver Developer Studio

자바프록시는 AS Java 릴리즈 6.4이상에서 자바 프록시 런타임을 설치할수 있다고 하며 동기자바프록시는 관련없지만 소스가 JDBC방식이고 타겟이 자바프록시 인경우 자바프록시를 중복호출이 되지않게 할 필요성이 있습니다.
예를 들어 JDBC Sender 채널의 폴링타임이 60초이고 설정된 조회쿼리에 계속 데이터가 존재한다면 불필요하게 자바프록시를 계속 호출하게 됩니다.

최근글

2026년 7월 3일 데일리 뉴스요약