我正在通过 bpelx:exec 从 BPEL 调用一个 java 类。如果该类能够抛出特定的故障(BPEL 从其合作伙伴链接之一知道),这将大大简化事情。我们称它为 AdapterFault。AdapterFault 由 wsimport 和子类 Exception 生成。
这是 Embedded Java 块中的代码:
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);
当我将 java 方法声明为抛出 AdapterFault 时,BPEL 拒绝部署并抱怨 Exception 未捕获。Java 标注步骤似乎只声明了 BPELFault。
我只能抛出 RuntimeException,它会转到 CatchAll 块而不是 catch(AdapterFault)。
有没有一种简单的方法可以从 java 调用中抛出已检查的故障?