DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
ServiceMix Validation
The ServiceMix Validation component provides schema validation of documents using JAXP 1.3 and XMLSchema or RelaxNG.
Maven Archetype
You can use Maven servicemix-validation-service-unit archetype to create a Validation service unit:
Once you've customized the service unit, simply install the SU:
Remember that to be deployable in ServiceMix, the ServiceUnit has to be embedded in a Service Assembly: only the Service Assembly zip file can be deployed in ServiceMix.
To add your SU in a SA, you need to define it in the dependency sets:
Endpoint Configuration
A Validation endpoint expects messages coming from the NMR and validate message payload using given schema.
The endpoint can handle all MEPs.
Name |
Type |
Description |
Default |
|---|---|---|---|
schema |
Class |
javax.xml.validation.Schema |
null |
schemaLanguage |
String |
the schema language |
http://www.w3.org/2001/XMLSchema |
schemaSource |
Class |
javax.xml.transform.Source |
null |
schemaResource |
String |
path to schema resource |
null |
handlingErrorMethod |
String |
the error handling mode |
FAULT_JBI |
errorHandlerFactory |
Class |
org.apache.servicemix.validation.handler.MessageAwareErrorHandlerFactory |
CountingErrorHandlerFactory |
The schemaResource
The schema resource can be defined in different ways:
The errorHandlerFactory
You can specify your own error handling factory which will be used to create an error handler for the validation.
All factories have to implement the interface org.apache.servicemix.validation.handler.MessageAwareErrorHandlerFactory. This interface
describes only one method:
This method createMessageAwareErrorHandler() creates the error handler for validating the xml.
The MessageAwareErrorHandler is also a interface defining the methods needed for call back while validating a xml:
You can the configure your endpoint to use your factory and handler instead the standard ones.
Example:
Available factories / handlers
CountingErrorHandlerFactory / CountingErrorHandler
This one is just counting warnings, errors and fatal errors. Depending on the set handlingErrorMethod it will throw an exception or deliver a fault string containing a xml like this:
As you can see this factory / handler is just counting problems in the xml and delivers the result back.
MessageAggregatingErrorHandlerFactory / MessageAggregatingErrorHandler
This one captures messages from the validator and delivers them to the caller like this:
handlingErrorMethod
There are 2 modes existing:
- FAULT_JBI - this is the default. A jbi exception is thrown on validation errors (depending on used MEP)
- FAULT_FLOW - the validation result will be sent in out / fault message (depending on used MEP)