2018년 5월 28일 월요일

[PO 7.5] Creation JavaProxy in SAP Netweaver Developer Studio


Java Proxy에 대한 주관적인 생각을 담았습니다.

JavaProxy는 UDF(User Defined Function), JavaMapping과 더불어 PO내에 확장된 기능을 만들기 위한 기술인것 같다. 하지만 필자가 JavaProxy를 사용하는 경우는 드물었던것 같다.

JavaProxy를 생성할때 EJB Project에서 하는데 필자가 알고 있는 EJB(Enterprise JavaBeans)는 은행권에 Spring이 보편화되기전에 사용되었던 오래된 기술인걸로 알고있다. 10년전에 EJB라는 용어를 처음 들었던것 같다.

Prerequisites(전제조건)
Single Java Stack
NWDS(SAP Netweaver Developer Studio)

Procedure(순서)
1. ESB(Enterprise Service Builder)에서 Inbound Service Interface 오브젝트를 생성 후 Interface Pattern은 'Stateless (XI30-Compatible)' 선택 후 Point-to-Point를 체크한다.

2. NWDS에 JavaProxy를 위한 EJB Project를 생성하면서 EAR Project도 같이 생성해준다.

3. Inbound Service Interface 오브젝트의 마우스 오른쪽 버튼을 클릭하여  Generate JavaBean Skeleton를 선택 후 구성은 SAP Server, NetWeaver 과 이전 생성한 EAR Project로 완료하면 EJB Project 내에 ImplBean.java에 소스가 자동 생성된다.

4. JavaProxy의 비지니스 로직을 추가 후 SAP Server에 EAR Project를 추가 후 PO를 통해 http://[host]:[port]/MessagingSystem/receive/JPR/XI URL로 호출하면 JavaProxy의 비지니스 로직을 수행 후 결과를 MessageMonitoring에서 확인 가능하다.
* SAP Server에 EAR Project를 추가하는 경우 정상작동하나 Deployment된게 아니다.

Deplotment(배포)
EJB Project에서 SAP EJB JAR File를 EAR Project로 Export한다. EAR Project를 SAP Server에 등록 후 생성된 .EAR파일을 Deploy하면 된다.
* EJB Project에서 SAP EJB JAR File를 Export 필요 없이 SAP Server에 EAR Project를 등록하게 되면 .JAR과 .EAR파일 두개다 생성이 되는것 같다.

Troubleshooting(문제해결)
com.sap.engine.interfaces.webservices.runtimeRuntimeProcessException: Unexpected uriID / Found: BindingData null, interfaceMapping null interfaceDefinition null
JavaProxy 호출시 발생된 에러메시지 이며 ImplBean.java에 @XIEnabled과 @TransportBindingRT 추가시 해결된다.

Reference(참조)
https://blogs.sap.com/2014/01/28/implementing-java-proxy-scenario-on-sap-po/

댓글 없음:

댓글 쓰기

최근글

9월 태안~천안 아이와 3박4일 가족 여행지