2011-06-14 4 views
1

BPEL에서 bpelx : exec를 통해 Java 클래스를 호출하고 있습니다. 클래스가 특정 오류 (파트너 링크 중 하나에서 BPEL에 알려짐)를 던질 수 있으면 많은 작업을 단순화합니다. AdapterFault라고 부르 자. AdapterFault는 wsimport에 의해 생성되고 Exception 하위 클래스입니다.Oracle BPEL Server : BPEL Java 콜 아웃에서 폴트를 던지려면?

여기 임베디드 자바 블록 내 코드입니다 : 나는 AdapterFault을 던지는으로 자바 메소드를 선언 할 때

Object wfr = getVariableData("inputVariable","request"); 
Object req = getVariableData("V_CreateServiceRequest","createTNRequestPart"); 

somepackage.EndpointIterator it = 
new somepackage.EndpointIterator(); 

it.setWFRequest(wfr); 
it.setPlatformName("MMSC"); 
it.setOperationName("createTN"); 
it.setRequest(req); 

Object reply = it.invoke(); 

setVariableData("V_CreateServiceResponse","createTNResponsePart",reply); 

의 BPEL은 예외를 불평하는 캐치되지 않는 것입니다 배포 거부합니다. Java 콜 아웃 단계는 BPELFault 만 선언하는 것 같습니다.

catch (AdapterFault) 대신 CatchAll 블록으로 이동하는 RuntimeException 만 throw 할 수 있습니다.

자바 콜 아웃에서 체크 된 폴트를 던지는 간단한 방법이 있습니까?

+0

WSIF 바인딩 또는 bpelx : exec 중 어떤 버전입니까? – oluies

+0

죄송합니다. bpelx : exec. –

답변

1

만 BPELFault가 발생 할 수 있습니다

http://forums.oracle.com/forums/thread.jspa?threadID=547192

그러나 중첩을 포함 할 수있다 부분은 Catch 블록에서 추출 할 수있는 "실제"예외입니다 k 그리고 필요하다면 다시 던져 라.

오늘 구현했습니다.

둘점 :

  • catch 블록 시스템 예외 중 하나, 예를 들어 캐치 할 필요 remoteFault.
  • RuntimeFault.wsdl 수입되어야한다, 그렇지 않으면 불쾌한 오류가 BPELFault가

BPELFault 오히려 그것은 단지 가질 수에 제한을 발생합니다 찾을 수 없다는 말, 파트너 WSDL을 중 하나 WSDL (수입) 코드, 메시지 및 세부 요소, 모두 일반 텍스트 복잡한 중첩 된 폴트 타입을 BPEL에 전달하는 것은 bpelFault.setPart ("myname", obj)를 통해 가능하지만 BPEL에서 "동적"부분을 보지 못하기 때문에 BPELFault에서 추출하는 방법을 모르겠습니다. 그래도 코드와 메시지만으로도 충분합니다.

+1

폴트 정책을 살펴 보아도 bpelx : exec와 함께 toghether를 사용할 수 있는지 잘 모르겠습니다. humanIntervention에 사용하는 것이 좋습니다. 여기 내가 그 일을 한 오래된 블로그가있다. http://halfdecentoracle.blogspot.com/2007/08/soa-suite-10133-remote-fault-policies.html – oluies

1

WSIF 바인딩 인 경우 "예외 처리"제목 아래에 here 명령어가 있지만 그 기사는 꽤 오래된 것입니다.

bpelx를 들어

: 간부 (내가 생각하는) 당신이 ( 캐치 {일

을 ...
} 등

시도로 변수를 블록 내에서 예외를 catch하고 업데이트해야 예외 예) {

addAuditTrailEntry ("예외 메시지 :"+ ex.getMessage());

setVariableData ("V_CreateServiceException"...

}

}

+0

고마워.하지만 WSIF는 단순한 콜 아웃 (callout)에 과도한 것처럼 보인다. 다른 해결책이 없다면 그 길로 갈 수 있습니다. –

관련 문제