- Include Binary Data by Reference
- Include Binary Data by Value
I used the first because I want to process the content in another service on another WLS-Domain. However, in my first service catching the initial request I want to do an XSD validation. And although the rest of the message is valid, the Validate activity raises an exception with the message: 'Element not allowed: binary-content@http://www.bea.com/wli/sb/context in element Bestandsdata....'.
Looking into this problem I came up with this section in the doc, which states that you use 'Include Binary Data by Value' when you want to:
- transfer your data to a service that does not support MTOM
- validate your message
Now, although I want exactly that in the end, I don't want that at this point of the service. I want to transform my message, without the Base64-strings. And I want to encode the data only on my other domain.
So I just want to ignore messages that start with the 'Element not allowed: binary-content@...' messages. To do so I came up with the next expression:
fn:count($fault/ctx:details/con:ValidationFailureDetail/con:message[not(fn:starts-with(text(),'Element not allowed: binary-content@http://www.bea.com/wli/sb/context in element Bestandsdata'))])>0Add an If-Then-Else activity to your Error Handler Stage with this expression. Add the following Namespace:
- Prefix: con
- Namespace: http://www.bea.com/wli/sb/stages/transform/config
If the expression evaluates to true, then you have in fact an invalid XML-message. In the else branch you can add a Resume to ignore the exception.
This expression might come in handy in other situations as well.
No comments:
Post a Comment