The underlying cause of the error is some holder code in
JavaImplementationInvoker.invoke()...
// Holder pattern. Any payload parameters <T> which are
should be in holders are placed in Holder<T>.
// Only check Holder for remotable interfaces
if (imethod != null && op.getInterface().isRemotable()) {
List<DataType> inputTypes = op.getInputType().getLogical();
for (int i = 0, size = inputTypes.size(); i < size; i++) {
if (ParameterMode.IN != op.getParameterModes().get(i)) {
// Promote array params from [<T>] to [Holder<T>]
Object[] payloadArray = (Object[])payload;
for (int j = 0; payloadArray != null && j <
payloadArray.length; j++) {
Object item = payloadArray[j];
payloadArray[j] = new Holder(item);
}
argumentHolderCount++;
}
}
}
I don't think this code is actually wrong though. In the case of the
WSDL interfaces generated during the BPEL processing, and passed to a
local Java component with the message operation, the array of
parameter modes in the operation is empty. I assume WSDL operations
should accurately describe their parameter modes.
The secondary problem is that having found this error the BPEL
processing locks up.
Simon