Comment puis-je améliorer les performances de l'application qui utilise la JAXBContext.newInstance opération?

- Je utiliser le JAXBContext.newInstance opération dans mon JBoss application web. Cette opération, ce que je comprends, est très lourd. Je n'ai besoin que de deux instances uniques de la Marshaller classe.

Ma proposition initiale est d'avoir un initialiseur statique bloc qui va initialiser ces deux cas qu'une seule fois lors du chargement de classe:

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(...);
            ...
    }

}

Si c'est une solution raisonnable alors je crois que je vais avoir répondu à ma propre question, mais je voudrais savoir si c'est la bonne façon de le faire?

OriginalL'auteur ryan | 2011-05-18