2015-08-06 3 views
1

Как включить проверку при разборке? [moxy 2.6.0]Проверка с помощью DynamicJAXBContext

Первое, что интересно, это то, что мне нужно поставить схему, которая должна быть уже в DynamicContext. Но даже с установкой схемы для немедленного восстановления это дает мне ошибку.

Я пытался использовать этот один:

final JAXBUnmarshaller unmarshaller = dynamicJAXBContext.createUnmarshaller(); 
     //unmarshaller.setSchema(); 
     final Schema schema = schemas.get(type); 
     unmarshaller.setSchema(schema); 
     unmarshaller.setValidating(true); 

И это дает исключение. Похоже, часть, которая сломала это некоторые элементы, которые ставятся там от DynamicContext

Exception Description: An error occurred resolving the XML Schema. 
Internal Exception: java.lang.NullPointerException 
Exception [EclipseLink-25012] (Eclipse Persistence Services - 2.6.0.v20150309-bf26070): org.eclipse.persistence.exceptions.XMLMarshalException 
Exception Description: An error occurred resolving the XML Schema. 
Internal Exception: java.lang.NullPointerException 
    at org.eclipse.persistence.exceptions.XMLMarshalException.errorResolvingXMLSchema(XMLMarshalException.java:186) 
    at org.eclipse.persistence.oxm.schema.XMLSchemaClassPathReference.getURL(XMLSchemaClassPathReference.java:48) 
    at org.eclipse.persistence.oxm.XMLUnmarshaller.initializeSchemas(XMLUnmarshaller.java:211) 
    at org.eclipse.persistence.oxm.XMLUnmarshaller.setValidationMode(XMLUnmarshaller.java:155) 
    at org.eclipse.persistence.jaxb.JAXBUnmarshaller.setValidating(JAXBUnmarshaller.java:756) 

ответ

3

Проблема здесь заключается в том, что схема не была найдена. Вы устанавливаете null вместо экземпляра Schema.

КПП. метод

javax.xml.bind.Unmarshaller#setValidating 

устарел с момента JAXB 2.0. Использование метода

javax.xml.bind.Unmarshaller#setSchema 

будет выполнять эту работу.

+0

Используя только setSchema, выполните эту работу. Благодаря! BTW Я уже установил схему, но выглядит как setValidatig() делает некоторые странные вещи и бросает исключение. BTW2: Я ожидал этого, пока я использовал динамический контекст, схема должна быть там по дизайну. – smolarek999

+0

Нет, проверка по умолчанию отключена, не зависит, если у вас есть статические классы или динамический JAXBContext. Если вам нужно проверить, вы должны установитьSchema() – miran

Смежные вопросы