Tomcat, JAXB, маршаллинг в приложении JSP: добавление схемы вызывает исключение - PullRequest
1 голос
/ 14 марта 2011

Для более крупного проекта, использующего XML в качестве формата экспорта / импорта, я получил файл схемы XSD.Я использовал JAXB для генерации классов, добавил подпрограммы для заполнения данных в сгенерированные классы.Теперь я собираю весь файл в файл XML на диске:

Spmigration mig = new Spmigration(); //Main migration object
mig.setBestellungen(new OrdersImpl().getOrders(shop));
JAXBContext jc = JAXBContext.newInstance( "my.migration.context" );
Marshaller m = jc.createMarshaller();
m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.marshal( mig, new File("test.xml") );

Это работает как шарм.Выходной файл правильно сформирован и, при правильной схеме, даже действителен.Сейчас я пытаюсь экспортировать файл, но добавляю схему напрямую.Я добавил несколько строк:

Spmigration mig = new Spmigration(); //Main migration object
mig.setBestellungen(new OrdersImpl().getOrders(shop));
JAXBContext jc = JAXBContext.newInstance( "my.migration.context" );
Marshaller m = jc.createMarshaller();
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));
m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.setSchema(schema);
m.marshal( mig, new File("test.xml") );

Файл схемы существует и доступен для чтения (я знаю, потому что я получил другую ошибку, когда забыл указать файл при первой попытке).Теперь строка

Schema schema = schemaFactory.newSchema(new File("myschema.xsd"));

сгенерировала следующее исключение:

java.lang.VerifyError: (класс: org / apache / xerces / impl / xs / XSAnnotationImpl, метод:подпись writeToDOM: (Lorg / w3c / dom / Node; S) V) Несовместимый аргумент объекта для вызова функции org.apache.jasper.runtime.PageContextImpl.doHandlePageException (PageContextImpl.java:862)

изКонечно, это не весь след стека.Но, похоже, это проблема.Я не читаю ничего существенного из очень небольшого числа проблем, о которых сеть знает с этим конкретным сообщением об ошибке.

Есть ли что-то, что я мог проверить, что-то я делаю неправильно?

1 Ответ

0 голосов
/ 12 октября 2011

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

...