XML Validation in ESB
I have several issues while attempting to validate xml through an ESB process. (SOA Suite 10.1.3.1, JDeveloper 10.1.3.3 and 10.1.3.1)
The first of which is that Oracle's schema validator does not conform to standards and does not accept the xsi:nil="true" attribute on nillable elements.*
I am trying to track down the second issue which I originally thought was related to the first. When I took the xsi:nil="true" out of my instance document and replaced it with a valid value in the element, the RS still fails and complains about an invalid payload. Pulling the payload out of the error details from the ESB console, the document successfully validates in StylusStudio as well as JDeveloper. The WSDL has the correct file name for the schema location, but no path information. The schema is included in the project and in the project's zip file as seen in JDeveloper... is there another step to register the schema in the ESB system/Application Server?
Here are the error details:
Invalid payload for event "My_RS.ConsumeJMSQueue"
oracle.tip.esb.server.common.exceptions.BusinessEventRejectionException: Invalid payload for event "My_RS.ConsumeJMSQueue" at oracle.tip.esb.server.dispatch.InitialEventDispatcher.validatePayload(Unknown Source) at oracle.tip.esb.server.dispatch.InitialEventDispatcher.dispatch(Unknown Source) at oracle.tip.esb.server.dispatch.BusinessEvent.raise(Unknown Source) at oracle.tip.esb.utils.EventUtils.raiseBusinessEvent(Unknown Source) at oracle.tip.esb.server.service.impl.inadapter.ESBListenerImpl.processMessage(Unknown Source) at oracle.tip.esb.server.service.impl.inadapter.ESBListenerImpl.onMessage(Unknown Source) at oracle.tip.adapter.fw.jca.messageinflow.MessageEndpointImpl.onMessage(MessageEndpointImpl.java:281) at oracle.tip.adapter.jms.inbound.JmsConsumer.doSend(JmsConsumer.java:559) at oracle.tip.adapter.jms.inbound.JmsConsumer.sendInboundMessage(JmsConsumer.java:495) at oracle.tip.adapter.jms.inbound.JmsConsumer.send(JmsConsumer.java:347) at oracle.tip.adapter.jms.inbound.JmsConsumer.run(JmsConsumer.java:268) at oracle.j2ee.connector.work.WorkWrapper.runTargetWork(WorkWrapper.java:242) at oracle.j2ee.connector.work.WorkWrapper.doWork(WorkWrapper.java:215) at oracle.j2ee.connector.work.WorkWrapper.run(WorkWrapper.java:190) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:819) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.Exception: Error resolving the schema element for {http://www.namespaceLocation.com/Schemas}rootElement at oracle.tip.esb.server.dispatch.PayloadValidator.validatePayload(Unknown Source) at oracle.tip.esb.server.dispatch.PayloadValidator.validateRequestPayload(Unknown Source) ... 16 more
Note that the schema is not my own (it, and the xml document being validated, come from a vendor's system), and I am not considering changing it as this seems like a bad practice to do so. Also, the url in the namespace is not a valid web address, though this should not affect validation (like I said, the payload validates in every other tool I have).
Thank you.
* This appears to be a problem that has been around for a long time in many Oracle products. I have seen numerous posts here and several bugs on metalink that date back 2 years that involve the xsi:nil attribute. It appears that there have only been 2 years worth of work-arounds and no progress in implementing true xml compliance.