반응형
Introduction

With the new POProcessing system in place, Pega’s widget supply business continues to grow rapidly.
However, with growth there are now some problems developing from Customer Support. Recently, Pega’s Customer Support has alerted the IT department there have been complaints regarding certain aspects of the new POProcessing service.

Many Purchase Orders are being rejected due to credit card transactions processing failures. The failure rate has been thirty percent and deemed unacceptable by Mega Corporation, one of Pega’s largest customers. Mega, who should never have a declined credit issue, has escalated to Pega’s Executive Mangement. Rapid improvements must occur in the next 30 days or they will consider switching to another supplier.

Upon investigation of the complaints, Pega’s IT identified two issues:
1. The current Credit Service Validation Service Provider is unreliable and cannot handle the load required by Pega’s growing customer base.
2. Due to the failures, Mega keeps checking status of the PO orders causing unnecessary load and spikes on Pega’s infrastructure.

Upon completion of this Lab, you will learn how Oracle Service Bus can help provide solutions to both issues. OSB will help Pega scale their integration infrastructure through Endpoint Management and Service Result Caching.





Endpoint Management

L4 같은거 처럼 OSB 단에서 Endpoint를 여러개 두고 라우팅 할 수 있습니다. (기능은 미약하겠지만?...)

 


OSB에서 CreditValidation 서비스를 더 추가해봅시다.

저는 아래와 같이 파티션만 나워서 같은 서비스를 하나 더 등록했습니다.



파티션 만드는 법은 soa-infra 에서 마우스 오른쪽 버튼 클릭 - Manage Partitions 선택



"Create" 버튼 클릭 후 파티션 이름을 입력하면 만들어집니다.



이제 OSB 콘솔로 접속해서 세션을 생성합니다.



Porject Explorer - Credit_Services - ProxyServices 이동 후 validationForCC 선택


"Transport Configuratinn"을 수정합니다.



또 하나의 WSDL 주소를 추가합니다.



아래와 같이 두개의 서비스 대상이 추가되었습니다. Next 클릭.


Save 클릭.



Operations - Dashboard - Service Health 탭으로 이동 후 "validationForCC"을 선택합니다.


"Endpoint URIs" 탭을 보면 아래와 같이 확인할 수 있습니다. 현재는 실행된게 없군용...


수정사항 적용 후 테스트 해봅시다.

Project Explorer - Credit_Services - ProxyServices 에서 "ValidateCredit"를 테스트 합니다.

카드번호: 1234-1234-1234-1234


총 10번을 테스트 해봅니다.

그 후 EM에서 인스턴스가 실행된 결과를 보면 아래와 같이 5번씩 번갈아서 실행된 것을 볼 수 있습니다.


이번에는 dummy 파티션의 validationForCC 조합을 배치 해제 하겠습니다.




OSB 콘솔에서 다시 10번을 테스트 해보면 default 파티션쪽의 서비스 5번만 실행된 것을 볼 수 있습니다.


정리해보면 아래와 같습니다. 에러가 나든 말든 무조건 분기 하는군요.. ㄷㄷ..



에러가 난것은 패스되게 할 수 없을까? -_-;; 물론 있습니다!

"BusinessServices"에 "validationForCC"을 수정합시다.

"Operational Settings" 탭에 보면 "Offline Endpoint URIs" 라는 부분을 활성화 시키면 됩니다.

아래와 같이 설정을 하게되면 최초 한번은 그냥 시도를 하고 에러가 났을 때 5분 동안은 다시 그 서비스를 부르지 않습니다.

5분이 지나면 다시 한번 시도합니다.


10번을 다시 테스트 해보면 default 파티션으로 9번이 실행 되었습니다.

1번은 dummy 파티션쪽 서비스를 실행하다가 에러가 난 것입니다.



2번째 실행에서 dummy 파티션의 서비스가 없어서 에러가 나고 3번째 부터는 정상적인 것으로 라우팅을 하게 됩니다.



다시 상태를 봐보면 Offline으로 표시가 되는군요.. 흠...





Service Result Caching

제목에 모든 설명이 다 나와있군요...

처리시마다 조회되는 (하지만 별로 변하지 않는) 서비스는 캐시를 이용해서 처리되는 시간을 단축시켜봅시다!

아래 글미과 같이 A 서비스와 B 서비스와의 결과 값이 항상 같다면 A에서 받은 결과를 캐시에 담아놨다가 B에 요청하려고 하면 캐시에 담아져있는 데이터를 사용하면 되겠습니다. (맞나? -_-)


OSB 콘솔에서 세션을 생성합니다.



System Administration - Import 에서 chap-2B_starting-caching.jar 파일을 입포트합니다.



Import 버튼 클릭.


수정사항을 적용 합니다.



※ 만약 주소나 포트가 틀리면 아래와 같이 Endpoint URI 부분을 수정해줘야 합니다.


Resource Browser 로 이동합니다.



GetPO 선택.


"Message Handling Configuration" 을 수정합니다.


"Advanced Settings"을 확장합니다.


"Result Caching"을 활성화 하고, 시간 간격을 1분으로 서정합니다.

"Cache Token Expression"은 "$body/po:PO_ID" 입력.


Save 버튼 클릭.



POStatus - ProxyServices 에서 "GetPO"의 메세지 흐름을 수정합니다.


"GetPO" 클릭 - "Add Pipeline Pair" 선택


"Response Pipeline" 클릭 - "Add Pipeline Pair" 선택


stage1 클릭 - "Edit State" 선택


"Add an Action" 클릭 - Message Processing - Replace 선택


"variable"에 "header" 입력 후 <Expression> 클릭.



아래와 같이 입력 후 Save 버튼 클릭
<caching-metadata>
<cache-originated>{$outbound/ctx:transport/ctx:response/tp:cache-originated/text()}</cache-originated>
<cache-token>{$outbound/ctx:transport/ctx:response/tp:cache-token/text()}</cache-token>
</caching-metadata>


"Replace node contents" 선택.



"Save All" 버튼 클릭하여 모두 저장 후 수정사항을 적용합니다. (Activate)

테스트 해봅시다.


"2222" 입력 후 Execute 버튼 클릭.



