【发布时间】:2011-08-27 23:43:03
【问题描述】:
我在基于 JBoss 的 Web 应用程序中使用 JAXBContext.newInstance 操作。据我了解,这个操作非常重量级。我只需要 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(...);
...
}
}
如果这是一个合理的解决方案,那么我想我会回答我自己的问题,但我想知道这是否是正确的方法?
【问题讨论】: