2014-10-01 3 views
2

У меня есть веб-приложение, где у меня есть классы, созданные из схемы xsd. Я создаю один экземпляр Marshaller и один экземпляр Unmarshaller как статические конечные поля при запуске приложения.JAXB один экземпляр Marshaller и экземпляр Unmarshaller для приложения

Я хочу знать, является ли это хорошей практикой, или лучше создавать независимые экземпляры за один раз?

ответ

4

Кэширование Marschaller и Unmarshaller - это не очень хорошая идея. Вместо этого используйте кэш JAXBContext.

JAXBContext может использоваться повторно для создания маршаллеров и немаршальщиков.

Marshaller и Unmarshaller экземпляры НЕ (обязательно) поточно-безопасные или многоразовые.

Я буду искать ссылки и обновить ответ.

Вот reference:

Класс JAXBContext является поточно, но в ИАС, Unmarshaller и валидатор классы не являются поточно.

Связанные ответ:

JAXB creating context and marshallers cost

+1

ИАС и Unmarshaller многоразовые – Rustam

+0

@Rustam Цитирование необходимо. – lexicore

+0

С вашей первой ссылки: «Различные потоки могут повторно использовать один экземпляр Unmarshaller, если вы не используете один экземпляр из двух потоков одновременно». – Rustam