cache-originated[각주:1] 값이 false 입니다. 캐쉬 데이터가 아니라는 것이죠!


1분 내에 다시 테스트를 해봅니다.

이번에는 캐쉬된 데이터라는군요 ㅎㅎㅎ





  1. 비롯되다, 유래하다 [본문으로]
반응형
//
반응형
Introduction

BPEL 로 만들어진 "POProcessing"에 OSB를 연동하는 연습해 보겠습니다.

아래와 그림과 같이 두개의 서비스(Composite)이 있습니다.

"POProcess" 서비스로 주문 요청이 들어왔을때 일정 가격 이상이면 "CreditCardValidation" 서비스에 카드상태를 조회하는 흐름입니다.



OSB를 이용하여 "POProcessing"에서 "CreditCardValidation"를 직접 부르지 않고, OSB를 거쳐가는 흐름으로 바꿔보겠습니다.




Prerequisites

완성된 "POProcessing"을 가져다가 사용해야 하기 때문에 정상적으로 돌아가려면 JMS Moudle, DataSouce 를 설정해야 합니다.

설정하는 방법은 여기를 참조하세요. (암호: 0le0kype)

※ WebLogic 10.3.4 에서 데이타소스 설정 부분이 조금 바꼈습니다. 처음 생성할 때 "Geneirc Data Source" 을 선택합니다.



※ soademoDatabase 만들 때 타겟을 admin 과 soa_server1 두개 다 선택해 주세요.


POProcessing 를 만들어보려면 여기를 보세요.



Setup and Deploy Composites


일단 Jdeveloper에 서버(SOA+OSB)를 등록합시다.

FIle - New 또는 아래와 같이 선택합니다.


"Connections" 카테고리에서 "Application Server Connection"을 선택합니다.


계정과 비밀번호 입력.


서버의 주소와 포트 도메인명 입력.


"Test Connection" 버튼을 클릭해서 아래와 같이 모두 "success"가 나와야 하겠습니다.


등록 완료.



Resource Palette 에서 확인해보면 등록이 되어있습니다.


※ 만약 리소스 팔레트가 보이지 않으면 메뉴에서 View - Resource Palette




아래 3개의 SOA Composite 을 불러와서 서버에 배치(Deploy)해야 합니다.
    1. POProcessing - 주문을 받아서 마지막에 배송정보를 JMS에 주문을 등록.
    2. CreditCardValidation - POProcessing 에 요청된 주문이 일정 가겨 이상이면 카드 상태 조회
    3. ConsumeJMSFulfillmentApp - JMS 에 등록된 배송 정보를 뽑아내서 파일로 등록

Application 메뉴에서 "Open Application"을 선택합니다.



POProcessing.jws 파일을 불러옵니다.


예전 버전에서 만들어진거라고 최신꺼에 맞게 마이그레이션 한다고 합니다. Yes 클릭.


"POProcessing" 어플리케이션 안에 "ApproveTaskDetails", "POProcessing" 프로젝트 두개가 들어 있습니다.

"ApproveTaskDetails" 프로젝트는 "POProcessing" 프로젝트의 흐름에서 사용자에게 승인을 받는 Human Task 에서 사용하는 화면인 ADF 프로젝트입니다. (자동 생성 된것 -_-)

근데 이것이 마이그레이션이 제대로 안되서 배치하려고 하면 에러를 뿜습니다.

그래서 저 ADF 프로젝트는 삭제 후 다시 생성하겠습니다.


실제 파일까지 삭제합니다.


POProcessing 프로젝트의 composite.xml 파일을 열어 편집합니다.



ManualPOApproval (Human Task) 컴포넌트를 더블클릭하여 수정합니다.



편집창 상단에 Create Form - Auto-Generate Task Form 선택.



프로젝트명 설정 후 확인.


아래와 같이 화면이 자동으로 생성됩니다.


프로젝트도 생성되었습니다.



다시 POProcessing 프로젝트의 composite.xml 편집창으로 와서 WriteApprovalResults(File Adapter) 컴포넌트를 수정합니다.



Next로 넘기다가 5단계(Step 5)에서 파일이 저장될 위치를 적절히 설정합니다.



getStatusByCC.wsdl 파일을 편집해야 합니다.

파일을 더블클릭해서 연 후 편집창 아래쪽 Source 탭을 선택한 후 아래와 같이 soa_server의 포트로 바꿔줍니다.


모두 저장 후 서버에 배치(Deploy) 합니다.

POProcessing 프로젝트에서 마우스 오른쪽 버튼 클릭 - Deploy - POProcessing...


Deploy yo Application Server (기본 선택) 선택 후 Next


Overwrite 선택 후 Next. (당장은 처음 올리는 것이기 때문에 체크 안해도 됨)



아래와 같이 연관된 프로젝트도 같이 배치합니다.


배치할 서버를 선택합니다.


배치할 서버내의 파티션을 선택합니다.

11.1.1.3.0 부터는 파티션이라는 것이 생겨서 그룹(?)을 나눌 수 있습니다.


배치 ㄱㄱ



CreditCardValidation.jws 파일(Application 파일)을 불러옵니다.



getCreditValidation (Dataase Adapter) 컴포넌트를 수정합니다.



커넥션 정보가 없기때문에 에러가 날 것입니다. 일단 OK


상단에 Connection이 비어있습니다. 추가 버튼 클릭



아래와 같이 적절한 정보를 입력합니다.



아래에 JNDI Name 을 입력합니다.

※ 서버에 배치된 조합 인스턴스에서 실제로 사용되는 자원은 저 JNDI Name을 룩업(Lookup)합니다. 중요!!!


모두 저장 후 배치합니다.

ConsumeJMSFulfillmentApp.jws 파일을 불러 온 후 WriteFileFulfillmentMessage (File Adapter) 컴포넌트를 편집합니다.



5단계에서 저장될 위치를 적절히 수정합니다.


모두 저장 후 배치합니다.

배치한 조합이 잘 작동하는지 확인 해봅시다.

EM에 접속해서 아래와 같이validationForCC(CreditCardValidation) 조합을 선택 후 상단에 "Test" 버튼 클릭.


