Я использую операцию JAXBContext.newInstance в своем веб-приложении на основе JBoss. Эта операция, как я понимаю, очень тяжелая. Мне нужны только два уникальных экземпляра класса Marshaller.
Мое первоначальное предложение состоит в том, чтобы иметь статический блок инициализатора, который будет инициализировать эти два экземпляра только один раз при загрузке класса:
public class MyWebApp {
private static Marshaller requestMarshaller;
private static Marshaller responseMarshaller;
static {
try {
// one time instance creation
requestMarshaller = JAXBContext.newInstance(Request.class).createMarshaller();
responseMarshaller = JAXBContext.newInstance(Response.class).createMarshaller();
} catch (JAXBException e) {
e.printStackTrace();
}
}
private void doSomething() {
requestMarshaller.marshall(...);
responseMarshaller.marshall(...);
...
}
}
Если это разумное решение, я думаю, что я отвечу на свой вопрос, но я хотел бы знать, правильно ли это сделать?