http://linux-on-sony-vaio-z.wikispaces.com/
https://launchpad.net/~sony-vaio-z-series
위 사이트에서 설치 방법을 자세히 설명하고 있다.
http://www.osgi.org
http://www.springframework.org/osgi
osgi 작년 부터 성재과장님이 괜찮은 프레임워크라고해서 조금씩 맛만 본상태이다
공부를 해야되는데.. springDM을 보면서 제대로 공부한번 해봐야겠다
netstat -na
참 서버에대해서 암것도 몰랐던것 같다 이런 간단한 명령어 조차 모르고 지냈다.
http://d.hatena.ne.jp/amachang/20071010/1192012056
일본어이다 번역기 돌리니 이상하다 ㅜㅜ
1. 먼저 insert 관련 tutorial을 이용해 insert Service를 만든다.
2. insert service에 fault handling 을 추가할것이다.
먼저 insert.wsdl(자신이 처음에 insert관련 tutorial을 했을경우에 생성된 wsdl파일)을 열고
<import namespace="http://schemas.oracle.com/bpel/extension"
location="http://호스트명:포트번호/orabpel/xmllib/RuntimeFault.wsdl"/>
을 추가한다.
이것은 bindingFaults 의 메세지 타입을 정하기 위해 사용된다.
bindingFaults
- application 과 관련된 Fault이며 일반적으로 같은키(pk)의 데이타가 존재할때
insert시도시 발생하는 에러와 같은것이다.
이것은 BPEL Process에 의해 다뤄질수 있다.
remoteFaults
- system related, like trying to insert a row when the network or
database is temporarily unavailable. These can be retried automatically by
configuring your bpel.xml.
system과 관련된 Fault이며 query실행시 네티웍이나 database가 일시적으로 이용할수
없는 상태가 된 경우와 같다.
이것은 bpel.xml을 수정함으로써 자동적으로 재시도를 할수 있다.
<partnerLinkBinding name="BPELSamples">
<property name="wsdlLocation">insert.wsdl</property>
<property name="retryInterval">60</property> --> 재시도간격(60초마다)
<property name="retryMaxCount">60</property> --> 최대 60번까지만
</partnerLinkBinding>
3. scope activity를 drag & drop 한후에 invoke및 assign을 넣는다 (insert service생성시 만든것)
4. scope의 Add Catch Branch를 클릭후에 fault handler를 더블클릭 한다.
5. Set Namespace URI to: http://schemas.oracle.com/bpel/extension
6. Set Local Part: to bindingFault
7. Create the Fault Variable
- 2가지 방법이 있다.
- 첫번째 방법
type에 AdapterException 입력후 클릭... Browse Fault Variables은 클릭하지 않는다.
.bpel file을 열고 <variables> element 에
<variable name="AdapterException" messageType="bpelx:RuntimeFaultMessage"/> 을
입력한다.
- 두번째 방법
Browse Fault Variables를 클릭후에 Variables선택후 Create 버튼 클릭
name 에 AdapterException 입력
message types 선택하고 Browse Message Type 클릭
Type Explorer
Message Types
Partner Links
client
InsertWithCatch.wsdl
Imported WSDL
RuntimeFault.wsdl
Message Types
RuntimeFaultMessage
선택
8. fault handler안에 scope activity를 추가한후 case 더블클릭한다.
9. bpws:getVariableData('AdapterException','code') = '1' 입력
1은 ORA-00001의 1을 가리킨다.
duplicate insert
ORA-00001: unique constraint (SCOTT.MOVIES_PK1) violated
10. Scope안에 invoke를 양쪽에 추가한다.
11. 두개의 invoke를 생성한 partnerLink(DBAdapter)에 연결을 한다.
12. operation은 merge이며 변수는 자동생성이 아닌 기존에 invoke에서 사용한 변수를 이용한다.
- 원래 insert만 수행하는 invoke에 fault handling을 이용하여 동일 데이타 발생시
merge를 수행하게되며 fault handling을 사용안하고 그냥 merge만 사용하여 process를
생성하는것보다 수행속도 면에서 많은 이점을 얻을수 있다.
즉 3개의 invoke는 처음에 assign된 값을 이용해서만 DB와 통신을 하므로 처음에만
같은 변수를 이용해 사용한다.
13. (90%) Do insert
(10%) Try insert
Do merge
-perform existence check on each row (if check database on)
-read each row from the database
-perform an update or insert
vs.
(100%) Do merge
-perform existence check on each row (if check database on)
-read each row from the database (if exists)
-perform an update or insert
일반적으로 90%의 신규데이타는 insert를 수행하고 나머지 10%정도의
데이타는 merge(update)를 수행하므로 merge시에 생기는 속도및 perfomance는
100% 모두 merge하는것보다 성능에서 우월할수 있다.
1.("CustomerService" Scope)에서 ShipTo를 초기화 시켜주는 assign을 빼고 테스트 데이터에
<ns2:ShipTo>
<ns2:Name>
<ns2:First/>
<ns2:Last/>
</ns2:Name>
</ns2:ShipTo>
추가시켜서 먼저 초기화 시켜주어야 한다.(버그가 일어나 프로세스가 실행이 않됨)
2.("RequiresManualApproval" Decide Activity)를 만들때 처음 만들면 튜토리얼에서 보이는 형태로
보이지 않음 그래서 jdev에서 source를 한번 보고난후 다시돌아오면 정상적으로 보임.
3.("requiresApproval" Switch)에서 휴먼테스크를 만든후 밑에 만들어진 ("taskSwitch" Switch)에서 실행시 오류가 난다
이것은 source에서 한번 taskSwspitch를 제거후 툴에서 다시스위치를 생성 그다음 그스위치가 생성된자리에 taskSwitch를
다시 만들어 놓으면 문제해결.
4.("SelectSupplier" Scope)에서 RapidService.wsdl파일을 임포트할때 먼저 엔드포인트와 wsdl주소를 확인하고 넣어야
된다.
오라클 튜토리얼 보고 따라하다 한참 헤딩후에 알게 된것들 요즘 투토리얼이 좀 바꼈던데 ㅜㅜ
Clob insert 시에 문제가 있는데 구글 검색하니깐 몇까지 해볼만한 방안들이 있었다
근데 처음에 찾은 방식인 toplink를 바꿔 주니깐 문제없이 데이터가 들어감
toplink 에서 이것을
--------------------------------------------------------------
<opm:attribute-classification>[C</opm:attribute-classification>
-------------------------------------------------------------
이것로 바꿔줌
---------------------------------------------------------------------
<opm:attribute-classification>java.sql.Clob</opm:attribute-classification>
---------------------------------------------------------------------