CCNumber 에 "1234-1234-1234-1234" 를 입력 후 "Test Web Service" 버튼을 클릭.



아래와 같이 응답이 "VALID" 로 나와야 정상입니다.




Configure Service Bus

이제부터 OSB(Oracle Service Bus)를 사용하게 됩니다.

osb console 로 접속합니다.

왼쪽 상단에 Change Center 박스 안에 "Create" 버튼을 클릭합니다.

OSB 에서 하나의 작업 단위(Session)를 관리합니다. 나중에 이 작업을 롤백할 수도 있고 한답니다.

(원문: Click Create button in left hand corner of screen to start a new session. In OSB, all changes are done
in a sandbox called a session. You first create the sandbox by creating a session in the change center.
After a set of related changes are done, you deploy all the changes in the session as a unit by clicking
Activate in Change Center.)



다 수정한 후에는 다시 "Activate" 버튼을 클릭하여 수정 사항을 적용시켜야 합니다.



먼저 왼쪽 하단의 메뉴중 "System Administration" 을 선택합니다.



Import Resources 를 클릭 후 (기본 선택됨) "chap-1-starting-sbconfig.jar" 파일을 임포트합니다.



"Import" 버튼을 클릭합니다.


"Active" 버튼을 클릭해서 수정사항을 반영합니다.


어떤 작업을 했는지 설명을 남길 수 있군요.. Submit


"Project Explorer"를 선택합니다.



세션을 생성하고 "Credit_Services" 프로젝트를 선택합니다.


"ProxyServices" 폴더를 생성합니다.


"Resources" 폴더도 생성합니다.



"Resources" 폴더를 선택합니다.



Create Resource 콤보를 클릭 후 "Resources from URL" 을 선택합니다.



서비스의 WSDL URL 을 알아야 하는데 이 주소는 아래 그림과 같이 EM에서 확인 할 수 있습니다.



알아낸 주소를 "URL/Path"에 입력하고 Resource Name을 입력 후 Next.


Import 버튼을 클릭.

 

"BusinessServices" 폴더를 선택합니다.


"Business Service"를 생성합니다.



"Service Name" 입력 후 WSDL "Web Service" 오른쪽의 Browse 버튼을 클릭합니다.



"ValidateCredit_WSDL"을 클릭합니다.


Ports 아래에 있는 "execute_pt"를 선택합니다.


Last 버튼을 클릭합니다.


아래쪽의 Save 버튼을 클릭합니다.


다시 Project Explorer - Credit_Services - BusinessServices 까지 이동합니다.



"Operational Settings" 탭을 선택합니다.


"Monitoring" 부분에 모니터링을 활성화 시키고 주기는 25분으로 설정후 Update 버튼을 클릭합니다.



수정사항을 반영합니다.



작업 내용 입력!



등록한 Business Service 가 동작하는지 테스트 해봅시다.


CCNumber 태그 안에 카드 번호(1234-1234-1234-1234)를 입력후 "Execute" 버튼을 클릭.


아래와 같이 결과가 잘 나와야 합니다. ㅎㅎ



다시 세션을 활성화 시킨 후 Project Explorer - Credit_Services - ProxyServices 까지 이동 후 "Proxy Service"를 생성합니다.


Service Name 입력 후 Business Service 오른쪽의 Browse 버튼을 클릭합니다.
 


"validationForCC" 를 선택 후 Submit 버튼을 클릭합니다.


Last 버튼을 클릭합니다.


Save 버튼을 클릭합니다.


Activate 버튼을 클릭하여 변경사항을 적용합니다.

이제 이 프록시 서비스가 작동하는지 테스트 해봅시다.


"1234-1234-1234-1234" 입력 후 Execute 버튼 클릭.


정상적으로 나왔습니다.


세션을 활성화 시킨 후 Project Expoloer - Credit_Services - ProxtServies 까지 이동합니다.

ValidateCredit 프록시 서비스의 메세지 흐름(Message Flow)을 수정합니다.



메세지 흐름 편집 화면입니다.

ValidateCredit 클릭 - Add Pipeline Pair 선택
 


아래와 같이 흐름이 추가되었습니다.

Request Pipeline 클릭 - Add Stage 선택


추가된 stage1 클릭 - Edit Stage 선택



Stage 편집 화면에서 "Add an Action" 클릭 - Reporting - Report 선택



아래와 같이 Report 액션이 추가된 것을 볼 수 있습니다.

<Expression> 을 클릭합니다.


textarea 에 $body 입력 후 Save 버튼을 클릭합니다.


"Add a Key" 를 클릭합니다.



Key Name에 "CCNumber"를 입력하고 <XPath> 를 클릭합니다.



변수를 찾아서 입력하는 방법을 이용해봅시다.

화면 왼쪽 아래의 "Variable Structure" 를 클릭합니다.


Select Structure 콤보 선택 - body 선택


CCNumber 를 선택하면 아래쪽 Prperty Inspector 부분에 XPath가 나옵니다.

저 부분을 드래그로 선택 후 "Copy Property"를 클릭하면 textarea에 붙여넣기가 됩니다.


variable 은 "body"를 입력합니다.



Action 하나를 더 추가해야합니다.

Report 아이콘 클릭 - Add an Action - Message Processing - Validate 선택



<XPath> 는 "./*"(쩜슬래쉬별)을 입력, variable은 "body" 입력, <Resource> 를 클릭합니다.



"XMLSchema_1437688841" 을 선택합니다.


Elements 아래의 "creditcardStatusRequest" 를 선택 후 Submit 버튼을 클릭합니다.


Save 버튼을 클릭합니다.


ValidateCredit 클릭 - Add Service Error Handler 선택



Error Handler 클릭 - Add Stage 선택



추가된 stage 클릭 - Edit Stage 선택




"Add an Action" 클릭 - Reporting - Alert 선택



아래와 같이 설정 후 Save 버튼을 클릭합니다.



Save All 버튼을 클릭합니다.


Activate 버튼을 클릭하여 변경 내용을 적용시킵니다.



Re-wrie POProcessing Composite

JDeveloper로 돌아와서 POProcessing 프로젝트를 수정(compsite.xml)합니다.

getCreditCardStatus (Web Service) 컴포넌트를 수정합니다.



WSDL URL 오른쪽의 "find existing WSDLs" 버튼을 클릭합니다.



상단의 콤보를 "Resource Palette" 로 변경 후 아래와 같이 선택합니다.



WSDL URL 이 변경되었습니다.



다시 배치(Deploy) 합니다.



ApproveTaskDetails 프로젝트는 배치 안해도 됩니다.





Test the end-to-end application

이제 정상적으로 "POProcessing - OSB - CreditCardValidation" 으로 처리가 되는지 테스트 해봅시다.

EM에 접속해서 "POProcessing"을 테스트합니다. 데이터는 아래와 같습니다.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/ns/order">
        <ns1:PurchaseOrder>
            <ns1:CustID>1111</ns1:CustID>
            <ns1:ID>2222</ns1:ID>
            <ns1:productName>iPod shuffle</ns1:productName>
            <ns1:itemType>Electronics</ns1:itemType>
            <ns1:price>145</ns1:price>
            <ns1:quantity>30</ns1:quantity>
            <ns1:status>Initial</ns1:status>
            <ns1:ccType>Mastercard</ns1:ccType>
            <ns1:ccNumber>1234-1234-1234-1234</ns1:ccNumber>
        </ns1:PurchaseOrder>
    </soap:Body>
</soap:Envelope>
데이터 입력 후 "Test Web Service" 버튼을 클릭합니다.


음.. 처리하는데 0.9초 걸렸다네요.. "Launch Flow Trace" 버튼을 클릭합니다.



"approveLageOrder" BPEL 컴포넌트에서 - getStatusByCC(CreditCardValidtaion) 서비스를 호출한 것을 확인할 수 있습니다.




"approveLargeOrder" 를 클릭하면, BPEL 흐름을 볼 수 있습니다.



이제 정상적으로 OSB를 거쳐갔는지 확인해봅시다.

osb console 메인 화면에서 "Message Reports" 를 선택합니다.


아래쪽에 보면 입력받은 메세지가 남아있는 것을 확인할 수 있습니다.




반응형
//
반응형
Introduction

WebLogic, OSB, SOA 프로그램 설치는 패스 하겠습니다. 특별한거 없으면 "Next" 만 눌러도 설치 가능...

전 버전(11.1.1.2.0): http://antop.tistory.com/58 (실질적으로 같음)

Oracle Weblogic: http://download.oracle.com/docs/cd/E17904_01/doc.1111/e14142/toc.htm

Oracle Service Bus: http://download.oracle.com/docs/cd/E17904_01/doc.1111/e15017/toc.htm

Oracle SOA Suite: http://download.oracle.com/docs/cd/E17904_01/doc.1111/e13925/toc.htm





※ 저는 로컬 컴퓨터에 도저히 SOA 를 못하겠어서 다른 곳(Linux)에 설치하였습니다. ㅠ_ㅠ



Configure Schema (Repository Creation Utility)

rcu 는 데이터베이스에 붙어서 하는 작업이기 때문에 굳이 로컬에서 하지 않아도 됩니다.

※ 만약 데이터베이스가 Oracle XE 일 경우 아래와 같이 환경변수 설정 후 rcu를 실행해야 합니다.

(원문: If you want to use Oracle XE as your database, you need to set the RCU_JDBC_TRIM_BLOCKS environment variable to TRUE *prior* to running RCU.)

> set RCU_JDBC_TRIM_BLOCKS=TRUE // 환경변수 설정

> echo %RCU_JDBC_TRIM_BLOCKS% // 제대로 등록되었는지 확인
TRUE

> rcu.bat // RCU 실행


입력할 계정은 테이블스페이스, 계정 생성 등등 권한이 있는 계정이어야 합니다.



불행히도 저의 환경은 UTF8이 아니군요.. 이렇게 경고가 나옵니다.


접두어 설정 후 "SOA and BPM Infrastructure" 만 클릭하면 필요한 것까지도 다 선택됩니다.



스키마 비밀번호 설정.





생성 버튼 클릭.


스키마 생성 완료!




Create Domain

$ {ORACLE_HOME}/oracle_common/common/bin/config.sh


아래 그림처럼 3개를 선택합니다. 나머지는 자동 선택됩니다.


도메인 네임 설정.


관리자 계정/비밀번호 설정.



rcu로 만든 스키마를 설정합니다.

공통으로 바꿀 수 있는거는 다같이 선택해서 하면 되고, 따로따로 해야될꺼는 하나씩 선택해서 수정합니다.

마지막 "OSB JMS Reporting Provider"는 Derby 로 되어있는데 아래 그림과 같이 Oracle 디비로 바꿔줍니다.


스키마 테스트에 성공해야 합니다.

이 부분은 나중에 웹로직 콘솔 데이타소스(DataSource)에서 수정할 수 있습니다.



"Administration Server", "Managed Servers, Clusters and Machines" 두가지를 선택.


저는 Admin 서버의 이름과 리스너 포트를 변경하였습니다.


Managed 서버에서 osb_server1 을 삭제하여 어디민에 포함되게 합니다.

그냥 나둬도 되는데.... 분리를 하니까 현재 JDeveloper에서 OSB에서 만든 것(?)들을 불러오지 못하더군요... ㅠ_ㅠ


"soa_server1" 만 남겨두고 Next 클릭. (전 soa_server1 포트를 8011로 변경)


Create 버튼 클릭.


도메인 생성 완료!


반응형
//

How to Download and Install OPatch

Posted at 2011. 3. 22. 14:59 | Posted in Oracle Solution
반응형
오라클 제품을 사용하면서 긴급한 패치들은 OPatch 라는 것을 사용해서 패치를 적용하더군요...

동영상 : https://support.oracle.com/CSP/main/article?cmd=show&type=VIDEO&id=1194734.1:OPatchTool



1) Please download the latest OPatch version from My Oracle Support (MOS)

a) Click on the "Patches & Updates" tab

b) In the "Patch Name or Number" field type 6880880 // 이 번호로 검색을 하면 플랫폼별 OPatch 종류가 나옵니다.

c) In the "Platform" field select the relevant platform // 플램폼까지 선택을 하면 좀더 검색이 수월합니다. (짱 많이 나옴 -_-)

d) Click the Search button.


e) Select the patch that corresponds to the Oracle release installed:

6880880 Universal Installer: Patch OPatch 9i, 10.1
6880880 Universal Installer: Patch OPatch 10.2
6880880 Universal Installer: Patch OPatch 11.1
6880880 Universal Installer: Patch OPatch 11.2

f) Click the Download button // 적당한 버젼을 찾아서 다운로드 합시다!


The option to download patches from our FTP site (updates.oracle.com) is no longer available, but it is
possible to use the wget utility to download patches. For instructions on how to do this, please review
the response to the question "Will customers be able to download patches without having to use the My
Oracle Support interface?" in Note:841055.1.

NOTE: You will need to use the HTML version of My Oracle Support (supporthtml.oracle.com)
rather than the flash version (support.oracle.com) because of a known problem with copying the
patch URL.

2) Upload or move the ZIP file to ORACLE_HOME and unzip it:
 // ORACLE_HOME=/home/weblogic/Oracle/Oracle_SOA1

Example:
==================================================================

% mv p6880880_101000_SOLARIS64.zip $ORACLE_HOME
% cd $ORACLE_HOME
(If an OPatch directory already exist then move it)                                                                        
% mv Opatch OPatch_100057                                                                                                   
% unzip p6880880_101000_SOLARIS64.zip
Archive:  p6880880_101000_SOLARIS64.zip
   creating: OPatch/
   creating: OPatch/docs/
  inflating: OPatch/docs/FAQ        
  inflating: OPatch/docs/README.txt 
  inflating: OPatch/docs/Users_Guide.txt 
  inflating: OPatch/docs/bt1.txt    
  inflating: OPatch/docs/bt2.txt    
  inflating: OPatch/docs/tmp        
  inflating: OPatch/emdpatch.pl     
   creating: OPatch/jlib/
  inflating: OPatch/jlib/opatch.jar 
  inflating: OPatch/opatch          
  inflating: OPatch/opatch.bat      
  inflating: OPatch/opatch.pl       
   creating: OPatch/perl_modules/
  inflating: OPatch/perl_modules/Apply.pm 
  inflating: OPatch/perl_modules/AttachHome.pm 
  inflating: OPatch/perl_modules/Command.pm 
  inflating: OPatch/perl_modules/LsInventory.pm 
  inflating: OPatch/perl_modules/Query.pm 
  inflating: OPatch/perl_modules/RollBack.pm 
  inflating: OPatch/perl_modules/Version.pm 
  inflating: OPatch/perl_modules/XML.pm 
  inflating: OPatch/perl_modules/opatchIO.pm 
  inflating: OPatch/README.txt      
   creating: OPatch/ocm/
 extracting: OPatch/ocm/ocm.zip     
   creating: OPatch/ocm/doc/
  inflating: OPatch/ocm/doc/license.txt 
   creating: OPatch/ocm/lib/
  inflating: OPatch/ocm/lib/emocmutl.jar 
   creating: OPatch/ocm/bin/
  inflating: OPatch/ocm/bin/emocmrsp

% cd OPatch
% opatch version

Oracle Interim Patch Installer version 1.0.0.0.58
Copyright (c) 2007 Oracle Corporation. All Rights Reserved..

We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com

OPatch Version: 1.0.0.0.58

(This will vary depending on the version installed)

==================================================================

3) Now you can set the OPatch directory in your PATH variable so you can execute the OPatch command from anywhere.

Example:
==================================================================

For Korn / Bourne shell
% export PATH=$PATH:$ORACLE_HOME/OPatch

For C Shell
% setenv PATH $PATH:$ORACLE_HOME/OPatch

반응형
//
반응형
Introduction

BAM Adapter와 BPEL Sensores를 이용하여 주문을 모니터링(dashboard) 해봅시다~



Creating Dashboards in BAM

http://localhost:9001/OracleBAM에 접속합니다.



Architect 버튼을 클릭합니다.



데이터 객체 클릭 후 하위 폴더 생성을 클릭합니다.

Training을 입력 후 폴더 생성 버튼을 클릭합니다.



계속 버튼 클릭 후, 다시 하위 폴더 생성 클릭 후 End2End-105-POProcessing 생성



/Training/End2End-105-POProcessing 에서 데이터 객체 생성을 클릭합니다.



필드 추가를 이용해서 아래와 같이 생성합니다.

Total 필드는 계산됨을 선택하고 공식 편집을 클릭합니다.



Price * Quantity 를 입력합니다.



나머지 필드도 입력 후 데이터 객체 생성 버튼을 클릭합니다.



계속 버튼을 클릭합니다.



레이아웃을 클릭한 상태입니다.



내용 클릭해보면 아직 데이터는 없습니다. -0-



다시 메인 화면에서 Active Studio 버튼을 클릭합니다.



공유 보고서 탭을 클릭합니다.



새 폴더를 클릭합니다.



Training 입력 후 확인 버튼을 클릭합니다.



생성된 Training 폴더를 더블 클릭해서 들어갑니다.



다시 새 폴더 생성을 클릭합니다.



End2End-105-POPRocessing 입력 후 확인 버튼을 클릭합니다.



생성된 폴더를 더블 클릭해서 들어갑니다.



새 보고서 생성 버튼을 클릭합니다.



위 1개 아래 2개의 영역이 있는 보고서를 선택합니다.



제목 부분을 PO Processing Report로 변경합니다.



첫번째는 갱신 정렬 목록(Updating Ordered List)을 선택합니다.



아래쪽에 설정 창이 뜨는데 먼저 데이터 객체를 선택해야합니다. Training을 더블 클릭합니다.



End2End-105-POProcessing을 더블 클릭합니다.



Orders를 선택 후 다음 버튼을 클릭합니다.



데이터 필드를 모두 선택합니다.



다음 버튼을 클릭합니다.



완료 버튼을 클릭합니다.



두번째 영역은 3D 파이 차트(3D Pie Chart)를 선택합니다.



그룹 기준은 Item Type, 차트 값은 Total, 요약 함수는 Sum을 체크 해제하고 Percentage of Total을 체크합니다.

다음 버튼을 클릭합니다.



보기 속성 변경을 클릭합니다.



보기 제목을 Percentage of Total Sales by Item Type으로 변경 후 확인 버튼을 클릭합니다.



3번째는 3D 막대 차트(3D Bar Chart)를 선택합니다.



기룹 기준은 Status, 차트 값은 Order ID, 요약 함수는 Count를 선택 후 다음 버튼을 클릭합니다.



보기 속성 변경 클릭 후 보기 제목을 Purchase Orders by Status로 변경하고 확인을 클릭합니다.



보고서 저장을 클릭합니다.



저장 위치를 공유보고서/Training/Ene2End-105-POProcessing로 지정 후 확인 버튼을 클릭합니다.



확인 버튼을 클릭합니다.





Configure BAM Adapter on WebLogic Server

웹로직 콘솔(http://localhost:7001/console)에 접속하여 배치 목록으로 이동합니다.

OracleBamAdapter를 클릭합니다.



구성 - 아웃바운드 접속 풀 탭으로 이동합니다.

oracle.bam.adapter.adc.RMIConnectionFactory 를 펼치고 eis/bam/rmi를 클릭합니다.



밤 서버 정보를 입력 후 저장 버튼을 클릭합니다.



※ 미리 .../Oracle_SOA1/soa/BAMPlan 폴더를 생성해 놓읍시다!

배치 계획을 미리 생성한 폴더에 맞춰 저장합니다.



저장 되었습니다.



다시 배치 테이블에서 OracleBamAdapter를 선택(체크)하고 갱신 버튼을 클릭합니다.



완료 버튼을 클릭합니다.





Creating a BAM Connection

JDeveloper로 돌아와서 POProcessing 어플리케이션을 엽니다.

Application Resources 네비게이터에서 Connections에서 오른쪽 버튼 클릭 후 New Connection - BAM 을 클릭합니다.



Name은 기본 이름으로 합니다. Next 버튼을 클릭합니다.



BAM Server 정보를 입력합니다.



Test Connectino 버튼을 클릭해서 모두 success 가 나와야 합니다. Finish 버튼을 클릭합니다.



Orders 데이터 객체가 보이네요~





Adding a BAM Service Adapter

BAM Adapter를 추가합니다.



Service Name: OrderBAMAdapter



Browse 버튼을 클릭합니다.



Training/End2End-105-POProcessing/Orders를 선택합니다.



Operation은 Upsert를 선택하고 Enable Batching을 체크합니다. Key로 _Order_ID를 선택합니다.



JNDI Name은 기본 eis/bam/rmi



Finish 버튼을 클릭합ㅎ니다.



route(Mediator)PO와 OrdersBAMAdapter(BAM Adapter)를 연결합니다.



routePO를 더블 클릭합니다.



OrdersBAMAdapter::writetoBAM 으로가는 Transform을 추가합니다.





아래와 같이 연결합니다.





Testing BAM Integration with the BAM Adapter


다시 배치 후 테스트합니다. Mediator에서 BAM으로 간 것을 볼 수 있습니다.



BAM 데이터 객체 내용을 보하나의 데이터가 입력되었습니다.





Adding BAM Sensors to the BPEL Process

approveLargeOrder(BPEL Process)를 편집합니다.



assignCCNumber(Assign) 액티브를 수정합니다.



Copy Operation을 하나 추가합니다.



편집창 오른쪽 상단에 BPEL로 되어있는것을 Monitor로 변경합니다.



assignCCNumber 액티브에서 오른쪽 버튼 클릭 후 Create - Sensor를 클릭합니다.



Name은 PendingApprovalActivitySensor, Evaluation Time은 Completion을 선택합니다.

Activity Variable Sensors에 Variable을 하나 추가합니다.



Variable XPath 오른쪽에 편집 버튼을 클릭합니다.



outputVariable - payload - Order를 선택합니다.



OK를 클릭합니다.



OK 를 클릭합니다.



assignCCNumber 액티브에 센서 아이콘이 생겼습니다.



Structure 팔레트(BPEL 편집창에서만 보입니다)에서 Sensor Actions를 클릭하고 BAM Sensor Action을 클릭합니다.



Action Name은 PendingApprovalSensorAction 입력, Sensor는 PendingApprovalActivitySensor를 선택합니다.

BAM Data Object 오른쪽에 Browse 버튼을 클릭합니다.



Training - End2End-105-POProcessin - Orders를 선택합니다.



_Order_ID키로 추가하고 Map File을 지정 후 Enable Batching을 체크 합니다.

Map File 오른쪽의 + 버튼을 클릭합니다.



아래와 같이 연결합니다. 아래 함수는 current-Datetime()



센서 하나와 그에 해당하는 센서 액티브를 만들었습니다.



이제 callbackClient 액티브에 Sensor를 추가합니다.



Evaluaion Time을 Activation으로 선택하고 Variable는 outputVariable - Orders를 선택합니다.



CallbackActivitySensor에 해당하는 BAM Sensor Action을 만들겠습니다.



설정은 아래와 같습니다.



아래와 같이 2개의 센서와 센서 액션(BAM)이 만들어졌습니다.





Deploying and Running the Composite

모두 배치 후 테스트합니다.



두번째 주문은 Customer ID가 이름이 들어와 있고, approved가 approved로 되어있는것을 확인할 수 있습니다.

assign 센서에서 Pending 상태로 한번 기록되고, callback 센서에서 approved 상태로 업데이트가 됩니다.





5000원 이상의 주문을 하게 되면 Human Task에 의해서 대기 상태에 걸리게 됍니다.

이때는 assign 센서까지는 거쳤는데 아직 callback 센서를 거치지 않아서 상태가 Pending Approval로 입력이 되어있습니다.



휴먼 테스트를 처리 하고 나면



callback 센서에 의해서 상태가 바뀌게 됩니다.



실시간으로 갱신되는 레포트를 보겠습니다.

BAM 메인에서 Active Viewer 버튼을 클릭합니다.



좌측 상단에 보고서 선택 버튼을 클릭합니다.



보고서를 선택합니다.



짜잔~ -_-/ (좀.. 구림...)






반응형
//
반응형
Introduction

SDO를 사용하는 방법을 알아봅시다~



Preparing for the lab

아래 스크립트를 실행하셔야 합니다.


sqlplus soademo/soademo @create_cstomers_table.sql



Creating the ADFBC Service

어플리케이션을 만듭니다.



Application Name: CustomerSDOApp



Project Name: CustomerSDO



Finish 클릭



CustomerSDO 프로젝트에서 마우스 오른쪽 버튼 클릭 후 New... 클릭



Business Tier - ADF Business Components에 Business Components from Tables를 선택합니다.



Connection을 추가합니다.



Connection 정보를 입력합니다.



SQL Flavor와 Type Map은 Oracle로 놔두고 OK

※ 테스트하는 DB(soademo)가 다른 DB이면 바꿔주세요.



CUSTOMERS 테이블을 선택합니다.



Next 버튼을 클릭합니다.



Customers (SOADEMO.CUSTOMERS)를 선택합니다.



Read-Only View Objects 창에서는 그냥 Next 버튼을 클릭합니다.



Name: CustomerSDOAppModule



Finish 버튼을 클릭합니다.



CustomerSDOAppModule을 더블 클릭합니다. Service Interface를 선택합니다.



+ 버튼을 클릭합니다.



Web Service Name: CustomerSDOService



Next 버튼을 클릭합니다.



CustomersView1을 선택합니다.



CustomersView1 선택하면 Basic Operations 탭에 목록이 나오게 됩니다. 하나도 빠짐없이 다 선택합니다. (스크롤 내려서 선택!)



Finish 버튼을 클릭합니다.





Deploying the service

Configureations을 선택 합니다.



CustomerSDOService를 선택 후 Edit 버튼을 클릭합니다.



Datasource Name: jdbc/soademoDatabase. OK 버튼을 클릭합니다.



Defaut Configuration을 CustomerSDOService로 번경합니다.



모두 저장합니다.

CustomerSDO 프로젝트 선택 후 마우슨 오른쪽 버튼 클릭. Project Properties... 클릭합니다.



Java EE Application에서

Java EE Web Application Name: CustomerSDO-webapp, Java EE Web Context Root: customer-app



Deployment에서 Deployment Profile을 추가합니다.



Archive Type을 Business Components Service Interface로 선택하고 Name은 customerSDOProfiles로 입력합니다.



추가된 customerSDOProfile을 펼치고, MiddelTier (EJB JAR File) 선택 후 Edit 버튼을 클릭합니다.



EAR File을 customer-app.ear 로 변경하고, Enterprise Application Name을 CustomerSDO로 변경합니다.

OK 버튼을 클릭합니다.



OK 버튼을 클릭합니다.



Deploy 합니다.



http://localhost:8001/customer-app/CustomerSDOService로 접속합니다.

아래와 같은 화면이 나오는데, 작업에서 getCustomersView1 선택 후 customerId에 1111을 입력하고 호출 버튼을 눌러봅시다.



결과가 나옵니다. 형식이 지정된 XML을 클릭하면 좀 더 이쁘게 볼 수 있습니다.



이 웹서비스를 POProcessing에서 사용해봅시다.



Using the SDO in POProcessing Composite

POProcessing Composite 편집 화면에서 Web Service를 추가합니다.



전에 추가한 웹서비스의 WSDL URL을 알기 위해서는 서비스 설명을 참조하십시오.를 클릭하거나 뒤에 ?wsdl 을 붙이면 됩니다.



위 URL을 복사합니다.



WSDL URL에 붙여넣기 합니다. 붙여넣기 후 포커스를 다른 곳으로 이동시키면 자동으로 정보를 읽어들입니다.



approveLargeOrder(BPEL Process)를 수정합니다.



Structure 팔레트에서 Variable를 추가합니다.



Name: CustomerInfoEV. Element 선택 후 Browse 버튼을 클릭합니다.



아래와 같이 CustomerSDOService.wsdl에 있는 스키마를 선택합니다.



Entity Variable 채크 후 Partner Link 오른쪽의 Browse 버튼을 클릭합니다.



CustomerSDOService를 선택합니다.



OK 버튼을 클릭합니다.



receiveInput 액티브 아래에 Bind Entity 액티브를 추가합니다.



이름을 BindCustomerId로 변경 후 편집합니다.(더블 클릭)



Entity Variable 오른쪽의 Browse 버튼을 클릭합니다.



CustomerInfoEV를 선택합니다.



Unique Key를 추가합니다.



KeyLocal Part 오른쪽 Browse 버튼을 클릭합니다.



CustomerInfoEV - customersViewSDO - CustomerId를 선택합니다.



Key Value 오른쪽에 Express Builder 버튼을 클릭합니다.



inputVariable - payload - Order - customerId를 선택합니다.



OK 버튼을 클릭합니다.



OK 버튼을 클릭합니다.



Assign 액티브를 BindCustomerId 아래에 추가합니다.



Name: AssignCustomerName. 아래와 같이 Copy Operation을 추가합니다.



Human Task 가 속해있는 Switch 액티브 바로 아래에 Assign 액티브를 추가합니다.



Name: AssignOrderInfo. 아래와 같이 2개의 Copy Operation을 추가합니다.





POProcessing composite 배치 후, 1000~5000 가격의 데이터를 테스트해봅시다.


테스트 후 흐름 추적에서 callbackClient 부분을 보면 고객의 이름이 나온 것을 확인할수 있습니다.



실제 db에서 customers 테이블을 select 해보면 주문정보가 갱신되어있습니다.







반응형
//
반응형
Introduction

Event Driven Network(EDN)으로 인스턴스를 싱행하는 방법을 알아보겠습니다.

JMS, AQ 같은것들로도 된다는거 같네용 ㄷㄷ



Defining the event

Poprocess Composite 편집 화면에서 Event Definition Creation 아이콘을 클릭합니다.



EDL File Name은 POEvents를 입력하고, Events 부분에서 Add an Event 버튼을 클릭합니다.



Element는 po.xsd - PuchaseOrder를 선택합니다.

Name은 NewPO를 입력하고 OK를 클릭합니다.



Events에 NewPO가 추가된 것을 확인하고 OK를 클릭합니다.



자동으로 열리는 POEvents.edl 창은 닫습니다.



다시 POProcessing Composite에 Mediator를 추가합니다.



Name은 receiveNewPO를 입력하고, Template은 Subscribe to Events를 선택합니다.

Subscribe to Events를 선택하게 되면 이떤 이벤트를 읽어(구독)들일건지 설정하는 화면으로 바뀝니다.

+ 버튼을 클릭합니다.



NewPO를 선택합니다. (이미 선택되어져 있습니다.



OK를 클릭합니다.



receiveNewPO(Mediator)와 routePO(Mediator)를 연결합니다.



receiveNewPO를 더블 클릭하여 편집합니다.



Transform Using을 만듭니다.









Deploying and testing

아래 파일을 다운로드 받아서 편집합니다. (soa suite 11.1.1.2.0에 클래스패스를 변경한 파일입니다.)



lab 에 나온대로 11.1.1.1.x 쓰시면 아래 파일을 받아주세요



DB_USERID, DB_PASSWD, DB_CONN, ORACLE_HOME 값을 자신에 맞게 변경합니다.

※ 여기서 DB 정보는 RCU를 이용해서 만들었던 DB 정보 입니다.

명령 프롬프트 창에서 ORACLE_HOME 환경변수를 자신의 설치폴더에 맞게 설정합니다.

> set ORACLE_HOME=C:\Oracle\Middleware\Oracle_SOA1

만약 Java 가 실행이 안되다면 설치하시고 java.exe 가 실행이 되게 설정해주세요~

이벤트를 실행해봅시다!


> publish.cmd new_po_event.xml

성공적으로 실행 되었다면 아래와 같은 메시지가 나옵니다.

Creating datasource...
Creating BusinessEventConnectionFactory...
Creating connection...
2010. 8. 12 오후 4:10:47 oracle.integration.platform.blocks.event.jms.ContextHelper lookupContextProviderClass
정보: Context provider properties file not found
Creating Business Event...
Sending event:
<business-event xmlns:ns="http://schemas.oracle.com/events/edl/POEvents" xmlns="http://oracle.com/fabric/businessEvent">
   <name>ns:NewPO</name>
   <id>e4196227-806c-4680-a6b4-6f8df931b3f3</id>
   <content>
      <PurchaseOrder xmlns="http://xmlns.oracle.com/ns/order">
         <CustID>1111</CustID>
         <ID>33412</ID>
         <productName>Sony Bluray DVD Player</productName>
         <itemType>Electronics</itemType>
         <price>350</price>
         <quantity>5</quantity>
         <status>Initial</status>
         <ccType>Mastercard</ccType>
         <ccNumber>1234-1234-1234-1234</ccNumber>
      </PurchaseOrder>
   </content>
</business-event>
Done.

이제 EM에 들어가서 POProcessing 을 확인해보면 인스턴스가 생성된 것을 확인 할 수 있습니다.

흐름 추적을 해보면 receiveNewPO Service에 의해서 실행이 된 것을 확인 할 수 있습니다.



※ lab을 잘 따라 했다면 여기서 성공하지 않고 에러가 나서 복구 대기중일 겁니다.

이유는 Chapter E 에서 했던 보안 정책 때문에 그런데 비활성화하고 하면 잘 됩니다.

또는 그냥 복구 하면 바로 잘 됩니다. 왜 그런지는 저도 잘 -_-;;;







반응형
//

Chapter E - Enforcing Policies

Posted at 2010. 8. 12. 14:15 | Posted in Oracle Solution/PO Processing
반응형
Introduce

서비스에 보안정책을 정하는 방법을 알아봅시다~

- How to attach a policy
- How to secure invocation of a composite using web services security usernametoken(userid/password).
- How to propagate identiry across a multi-composite to an invoked service using SAML[각주:1].
- Communicate signed and encrypted messages.



Policy attachment in console

EM에서 POProcessing Composite을 클릭합니다.



정책 탭을 클릭합니다.



첨부 대상/분리 위치 버튼을 클릭 후 receivePO를 클릭합니다.



사용 가능한 정책 목록에서 "was_username_token_service_policy"를 클릭 후 첨부 버튼을 클릭합니다.



첨부된 정책 목록 확인 후 확인 버튼을 클릭합니다.



이번에는 getCreditCardStatus에 정책을 첨부합니다.



"oracle/wss11_saml_token_with_message_protection_client_policy"를 첨부합니다.



2가지 정책이 첨부 되었습니다.



validationForCC Composite의 getStatusByCC에도 정책을 첨부합니다.



"oracle/wss11_saml_token_with_message_protection_service_policy"를 첨부 합니다.



1가지의 정책이 첨부되었습니다.



POProcessing을 테스트합니다.

테스트를 할때 보안 분에서 "WSS 사용자 이름 토큰"을 선택하고 사용자 이름과, 비밀번호를 입력해야 니다.



입력하지 않거나 틀리면 아래와 같은 에러가 납니다.





A quick look at policy management

EM 왼쪽 메뉴에서 "WebLogic 도메인 - domain1(자기도메인)"에서 오른쪽 버튼 클릭 후 "웹서비스 - 정책"을 클릭합니다.



적용된 정책 목록이 나옵니다.





Policy attachment in JDeveloper

JDeveloper에서 정책을 적요시키는 법을 알아봅시다.

POProcessing에서 receivePO(Web Service)에서 오른쪽 버튼 클릭 후 Configure WS Policies...를 클릭합니다.



Security 부분에서 정책을 추가합니다.



OK를 클릭하면 receivePO(Web Service)에 자물쇠 아이콘에 생긴 것을 확인할 수 있습니다.



getGreditCardStatus(Web Service)와 validationForCC의 getStatusByCC(Web Service)에도 정책을 적용합니다.





getStatusByCC











  1. http://jangsunjin.tistory.com/33 [본문으로]
반응형
//